|
|
(не показаны 2 промежуточные версии этого же участника) |
Строка 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>
| + | |
− | | + | |
− | [[Категория:Программирование]] [[Категория:Программирование графики]]
| + | |