Хех... вот только концовки у них перепутаны.
а иначе, например, DHL после 7й строчки перепрыгнет на 72ю.Код:DHL
...
ret c
ld a,h
sub 8
ld h,a
ret
UHL
...
ret c
ld a,h
add a,8
ld h,a
ret
Вид для печати
Хех... вот только концовки у них перепутаны.
а иначе, например, DHL после 7й строчки перепрыгнет на 72ю.Код:DHL
...
ret c
ld a,h
sub 8
ld h,a
ret
UHL
...
ret c
ld a,h
add a,8
ld h,a
ret
Так будет быстрей:
...
A,H
DEC H
AND 7
CALL Z,UH
...
UH A,L
ADD A,#E0
L,A
SBC A,A
AND 8
ADD A,H
H,A
RET
Или так (если нельзя делать Call):
A,H
DEC H
AND 7
JR NZ,$+11
A,L
ADD A,#E0
L,A
SBC A,A
AND 8
ADD A,H
H,A
RET
Довн ХЛ оч распространенная процедура, в каждом кодерском журнале есть (спековском) почти, а вот UP HL я не встречал, а иногда нужно...
когда я писал скроллеры, которые меняют позицию по горизонтали - обычно использовал таблицу адресов экранных линий - опять же смотря по различным демам - так все и делают
DownHL - распространенная процедура конечно, но если она вызывается порядочное число раз на кадр - от нее надо отказываться... UpHL - хотя практически одно и то же - но на практике встречается довольно редко потому, что на практике обычно бывает изменить алгоритм и перейти к старой знакомой процедуре =)
ничего личного...
таблица адресов рулит ! 8)
Ковыряюсь вот помаленьку. Нубский вопрос, как в alasm перейти из режима редактирования в режим комманд?
Вот у меня теоретический вопрос. Применяются ли реально команды OTDR OTIR и подобные, или это сделано по соображениям совместимости или "зеркальности" по отношению к внутренней памяти? простите если туплю..
INIR применяется в драйвере винта в процедуре чтения. OTIR там не применяется только из-за особенностей устройства контроллера (там используются пары OUTI, OUTD). А так, эти команды вполне можно использовать при работе с высокоскоростными внешними устройствами передачи данных...
Друзья спектрумисты, кто мне подскажет, как объявлять матрицу в ассемблере? Желательно с примерами. Ну и как работать с ними. Спасибо