МЕТОДЫ АДРЕСАЦИИ
После описания каждого метода адресации приведено по два примера его использования.
Безоперандные команды. Для их выполнения процессору не требуется дополнительных значений:
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
_____________________________________________________________________________
Помимо 78 команд своего предшественника
-------------------------------------------------------
СИСТЕМА КОМАНД
Помимо 78 команд своего предшественника – микропроцессора I8080, в Z80 реализовано 80 новых. В целом он обрабатывает 696 кодов операций (с учетом использования в командах различных регистров, способов адресации и т.п.)
Для каждой команды приведено мнемоническое обозначение на языке ассемблера, схема, поясняющая ее работу, и состояние флагового регистра после выполнения команды.
При записи команд приняты следущие обозначения:
A – 8-разрядный регистр аккумулятора;
B, C, D, E, H, L – 8-разрядные регистры данных;
I – 8-разрядный регистр вектора прерываний:
R – 8-разрядный регистр регенерации динамического ОЗУ;
AF – 16-разрядный регистр, старший байт которого содержит значение аккумулятора, а младший байт – значение флагового регистра;
BC, DE, HL – 16-разрядные спаренные регистры;
IX, IY – 16-разрядные индексные регистры;
SP – 16-разрядный регистр указателя стека;
PC – 16-разрядный регистр счетчика команд;
n – 8-разрядный операнд, непосредственно указанный в команде;
nn – 16-разрядный операнд, непосредственно указанный в команде;
(HL), (BC), (DE) – 8-разрядные значения ячеек памяти, адреса которых содержатся в соответствующих регистровых парах;
(nn) – в командах, оперирующих байтами:
8-разрядное значение ячейки памяти, адрес которой задается двумя байтами nn непосредственно в команде;
(nn) – в командах, оперирующих 16-разрядными значениями:
16-разрядное значение смежных ячеек памяти, адрес nn первой из которых (младшего байта значения) указан непосредственно в команде, адрес второй ячейки (старшего байта значения) равен nn+1;
(IX+d), (IY+d) – 8-разрядные значения ячеек памяти, адреса nn которых вычисляются сложением значения соответствующего индексного регистра и 8-разрядного смещения d, указанного непосредственно в команде;
b – номер участвующего в операции бита (0…7)
cc – условие, при истинности которого выполняется команда;
e – 8-разрядное смещение относительно текущего адреса;
CY – значение флага переноса;
¦ - состояние флага изменяется в результате операции;
• - состояние флага не изменяется в результате операции;
0 – флаг сбрасывается в результате операции;
1 – флаг устанавливается в результате операции;
х – состояние флага не определено;
V – флаг P/V индицирует арифметическое переполнение в результате операции;
P – флаг P/V индицирует «четность» в результате операции;
Операнд, из которого берется значение для выполнения операции, называется источником, а операнд, в который помещается результат – приемником. В мнемониках команд, использующих два операнда, первым, как правило, записывается приемник, затем, через запятую, - источник. В процессе выполнения команды содержимое источника не изменяется. Если команда содержит один операнд, то он одновременно может быть и источником, и приемником.
_____________________________________________________________________________