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