Система команд микропроцессора Z80, используемого в игровых приставках SEGA
1.3. Система команд микропроцессора Z80, используемого в игровых приставках SEGA
Мнемоника Операнды Описание Изменяемые флаги
LD r1,r2r1 - А, В, C, D, E, H, L r2-A,B,C,D, E, H,L,(HL), (|X+i8), (|Y+i8)Загрузка байта из регистра r1 8 r2
LD r1,d8r1 -A,B,C,D, E, H, L, (HL), (|X+i8), (|Y+iB)Загрузка байта d8 в r1
LD HL,ss-A,B,C,D, E, H,LЗапись s в ячейку, адресуемую порой HL
LD A,ss-(BC),(DE),(a16)Загрузка байта из s в аккумулятор
LD d,Ad-(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 Запись байта из аккумулятора в регистр IZ, P/V, S, N, Н LD R,A Запись байта из аккумулятора в регистр RZ, P/V, S, N, Н LD r16,d16r16-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),r16r16-BC,DE, HL, SP, IX, IYЗапись 16-разряднога числа из регистровой пары r16 в память по адресу а 16
LD SP,r16r16-HL,IX,IYКопирование содержимого регистра r16 в указатель стека
PUSH r16r16-BC,DE,HL,AF,IX,IYСохранение регистра r16 в стеке. Указатель стека уменьшается на 2
POP r16r16-BC,DE, HL, AF, IX, IYИзвлечение верхнего элемента стека в регистр r16. Указатель стека увеличивается на 2
EX DX,HL Обмен содержимого регистровых пар HL и DE
EX SP,r16r16-HL,IX,IYОбмен содержимого регистра r16 и вершины стека. Указатель стека остается прежним
EX AF,AF Переключение регистров А и F на альтернативный наборВсе EXX Переключение активного набора регистров (ВС, DE, HL)
LDI Копирование байто из ячейки, адресуемой регистровой парой HL, в ячейку, адресуемую регистровой парой DE, увеличение HL и DE на 1 и уменьшение ВС на 1P/V, N, Н LDR Выполнение команды LDI, пако ВС не станет равно 0P/V, N, Н LDD Копирование байта из ячейки, адресуемой регистровой парой HL, в ячейку, адресуемую регистровой парой DE, уменьшение HL, DE и ВС на 1P/V, N, Н LDDR Выполнение команды LDD, пока ВС не станет равно 0P/V, N, Н CPI Сравнение содержимого ячейки, адресуемой регистровой порой HL, с аккумулятором, увеличение HL на 1 и уменьшение ВС на 1Z, P/V, S, N, H CPIR Повторение команды CPI, пока не будет найден байт, равный записанному в аккумуляторе, или ВС не станет равным 0Z, P/V, S, N, H CPD Сравнение содержимого ячейки, адресуемой регистровой парой HL, с аккумулятором и уменьшение HL и ВС на 1Z, P/V, S, N, H CPDR Повторение команды CPD, пока не будет найден байт, равный записанному в аккумуляторе, или ВС не станет равным 0Z, P/V, S, N, H ADD A,ss-A,B, C,D,E,H,L,(HL), d8, (IX+i8),(IY+i8)Сложение A = A + sВсе ADC A,ss-A,B,C,D, E, Н,L,(НL), d8, (IX+i8), (IY+i8)Сложение с учетом переноса A-A + s + CYВсе SUB ss-A,B,C,D,E,H,L,(HL), d8, (IX+i8), (IY+i8)Вычитание А = A-sВсе SBC A,ss-A,B,C,D,E, H, L, (HL), d8, (IX+i8), (IY+i8)Вычитание с учетом заема A = A-s-CYВсе AND ss-A,B,C,D,E,H,L,(HL), d8, (IX+i8), (IY+ i8)Логическое И A = A&sВсе OR ss-A,B,C,D,E,H,L,(HL), d8,(IX+i8),(IY+i8)Логическое ИЛИ А = А | sВсе XOR ss-A,B,C,D,E, H, L, (HL), d8, (IX+i8), (IY+i8)Исключающее ИЛИ A=AXORsВсе CP ss-A,B, C, D, E, H, L, (HL), d8, (IX+i8), (IY+i8)Сравнение. Флаги устанавливаются в соответствии с результатом операции А - s, содержимое регистров не меняетсяВсе ADD HL,r16r16-BC, DE, HL,SP16-разрядное сложение HL = HL + r16С, N, Н ADD IX,r16r16-BC, DE, IX, SP16-разрядное сложение с индексным регистром IХ = IХ +r16С, N, Н ADD IY,r16r16-BC, DE, IX, SP16-разрядное сложение с индексным регистром IY=IY + r16С, N, Н ADC HL,r16r16-BC, DE, HL, SP16-разрядное сложение с учетом переноса HL = HL+r16 + CYВсе SBC HL,r16r16-BC, DE, HL,SP16-разрядное вычитание с учетом заемо HL = HL-r16-CYВсе DAA Коррекция результата (необходима при роботе с числами в двоично-десятичном коде)С, Z, P/V, S, Н CPL Инверсия числа в аккумулятореN, Н NEG Преобразование числа в аккумуляторе в дополнительный кодВсе CCF Инверсия флага переносаС, N, Н SCF Установка флага переносаС, N, Н INC dd - А, В, C, D, E, H, L, (HL), (IX+i8), (IY+i8)Увеличение на 1 D = d + 1Z, P/V, S, N, Н INC r16r16-ВС, DE, HL,SP, IX, IYУвеличение на 1 r16 = r16+ 1
DEC dd - А, В, C, D, E, H, L, (HL), (IX+i8), (IY+i8)Уменьшение на 1 D = d - 1Z, P/V, S, N, Н DEC r16r16-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 ss-A,B, C, D, E, H, L, (HL), (IX+i8), (IY+i8)Циклический сдвиг s влево на один разрядВсе RL ss - А, В, C, D, E, H, L, (HL), (IX+i8), (IY+i8)Циклический сдвиг s влево но один разряд через флаг переносаВсе RRC ss - А, В, C, D, E, H, L, (HL), (IX+i8), (IY+i8)Циклический сдвиг s вправо на один разрядВсе RR ss-A,B, C, D, E, H, L, (HL), (IX+i8), (IY+i8)Циклический сдвиг s вправо но один разряд через флаг переносаВсе SLA ss-A,B, C, D, E, H, L, (HL), (IX+18), (IY+18)Арифметический сдвиг s влево на один разрядВсе SRA ss - А, В, C, D, E, H, L, (HL), (IX+i8), (IY+i8)Арифметический сдвиг s вправо на один разрядВсе SRL ss - А, В, 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,db-0-7 d-A,B,C,D,E, H, L, (HL), (IX+i8), (IY+iB)Установка бита с номером b в 8-разряднам числе в d
RES b,db-0-7 d-A,B,C,D, E, H, L, (HL), (IX+i8),(IY+iB)Сброс бита с номером b в 8-разряднам числе в d
NOP Пустая операция
HALT Остановка процессора. Рабата возобновляется после поступления запроса на прерывание
DI Запрет обработки маскируемых прерываний
EI Разрешение обработки маскируемых прерываний
IM nn-0,1,2Установка режима обработки маскируемых прерываний
CALL a16 Переход к подпрограмме. Адрес следующей команды сохраняется на вершине стека, указатель стека уменьшается на 2
CALL cc,a16cc-NZ,Z,NC,C,PO, PE,P, MВызов подпрограммы, если истинна условие сс
RET Возврат из подпрограммы. Адрес берется с вершины стека, указатель стека увеличивается на 2
RETcccc-NZ,Z,NC,C,PO, PE,P, MВозврат из подпрограммы, если истина условие сс
RETI Возврат из подпрограммы обработки маскируемого прерывания. Адрес берется с вершины стека, указатель стека увеличивается на 2, разрешается обработка прерываний
RETN Возврат из подпрограммы обработки немаскируемого прерывания. Адрес берется с вершины стека, указатель стека увеличивается на 2, разрешается обработка прерываний
RST pp-00h,08h, 10h, 18h, 20h, 28h,30h,38hВызов подпрограммы, расположенной по фиксированному адресу р (программное прерывание). Адрес возврата сохраняется в стеке
JP a16 Переход по адресу а 16
JP cc,a16cc -NZ,Z,NC,C,PO, PE,P, MПереход по адресу а 16, если условие сс истинно
JP i8 Относительный переход. Новый адрес вычисляется как сумма значения из регистра PC и 8-разряднога смещения i8. Смещение рассматривается как число со знаком
JP cc,i8cc-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Ввод байта из парта, адрес которого задан в регистровой паре ВС, и его запись в регистр rZ,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),rr-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)
677 Прочтений • [Система команд микропроцессора Z80, используемого в игровых приставках SEGA] [19.05.2012] [Комментариев: 0]