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

Материал из SpeccyWiki
Страница-перенаправление
Перейти к: навигация, поиск
 
(не показана одна промежуточная версия этого же участника)
Строка 1: Строка 1:
'''DOWN HL''', '''UP HL''' — широко используемые при программировании графики процедуры для перехода к следующей и предыдущей пиксельной строке экрана с учётом [[256x192|нелинейной раскладки видеопамяти]], то есть с переходом между строками знакомест и третями экрана.
+
#REDIRECT [[Расчет адреса следующей строки экрана]]
 
+
Из названия процедуры следует, что адрес находится в регистровой паре HL. Также используются варианты этой процедуры для других регистровых пар. Существует несколько версий процедуры, отличающихся размером и быстродействием, а также оформлением в виде подпрограммы или макроса. Время выполнения процедуры зависит от адреса текущей пиксельной строки.
+
В случае реализации функционала в виде отдельной процедуры, условные переходы необходимо заменить на условный возврат (JR Z,EXIT -> RET Z).
+
 
+
<code><pre>
+
;В этом варианте процедуры также используется флаг переноса.
+
;Он установлен, если был переход к следующей строке знакомест.
+
 
+
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:
+
</pre></code>
+
 
+
[[Категория:Программирование графики]]
+

Текущая версия на 08:46, 1 августа 2012