Нужна скоростная операция:
В HL содержится число (0..447) кратное 3.
Требуется быстро разделить HL на 3 и результат умножить на 4.
HL=(HL/3)*4
Нужна скоростная операция:
В HL содержится число (0..447) кратное 3.
Требуется быстро разделить HL на 3 и результат умножить на 4.
HL=(HL/3)*4
Последний раз редактировалось drbars; 17.08.2013 в 00:47.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
hl=hl*155h
так?
С уважением,
Jerri / Red Triangle.
ага
12f*155=193 9b
447/3*4=254h
447*155h=253 6b
С уважением,
Jerri / Red Triangle.
Ситуация какая... буфер для восстановление байта на экране занимает 3 байта буфера на байт экрана (word:adr, byte:data)
А процедура восстановления жрёт 4 байта на восстановление байта экрана... Нужно расчитать точку входа в процедуру по размеру буфера...
В HL у нас размер буфера.
округлять наверное
считает то правильно
С уважением,
Jerri / Red Triangle.
Подумаю ещё, может чего оптимизирую.
Пример на асме есть? мне циклы нельзя городить в процедуре
Последний раз редактировалось drbars; 16.08.2013 в 23:41.
а может будет достаточно ld l,h:ld h,a:inc hl
С уважением,
Jerri / Red Triangle.
Не совсем понял, всё таки...
---------- Post added at 03:24 ---------- Previous post was at 02:45 ----------
Может задачу иначе поставить?
Вот процедура восстановления циклом:
Поскольку буфер заполняется командой PUSH, то конец буфера фикированный, а начало в HL.
C = конец буфера.
Тормозно, но работает. 4 байта не могу в буфере хранить, нет места.
Стеком выгодно делать, если цикл развернуть... Иначе видимо нет.Код:LD SP,HL ; HL = начало текущего буфера RES_LN POP DE DEC SP POP AF LD (DE),A LD HL,#0000 ADD HL,SP LD A,H CP C JP NZ,RES_LN
А чтобы развернуть, нужно расчитать точку входа
Код:RES_LN LD E,(HL) INC HL LD D,(HL) INC HL LD A,(HL) INC HL LD (DE),A LD A,H CP C JP NZ,RES_LN
Последний раз редактировалось drbars; 17.08.2013 в 00:33.
может, посмотреть в сторону последовательности pop de:ldi
байты фона отдельно, адреса отдельно
?
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)