10. СИСТЕМА КОМАНД ПРОЦЕССОРА Z80
Сводная таблица команд Z-80
Код операции Функция
ADC А Сложение и запись в аккумулятор
ADC HL,rp Сложение содержимого двух регистров и запись
результата в пару регистров HL
ADD СложениеAND Логическое И
BIT Проверка бита
CALL addr Вызов подпрограммы
CALL cond,addr Вызов подпрограммы по условию
CCF Инверсия флажка переноса дополненияCP Сравнение
CPD Сравнение с автоуменьшением адреса
CPDR Сравнение с автоуменьшением и повторением
CPI Сравнение с автоувеличением адреса
CPIR Сравнение с автоувеличением, повторение
CPL Запись содержимого дополнения в аккумулятор
DAA Запись в аккумулятор
DEC Уменьшение счетчика адреса
DI Запрещение прерываний
DJNZ Если не нуль, уменьшение счетчика адреса и
перескок через 1 команду
EI Разрешение прерыванийЕХ Выполнение обмена
ЕХХ Обмен содержимого пары регистров и объявление
этой пары альтернативной
HALT ОстановIM Установка режима работы с прерываниями
IN Ввод
INC Увеличение счетчика адреса
IND Ввод с автоуменьшением адреса
INDR Ввод с автоуменьшением и повторением
INI Ввод с автоувеличением и повторением
JP addr Переход по указанному адресу
JP cond,addr Переход по условию
JR Переход по относительному адресуJR cond,addr Условный переход по относительному адресу
LD A,(addr) Загрузка непосредственная в аккумуляторLD А,(ВС) или Загрузка в аккумулятор косвенная
(DE)LD А,1 Загрузка в аккумулятор из регистра вектора
прерываний
LD A,R Загрузка в аккумулятор из регистра регене-
рации памяти
LD HL,(addr) Загрузка пары регистров непосредственная
LD data Загрузка непосредственнаяLD xy,(addr) Загрузка прямая индексного регистра
LD reg,(HL) Загрузка регистраLD reg,(xy+disp) Загрузка регистра с индексацией
LD rp,(addr) Загрузка пары регистров непосредственная
LD SP,HL Запись в указатель стека содержимогорегистров HL
LD SP.xy Запись содержимого индекс-регистра в указа-
тель стека
LD dst.scr Запись из регистра в регистр
LD (addr),А Запись в память содержимого аккумулятора не-
посредственная
LD (ВС) или Запись в память содержимого аккумулятора
(DE),A косвенная
LD 1,А Запись содержимого аккумулятора в регистр
вектора прерываний
LD R,A Запись содержимого аккумулятора в регистррегенерации памяти
LD (addr),HL Запись непосредственная в память содержимогопары HL
LD (HL),data Запись непосредственная в память
LD (xy+dis),dat Запись непосредственная в память с индек-
сациейLD (addr),xy Запись непосредственная в память содержимого
индекс-регистра
LD (HL),reg Запись в память содержимого регистраLD (xy+dis),reg Запись в память содержимого регистра с инде-
ксацией
LD (addr),rp Запись непосредственная в память содержимого
пары региетров
LDD Загрузка с автоуменьшением адресаLD0R Загрузка с автоуменьшенеим и повторением
LDI Загрузка с автоувеличением адреса
LDIR Загрузка с автоувеличением адреса и повтором
операций
NEG Формирование дополнительного кода для аккуму-
лятора
NOP Нет операции
OR Логическое ИЛИ
OUT Вывод
0UJD Вывод с автоуменьшением
0TDR Вывод с автоуменьшением и повторением
0UTI Вывод с автоувеличением
0TIR Вывод с автоувеличением и повторением
POP Выталкивание из стека
PUSH Заталкивание в стек
RES Сброс бита
RET Возврат из подпрограммы
RET cond Возврат по условию
RETI Возврат из обработки прерывания
SETN Возврат из немаскированного прерывания
RL Циклический сдвиг влево с переносом
RLA Циклический сдвиг влево содержимого аккуму-
лятора с переносом
RLC Циклический сдвиг влевоRLCA Циклический сдвиг влево содержимого аккуму-
лятора
RLD Циклический сдвиг влево содержимого аккуму-
лятора и памяти десятичный
RR Сдвиг вправо с переносомRRA Сдвиг содержимого аккумулятора вправо
с переносом
RRC Сдв'иг вправо циклическийRRCA Сдвиг вправо циклический содержимого
аккумулятора
RRD Сдвиг вправо десятичный содержимого аккуму-
лятора и памяти
RST РестартSET Установка бита
SBC Вычитание с переносом (с заимствованием из
старших разрядов)
SCF Установка флажка переносаSLA Сдвиг влево арифметический
SRA Сдвиг вправо арифметический
SRL Сдвиг вправо логический
SUB Вычитание
X0R Логическое исключающее ИЛИ
10.1 МЕТОДЫ АДРЕСАЦИИ
Безоперандные команды. Для их выполнения процессору не требуется дополнительных значений:
HALT
NOP
Регистровая адресация. Операнд содержится в регистре, который непосредственно указан в команде:
INC А
ADD HL,BCНепосредственная адресация. Операнд расположен в ячейке памяти, непосредственно следующей за кодом коман-
ды. Если операнд двухбайтовый, то он занимает две ячейки за кодом команды (расширенная непосредственная адре-
сация) :LD С,%1011
LD HL,*1234Неявная адресация. Регистр, в котором содержится операнд, однозначно определен данной командой:
RLA
LDIR
Регистровая косвенная адресация. Операнд расположен в ячейке памяти, адрес которой содержится в регистро-
вой паре:DEC (HL)
LD А, (ВС)Индексная адресация. Адрес размещения в памяти операнда образуется сложением значения индексного регистра
и некоторого смещения (-128...+127), явно указанного в команде:
SLA (IX-2)
LD А, (IY-25)Косвенная адресация. Адрес операнда содержится в ячейках памяти, расположенных непосредственно за кодом
команды:LD А, (1234)
LD (*C000),DEПобитовая адресация. Командой задается конкретный бит операнда, над которым будет проводиться операция:
SET 4f(HL)
BIT 7,АОтносительная адресация. Адрес задается как однобайтовое смещение (-128...+127) относительно текущего
значения регистра счетчика команд (определяется символом счетчика адресов "$"):
JR $+#23
DJNZ $- 6Расширенная адресация. Адрес задается двухбайтовым операндом:
CALL 1234
JP NC,*1601Различные методы адресации могут быть совмещены в командах, работающих с двумя операндами:
LD (HL), 12
