С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Он же написал байты. ))
Тут больше вопрос просто байты или и регистры нужны им соответствующие ?
По делению видел процедуры https://zxpress.ru/article.php?id=11...u4v3h388674283 , не знаю правда насколько верные.
А здесь по сути надо C=A*8/B , а с учётом условия: ' A в диапазоне от 1 до (B - 1) ' - результат будет не больше 7
Дальше мозги не соображают ))
Вот, есть такая:
35 байт 97 тактов.Код:ld c,7 sla a ; rlca jr c,skip1 cp b jr nc,skip1 res 2,c jr skip2 skip1: sub b skip2: sla a ; rlca jr c,skip3 cp b jr nc,skip3 res 1,c jr skip4 skip3: sub b skip4: sla a ; rlca jr c,skip5 cp b jr nc,skip5 res 0,c skip5:
Можно уменьшить, за счёт точности, заменив "sla a" на "rlca".
Можно уменьшить за счёт замедления, свернув повторение в цикл.
Возможно можно оптимизировать.
AndTorp (01.02.2024)
97 тактов это не точно. Можно сказать, примерно 100 тактов.
C = (A / B) * 8 , где A, B, C - регистры Z80
Не прошло и 4 года, как на спектумкомпьютинг подняли схожую тему: https://spectrumcomputing.co.uk/foru...ic.php?t=11240
Очень интересует подобный генератор, но знаний в тервере и комбинаторике не хватает, чтобы что-нибудь тут понять.
Что нужно: генератор, позволяющий настраивать период в заданных пределах, например, имеется массив
db 1
db 2
db 3
db 4
db 5
Хочу запустить генератор с периодом 5, который позволил бы мне из этого массива выбрать за 5 итераций все значения в случайном порядке - "3, 1, 4, 5, 2".
Или - с периодом 10000 для другого массива, из 10000 элементов.
Позволяет ли так сделать эта LCG-функция, которая рассматривается в посте?
программирование сильно возрастает!
https://zx-pk.ru/threads/474-deb-ass...ull=1#post7841
Оно-то будет. А что будет? Любой RND может выдать последовательность "3", "3", "3", "1", "4"? Думаю, может. А зачем мне "3", "3", "3"?
программирование сильно возрастает!
https://zx-pk.ru/threads/474-deb-ass...ull=1#post7841
Можно, конечно. Особенно удобно, когда хочешь побитово, "по точкам" зажечь или погасить изображение на экране. Всего делов-то - сделать табличку в 49152 байта.
По ссылке как раз вроде бы, как я понял, описывается генератор неповторяющихся последовательностей с настраиваемым периодом. Даже не генератор последовательностей, а, скорее, shuffle-процедура.
https://spectrumcomputing.co.uk/foru...0ce7aa#p140188
https://worldofspectrum.org/forums/d...omment_1013871
Последний раз редактировалось 0xDEAD; 08.04.2024 в 15:50.
программирование сильно возрастает!
https://zx-pk.ru/threads/474-deb-ass...ull=1#post7841
Ну возми 16-битный RND (в том-же ZX-Ревю) и вперёд!
Вызываешь, получаешь двухбайтное "случайное" значение, один байт это X второй Y, смотришь что там у тебя в картинке - если бит включен - соотв. включаешь его на экране. Повторить 65536 раз и в результате переберутся все возможные координаты и картинка проявится. Конечно если Y>192 то просто пропускается эта точка. Все нормальные генераторы пробегаются по всем коордам достаточно рандомно и попадают туда где уже были только спустя 65536 итераций (ну если 16-ти битный).
Я на таком делал:
Код:; zx-review 3-4 1997 ; http://zxpress.ru/article.php?id=1010 RND_32 LD HL,(SEED) CALL RND RND LD A,H:ADD HL,HL:XOR H ADD HL,HL,HL,HL,HL,HL:XOR H ADD HL,HL,HL,HL:XOR H:ADD HL,HL,HL,HL LD L,A:LD (SEED),HL RET SEED DEFW #FFFF ; НЕ НОЛЬ!
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)