МЕТОДЫ АДРЕСАЦИИ
После описания каждого метода адресации приведено по два примера его использования.
Безоперандные команды. Для их выполнения процессору не требуется дополнительных значений:
HALT
NOP
Регистровая адресация. Операнд расположен в ячейке памяти, непосредственно следующей за кодом команды:
INC A
ADD HL, BC
Непосредственная адресация. Операнд расположен в ячейке памяти, непосредственно следующей за кодом команды. Если операнд двухбайтовый, то он занимает две ячейки за кодом команды (расширенная непосредственная адресация):
LD C, %1011
LD HL, #1234
Неявная адресация. Регистр, в котором содержится операнд, однозначно определен данной командой:
RLA
LDIR
Регистровая косвенная адресация. Операнд расположен в ячейке памяти, адрес которой содержится в регистровой паре:
DEC (HL)
LD A, (BC)
Далее по тексту для обозначения этого типа адресации будет использоваться фраза: «операнд расположен в ячейке, адресуемой регистром».
Индексная адресация. Адрес размещения операнда в памяти образуется сложением значения индексного регистра и некоторого смещения (-128…+127), явно указанного в команде:
SLA (IX+2)
LD A, (IY-25)
Косвенная адресация. Адрес операнда содержится в ячейках памяти, расположенных непосредственно за кодом команды:
LD A, (1234)
LD (#C000), DE
Побитовая адресация. Командой задается конкретный бит операнда, над которым будет проводиться операция:
SET 4, (HL)
BIT 7, A
Относительная адресация. Адрес задается как однобайтовое смещение (-128…+127) относительно текущего значения регистра счетчика команд*:
JR $+#23
DJNZ $-6
Расширенная адресация. Адрес задается двухбайтовым операндом:
CALL 1234
JP NC, #1601
Различные методы адресации могут быть совмещены в командах, работающих с двумя операндами:
LD (HL), 12
_____________________________________________________________________________