DOWN HL — различия между версиями

Материал из SpeccyWiki
Перейти к: навигация, поиск
Строка 2: Строка 2:
  
 
Из названия процедуры следует, что адрес находится в регистровой паре HL. Также используются варианты этой процедуры для других регистровых пар. Существует несколько версий процедуры, отличающихся размером и быстродействием, а также оформлением в виде подпрограммы или макроса. Время выполнения процедуры зависит от адреса текущей пиксельной строки.
 
Из названия процедуры следует, что адрес находится в регистровой паре HL. Также используются варианты этой процедуры для других регистровых пар. Существует несколько версий процедуры, отличающихся размером и быстродействием, а также оформлением в виде подпрограммы или макроса. Время выполнения процедуры зависит от адреса текущей пиксельной строки.
 +
В случае реализации функционала в виде отдельной процедуры, условные переходы необходимо заменить на условный возврат (JR Z,EXIT -> RET Z).
  
 
<code><pre>
 
<code><pre>
Строка 19: Строка 20:
 
     ADD A,-8
 
     ADD A,-8
 
     LD H,A    ;CY=1
 
     LD H,A    ;CY=1
 +
EXIT:
 +
 +
UP_HL:
 +
    LD A,H
 +
    DEC H
 +
    AND 7
 +
    JR NZ,EXIT
 +
    LD A,L
 +
    SUB 32
 +
    LD L,A
 +
    JR C,EXIT
 +
    LD A,H
 +
    ADD A,8
 +
    LD H,A
 +
EXIT:
 
</pre></code>
 
</pre></code>
  
 
[[Категория:Программирование]]
 
[[Категория:Программирование]]

Версия 05:51, 31 июля 2012

DOWN HL, UP HL — широко используемые при программировании графики процедуры для перехода к следующей и предыдущей пиксельной строке экрана с учётом нелинейной раскладки видеопамяти, то есть с переходом между строками знакомест и третями экрана.

Из названия процедуры следует, что адрес находится в регистровой паре HL. Также используются варианты этой процедуры для других регистровых пар. Существует несколько версий процедуры, отличающихся размером и быстродействием, а также оформлением в виде подпрограммы или макроса. Время выполнения процедуры зависит от адреса текущей пиксельной строки. В случае реализации функционала в виде отдельной процедуры, условные переходы необходимо заменить на условный возврат (JR Z,EXIT -> RET Z).

;В этом варианте процедуры также используется флаг переноса.
;Он установлен, если был переход к следующей строке знакомест.

DOWN_HL:
     INC H
     LD A,H
     AND 7
     JR NZ,EXIT ;CY=0
     LD A,L
     ADD A,32
     LD L,A
     JR C,EXIT  ;CY=1
     LD A,H
     ADD A,-8
     LD H,A     ;CY=1
EXIT:

UP_HL:
     LD A,H
     DEC H
     AND 7
     JR NZ,EXIT
     LD A,L
     SUB 32
     LD L,A
     JR C,EXIT
     LD A,H
     ADD A,8
     LD H,A
EXIT: