1.3. Система команд микропроцессора Z80, используемого в игровых приставках SEGA Мнемоника | Операнды | Описание | Изменяемые флаги | LD r1,r2 | r1 - А, В, C, D, E, H, L r2-A,B,C,D, E, H,L,(HL), (|X+i8), (|Y+i8) | Загрузка байта из регистра r1 8 r2 |
| LD r1,d8 | r1 -A,B,C,D, E, H, L, (HL), (|X+i8), (|Y+iB) | Загрузка байта d8 в r1 |
| LD HL,s | s-A,B,C,D, E, H,L | Запись s в ячейку, адресуемую порой HL |
| LD A,s | s-(BC),(DE),(a16) | Загрузка байта из s в аккумулятор |
| LD d,A | d-(BC),(DE),(a16) | Запись байта из аккумулятора в d |
| LD A,I |
| Загрузка байта из регистра 1 в аккумулятор | Z, P/V, S, N, Н | LD A,R |
| Загрузка байта из регистра R в аккумулятор | Z, P/V, S, N, Н | LD I,A |
| Запись байта из аккумулятора в регистр I | Z, P/V, S, N, Н | LD R,A |
| Запись байта из аккумулятора в регистр R | Z, P/V, S, N, Н | LD r16,d16 | r16-BC,DE,HL,SP,IX,IY | Загрузить в регистровую пару r1 6 16-разрядное число d 16 |
| LD r16,(a16) | r16-BC,DE,HL,SP,IX,IY | Загрузка в регистровую пару r1 6 16-разрядного числа, расположенного в памяти по адресу a16 |
| LD (a16),r16 | r16-BC,DE, HL, SP, IX, IY | Запись 16-разряднога числа из регистровой пары r16 в память по адресу а 16 |
| LD SP,r16 | r16-HL,IX,IY | Копирование содержимого регистра r16 в указатель стека |
| PUSH r16 | r16-BC,DE,HL,AF,IX,IY | Сохранение регистра r16 в стеке. Указатель стека уменьшается на 2 |
| POP r16 | r16-BC,DE, HL, AF, IX, IY | Извлечение верхнего элемента стека в регистр r16. Указатель стека увеличивается на 2 |
| EX DX,HL |
| Обмен содержимого регистровых пар HL и DE |
| EX SP,r16 | r16-HL,IX,IY | Обмен содержимого регистра r16 и вершины стека. Указатель стека остается прежним |
| EX AF,AF |
| Переключение регистров А и F на альтернативный набор | Все | EXX |
| Переключение активного набора регистров (ВС, DE, HL) |
| LDI |
| Копирование байто из ячейки, адресуемой регистровой парой HL, в ячейку, адресуемую регистровой парой DE, увеличение HL и DE на 1 и уменьшение ВС на 1 | P/V, N, Н | LDR |
| Выполнение команды LDI, пако ВС не станет равно 0 | P/V, N, Н | LDD |
| Копирование байта из ячейки, адресуемой регистровой парой HL, в ячейку, адресуемую регистровой парой DE, уменьшение HL, DE и ВС на 1 | P/V, N, Н | LDDR |
| Выполнение команды LDD, пока ВС не станет равно 0 | P/V, N, Н | CPI |
| Сравнение содержимого ячейки, адресуемой регистровой порой HL, с аккумулятором, увеличение HL на 1 и уменьшение ВС на 1 | Z, P/V, S, N, H | CPIR |
| Повторение команды CPI, пока не будет найден байт, равный записанному в аккумуляторе, или ВС не станет равным 0 | Z, P/V, S, N, H | CPD |
| Сравнение содержимого ячейки, адресуемой регистровой парой HL, с аккумулятором и уменьшение HL и ВС на 1 | Z, P/V, S, N, H | CPDR |
| Повторение команды CPD, пока не будет найден байт, равный записанному в аккумуляторе, или ВС не станет равным 0 | Z, P/V, S, N, H | ADD A,s | s-A,B, C,D,E,H,L,(HL), d8, (IX+i8),(IY+i8) | Сложение A = A + s | Все | ADC A,s | s-A,B,C,D, E, Н,L,(НL), d8, (IX+i8), (IY+i8) | Сложение с учетом переноса A-A + s + CY | Все | SUB s | s-A,B,C,D,E,H,L,(HL), d8, (IX+i8), (IY+i8) | Вычитание А = A-s | Все | SBC A,s | s-A,B,C,D,E, H, L, (HL), d8, (IX+i8), (IY+i8) | Вычитание с учетом заема A = A-s-CY | Все | AND s | s-A,B,C,D,E,H,L,(HL), d8, (IX+i8), (IY+ i8) | Логическое И A = A&s | Все | OR s | s-A,B,C,D,E,H,L,(HL), d8,(IX+i8),(IY+i8) | Логическое ИЛИ А = А | s | Все | XOR s | s-A,B,C,D,E, H, L, (HL), d8, (IX+i8), (IY+i8) | Исключающее ИЛИ A=AXORs | Все | CP s | s-A,B, C, D, E, H, L, (HL), d8, (IX+i8), (IY+i8) | Сравнение. Флаги устанавливаются в соответствии с результатом операции А - s, содержимое регистров не меняется | Все | ADD HL,r16 | r16-BC, DE, HL,SP | 16-разрядное сложение HL = HL + r16 | С, N, Н | ADD IX,r16 | r16-BC, DE, IX, SP | 16-разрядное сложение с индексным регистром IХ = IХ +r16 | С, N, Н | ADD IY,r16 | r16-BC, DE, IX, SP | 16-разрядное сложение с индексным регистром IY=IY + r16 | С, N, Н | ADC HL,r16 | r16-BC, DE, HL, SP | 16-разрядное сложение с учетом переноса HL = HL+r16 + CY | Все | SBC HL,r16 | r16-BC, DE, HL,SP | 16-разрядное вычитание с учетом заемо HL = HL-r16-CY | Все | DAA |
| Коррекция результата (необходима при роботе с числами в двоично-десятичном коде) | С, Z, P/V, S, Н | CPL |
| Инверсия числа в аккумуляторе | N, Н | NEG |
| Преобразование числа в аккумуляторе в дополнительный код | Все | CCF |
| Инверсия флага переноса | С, N, Н | SCF |
| Установка флага переноса | С, N, Н | INC d | d - А, В, C, D, E, H, L, (HL), (IX+i8), (IY+i8) | Увеличение на 1 D = d + 1 | Z, P/V, S, N, Н | INC r16 | r16-ВС, DE, HL,SP, IX, IY | Увеличение на 1 r16 = r16+ 1 |
| DEC d | d - А, В, C, D, E, H, L, (HL), (IX+i8), (IY+i8) | Уменьшение на 1 D = d - 1 | Z, P/V, S, N, Н | DEC r16 | r16-BC, DE, HL,SP, IX, IY | Уменьшение на 1 r16 = r16- 1 |
| RLCA |
| Циклический сдвиг содержимого аккумулятора влево на один разряд | C, N, H | RLA |
| Циклический сдвиг содержимого аккумулятора влево на один разряд через флаг переноса | C, N, H | RRCA |
| Циклический сдвиг содержимого аккумулятора вправо на один разряд | C, N, H | RRA |
| Циклический сдвиг содержимого аккумулятора вправо на один разряд через флаг переноса | C, N, H | RLC s | s-A,B, C, D, E, H, L, (HL), (IX+i8), (IY+i8) | Циклический сдвиг s влево на один разряд | Все | RL s | s - А, В, C, D, E, H, L, (HL), (IX+i8), (IY+i8) | Циклический сдвиг s влево но один разряд через флаг переноса | Все | RRC s | s - А, В, C, D, E, H, L, (HL), (IX+i8), (IY+i8) | Циклический сдвиг s вправо на один разряд | Все | RR s | s-A,B, C, D, E, H, L, (HL), (IX+i8), (IY+i8) | Циклический сдвиг s вправо но один разряд через флаг переноса | Все | SLA s | s-A,B, C, D, E, H, L, (HL), (IX+18), (IY+18) | Арифметический сдвиг s влево на один разряд | Все | SRA s | s - А, В, C, D, E, H, L, (HL), (IX+i8), (IY+i8) | Арифметический сдвиг s вправо на один разряд | Все | SRL s | s - А, В, C, D, E, H, L, (HL), (IX+i8), (IY+i8) | Логический сдвиг s влево на один разряд | Все | RLD |
| Циклический перенос влево полубайтов ячейки памяти, адресуемой регистровой парой HL, через младший полубайт аккумулятора | Z, P/V, S, N, Н | RRD |
| Циклический перенос вправо полубайтов ячейки памяти, адресуемой регистровой парой HL, через младший полубайт аккумулятора | Z, P/V, S, N, Н | BIT b,d |
| b-0-7 d - А, В, C, D, E, H, L, (HL), (IX+i8), (IY+i8) | Z, P/V, S, N, Н | SET b,d | b-0-7 d-A,B,C,D,E, H, L, (HL), (IX+i8), (IY+iB) | Установка бита с номером b в 8-разряднам числе в d |
| RES b,d | b-0-7 d-A,B,C,D, E, H, L, (HL), (IX+i8),(IY+iB) | Сброс бита с номером b в 8-разряднам числе в d |
| NOP |
| Пустая операция |
| HALT |
| Остановка процессора. Рабата возобновляется после поступления запроса на прерывание |
| DI |
| Запрет обработки маскируемых прерываний |
| EI |
| Разрешение обработки маскируемых прерываний |
| IM n | n-0,1,2 | Установка режима обработки маскируемых прерываний |
| CALL a16 |
| Переход к подпрограмме. Адрес следующей команды сохраняется на вершине стека, указатель стека уменьшается на 2 |
| CALL cc,a16 | cc-NZ,Z,NC,C,PO, PE,P, M | Вызов подпрограммы, если истинна условие сс |
| RET |
| Возврат из подпрограммы. Адрес берется с вершины стека, указатель стека увеличивается на 2 |
| RETcc | cc-NZ,Z,NC,C,PO, PE,P, M | Возврат из подпрограммы, если истина условие сс |
| RETI |
| Возврат из подпрограммы обработки маскируемого прерывания. Адрес берется с вершины стека, указатель стека увеличивается на 2, разрешается обработка прерываний |
| RETN |
| Возврат из подпрограммы обработки немаскируемого прерывания. Адрес берется с вершины стека, указатель стека увеличивается на 2, разрешается обработка прерываний |
| RST p | p-00h,08h, 10h, 18h, 20h, 28h,30h,38h | Вызов подпрограммы, расположенной по фиксированному адресу р (программное прерывание). Адрес возврата сохраняется в стеке |
| JP a16 |
| Переход по адресу а 16 |
| JP cc,a16 | cc -NZ,Z,NC,C,PO, PE,P, M | Переход по адресу а 16, если условие сс истинно |
| JP i8 |
| Относительный переход. Новый адрес вычисляется как сумма значения из регистра PC и 8-разряднога смещения i8. Смещение рассматривается как число со знаком |
| JP cc,i8 | cc-NZ, Z, NC, C | Относительный переход, если условие сс истинно |
| JP (r16) | r16-HL, IX, IY | Переход по адресу, содержащемуся в регистровой паре r16. |
| DJNZ iB |
| Из числа в регистре В вычитается 1. Если при этом не получен 0, то осуществляется относительный переход па смещению i8, если же В = 0, выполняется следующая за DJNZ команда |
| IN A,n8 |
| Ввод байта из парта с адресам n8 и запись его в аккумулятор |
| IN r,(C) | r - A, B, C, D, E, H, L | Ввод байта из парта, адрес которого задан в регистровой паре ВС, и его запись в регистр r | Z,P/V,S,N,H | INI |
| Ввод байта из парта, адрес которого задан в регистровой паре ВС; запись введенного байта в ячейку, адресуемую регистровой парой HL, увеличение HL на 1 и уменьшение числа в регистре В на 1 | Все | INIR |
| Выполнение команды INI, пока число в регистре В не станет равным 0 | Все | IND |
| Ввод байта из парта, адрес которого задан в регистровой паре ВС; запись введенного байта в ячейку, адресуемую регистровой парой HL, уменьшение HL на 1 и уменьшение числа в регистре В на 1 | Все | INDR |
| Выполнение команды IND, пока число в регистре В не станет равным 0 | Все | OUT (n8),A |
| Вывод байта из аккумулятора в порт с адресом n8 |
| OUT (C),r | r-A,B,C,D, E, H,L | Вывод байта из регистра г в порт, адрес которого задан в регистровой паре ВС |
| OUTI |
| Вывод байта из ячейки памяти, адресуемой регистровой парой HL, в порт, адрес которого задан в регистровой поре ВС, увеличение HL на 1 и уменьшение числа в регистре В на 1 | Все | OTIR |
| Выполнение команды OUTI, пока число в регистре В не стонет ровным 0 | Все | OUTD |
| Вывод байта из ячейки памяти, адресуемой регистровой парой HL, в парт, адрес которого задан в регистровой паре ВС, уменьшение HL на 1 и уменьшение числа в регистре В на 1 | Все | OTDR |
| Выполнение команды OUTD, пока число в регистре В не стонет равным 0 | Все | Условные обозначения: р - фиксированный адрес рестарта а16 - 16-разрядный адрес Ь - номер бита в байте (0-7) d8 - непосредственный 8-разрядный операнд d16 - непосредственный 16-разрядный операнд i8 - 8-разрядное смещение в диапазоне от -128 до 127 r - 8-разрядный внутренний регистр процессора r16 - 16-разрядный внутренний регистр или регистровая пара n8 - 8-разрядный адрес порта ввода/вывода d - приемник данных s - источник данных Коды условий: NZ - не ноль (флаг Z = 0) Z - ноль (флаг Z = 1) NC - нет переноса (флаг С = 0) С - перенос (флаг С = 1) РО - нечетное число единиц/нет переполнения (флаг P/V = 0) РЕ - четное число единиц/переполнение (флаг P/V =1) Р - положительный результат (флаг S = 0) М - отрицательный результат (флаг S = 1) |