Регистровая адресация
Операнд находится в регистре или регистровой паре. Код команды явным образом (с помощью нескольких битов) указывает, какой регистр или пара регистров содержит операнд. Не следует путать регистровую адресацию с неявной, при которой операнд тоже может находиться в регистре, но не задаваемом явным образом несколькими разрядами кода команды.
8-разрядные регистры, участвующие в операции, кодируются комбинацией трёх битов:
– 000 – регистр B;
– 001 – регистр C;
– 010 – регистр D;
– 011 – регистр E;
– 100 – регистр H;
– 101 – регистр L;
– 110 – косвенная адресация по регистровой паре HL (см. ниже);
– 111 – регистр A.
16-разрядные регистры и регистровые пары кодируются комбинацией двух битов, при этом в зависимости от инструкции кодировка несколько изменяется:
– 00 – регистровая пара BC;
– 01 – регистровая пара DE;
– 10 – регистровая пара HL (все инструкции, кроме ADD IX и ADD IY), регистр IX (инструкция ADD IX) или регистр IY (инструкция ADD IY);
– 11 – регистровая пара AF (инструкции PUSH и POP) или регистр SP (инструкции LD, ADD, ADC, SBC, INC и DEC).
Регистровые операнды записываются в инструкциях явным образом. Однако явная запись имени регистра ещё не свидетельствует об использовании регистровой адресации, поскольку в некоторых случаях применяется неявная адресация (например, в инструкциях PUSH и POP, работающих с индексными регистрами). В описании форматов кодов команд для однобайтовых регистров применяются обозначения r, r1, r2, для двухбайтовых регистров и регистровых пар – обозначение rr.