Система команд центрального процессора игровой приставки GAME BOY
1.2. Система команд центрального процессора игровой приставки GAME BOY
Мнемоника Краткое описание Запись на языке Ассемблера Код Команды Изменяемые флаги
ADC A,(HL)Сложение с учётом переноса содержимого аккумулятора и ячейки, адрес которой храниться в регистровой паре HL A = A + (HL) + CYADC A,(HL)8EZ, H, C, N ADC A,d8Сложение с учётом переноса содержимого аккумулятора и непосредственных данных В8 A = A + В8 + CYADC A,d8CE d8Z, H, C, N ADC A,rСложение с учётом переноса содержимого аккумулятора и указанного режима А = А + r + CY ADC A,B88Z, H, C, N ADC A,C89 ADC A,D8A ADC A,E8B ADC A,H8C ADC A,L8D ADC A,A8F ADD A,(HL)Сложение содержимого аккумулятора и ячейки, адрес которой храниться в регистровой паре HL А = А + (HL)ADD A,(HL)86Z, H, C, N ADD A,d8Сложение содержимого аккумулятора и непосредственных данных d8 A = A + d8ADD A,d8C6 d8Z, H, C, N ADD A,rСложение содержимого аккумулятора и указанного регистра А = А + r ADD A,B80Z, H, C, N ADD A,C81 ADD A,D82 ADD A,E83 ADD A,H84 ADD A,L85 ADD A,A87 ADD HL,r16Сложение содержимого регистровой пары HL и указанной регистровой пары HL = HL + r16 ADD HL,BC09 H, C, N ADD HL,DE19 ADD HL,HL29 ADD HL,SP39 ADD SP,d8Прибавить 8-разрядное число d8 к указателю SPADD SP,d8E8 d8Z, H, C, N AND (HL)Логическое И содержимого аккумулятора и ячейка, адрес которой храниться в регистровой паре HL A = A&(HL)AND (HL)A6Z, H, C, N AND d8Логическое И содержимого аккумулятора и непосредственных данных d8 A = A&d8AND d8E6 d8Z, H, C, N AND rЛогическое И содержимого аккумулятора и указанного регистра А = А&r AND BA0Z, H, C, N AND CA1 AND DA2 AND EA3 AND HA4 AND LA5 AND AA7 BIT b,(HL)Проверка состояния бита с номером в ячейке памяти, адресуемой парой HL.
Если бит равен 0 то флаг Z равен 1, и наоборот
BIT 0,(HL)CB 46Z, H, N BIT 1,(HL)CB 4e BIT 2,(HL)CB 56 BIT 3,(HL)CB 5E BIT 4,(HL)CB 66 BIT 5,(HL)CB 6E BIT 6,(HL)CB 76 BIT 7,(HL)CB 7E BIT b,rПроверка состояния бита с номером b в регистре r. Если бит равен 0, то флаг Z равен 1, и наоборот
BIT b,BCB 40+8*bZ, H, N BIT b,CCB 41+8*b BIT b,DCB 42+8*b BIT b,ECB 43+8*b BIT b,HCB 44+8*b BIT b,LCB 45+8*b BIT b,ACB 47+8*b CALL NZ,a16Вызов подпрограммы, если флаг Z = 0CALL NZ,a16C4 a16|a16
CALL Z,a16Вызов подпрограммы, если флаг Z = 1CALL Z,a16CC a16|a16
CALL NC,a16Вызов подпрограммы, если флаг С = 0CALL NC,a16D4 a16|a16
CALL C,a16Вызов подпрограммы, если флаг С = 1CALL C,a16DC a16|a16
CALL a16Вызов подпрограммы, адрес возврата сохраняется в стекеCALL a16CD a16|a16
CCFИнверсия флага СCCF3FN, H, C CPLИнверсия содержимого аккумулятораCPL2FN, H CP (HL)Сравнение содержимого аккумулятора и ячейки, адрес которой хранится в регистровой паре HLCP (HL)BEZ, H, C, N CP d8Сравнение содержимого аккумулятора с числом d8CP d8FE d8Z, H, C, N CP rСравнение содержимого аккумулятора и указанного регистра
CP BB8Z, H, C, N CP CB9 CP DBA CP EBB CP HBC CP LBD CP ABF DAAКоррекция результата (необходима для получения правильного результата в двоично-десятичном коде)DAA27N, H, C DEC (HL)Уменьшение на 1 содержимого ячейки памяти, адресуемой регистровой парой HL (НL) = (НL)-1DEC (HL)35N, H, C DEC rУменьшение на 1 содержимого регистра r = r- 1
DEC B05Z, H, N DEC C0D DEC D15 DEC E1D DEC H25 DEC L2D DEC A3D DEC r16Уменьшение на 1 содержимого регистровой пары
DEC BC0B
DEC DE1B DEC HL2B DEC SP3B DIЗапрещение обработки маскируемых прерыванийDIF3
EIРазрешение обработки маскируемых прерыванийEIFB
HALTВыключение процессора до поступления запроса на прерываниеHALT76
INC (HL)Увеличение на 1 содержимого ячейки памяти, адресуемой регистровой парой HL (HL)-(HL)+ 1INC (HL)34Z, H, N INC rУвеличение на 1 содержимого регистра r = r + 1
INC B04Z, H, N INC C0C INC D14 INC E1C INC H24 INC L2C INC A3C INC r16Увеличение на 1 содержимого регистра пары
INC BC03
INC DE13 INC HL23 INC SP33 JP NZ,a16Переход, если флаг z = 0JP NZ,a16C2 a16|a16
JP Z,a16Переход, если флаг z = 1JP Z,a16CA a16|a16
JP NC,a16Переход, если флаг C = 0JP NC,a16D2 a16|a16
JP C,a16Переход, если флаг C = 1JP C,a16DA a16|a16
JP a16Переход по указанному адресу РС = a16JP a16C3 a16|a16
JP (HL)Переход по адресу из регистровой пары HL PC = HLJP (HL)E9
JR NZ,i8Переход по смещению i8, если флаг Z=0JP NZ,a1620 i8
JR Z,i8Переход по смещению i8, если флаг Z=1JP Z,a1628 i8
JR NC,i8Переход по смещению i8, если флаг C=0JP NC,a1630 i8
JR C,i8Переход по смещению i8, если флаг C=1JP C,a1638 i8
JR i8Переход по указанному смещению i8 PC=PC + i8JP C,a1618 i8
LD (HL),d8Загрузка d8 в ячейку памяти, адрес которой указан в регистровой паре HLLD (HL),d836 d8
LD (HL),rЗапись байта из регистра r в ячейку памяти, адрес которой указан в регистровой паре HL
LD (HL),B70
LD (HL),C71 LD (HL),D72 LD (HL),E73 LD (HL),H74 LD (HL),L75 LD (HL),A77 LD (a16),AЗапись байта из аккумулятора в ячейку памяти с адресом a16LD (a16),AEA a16|a16
LD (r16),AЗапись байта из аккумулятора в ячейку памяти, адрес который указан в регистровой паре r16 LD (BC),A02
LD (DE),A12 a16|a16 LD A,(a16)Загрузка в аккумулятор байта из ячейки памяти a16LD A,(a16)FA a16|a16
LD A,(r16)Запись байта из ячейки памяти, адрес которой указан в регистровой паре r16, в аккумулятор LD A,(BC)0A
LD A,(DE)1A LD r,d8Загрузка в аккумулятор байта из ячейки памяти с адресом (FF00h + регистр C)LD A,(C)F2
LD r,d8Загрузка 8-разряднаго числа d8 в регистр r
LD B,d806 d8
LD C,d80E d8 LD D,d816 d8 LD E,d81E d8 LD H,d826 d8 LD L,d82E d8 LD A,d83E d8 LD r,(HL)Загрузка байта из ячейки памяти, адрес которой указан в регистровой паре HL, в регистр r
LD B,(HL)46
LD C,(HL)4E LD D,(HL)56 LD E,(HL)5E LD H,(HL)66 LD L,(HL)6E LD A,(HL)7E LD r1,r2Копирование данных из регистра r2 в регистр r1
LD DE,d1611d16|d16 LD HL,d1621d16|d16 LD SP,d1631d16|d16 LD SP,HLЗапись 16-разрядного числа из регистровой пары HL в указатель стека SPLD SP,HLF9
LD (a16),SPЗапись указателя стека в ячейки памяти па адресу а 16LD (a16),SP08a16|a16
LDD (HL),AЗапись байта из аккумулятора в ячейку памяти, адрес которой указан в регистровой паре HL, и уменьшение адреса в регистровой паре HL на 1
LDD (HL),A32
LD (HLD),A LD (HL-),A LDI (HL),AЗапись байта из аккумуляторе в ячейку памяти, адрес которой указан в регистровой паре HL, и увеличение адреса в регистровой паре HL на 1
LDI (HL),A3A
LD (HLI),A LD (HL+),A LDH (d8),AЗапись байта из аккумулятора в ячейку памяти с адресом (FF00h + d8)LDH (d8),AE0 d8
LDH A,(d8)Загрузка в аккумулятор байта из ячейки памяти с адресом (FF00h + d8)LDH A,(d8)F0 d8
LDHL SP,d8Загрузка в регистровую пару HL значения SP + d8
LD HL,SP+d8F8 d8
LDHL,SPd8 NOPНет операцииNOP00
OR(HL)Логическое ИЛИ содержимого аккумулятора и ячейки, адрес которой хранится в регистровой паре HL A=A|(HL)OR (HL)B6Z, H, C, N OR d8Логическое ИЛИ содержимого аккумулятора и непосредственных данных d8 А = А|d8OR d8F6 d8Z, H, C, N OR rЛогическое ИЛИ содержимого аккумулятора и указанного регистра А = А|r
OR BB0Z, H, C, N OR CB1 OR DB2 OR EB3 OR HB4 OR LB5 OR AB7 POP r16Извлечение 16-разрядного числа из стека и помещение в регистровую пару r16
POP BCC1
POP DED1 POP HLE1 POP AFF1 PUSH r16Помещение 16-разрядного числа из регистровой пары r16 в стек
PUSH BCC5
PUSH DED5 PUSH HLE5 PUSH AFF5 RES b,(HL)Сброс бита c номерам b в ячейке памяти, адресуемой парой HL
RES 0,(HL)CB B6
RES 1,(HL)CB 8E RES 2,(HL)CB 96 RES 3,(HL)CB 9E RES 4,(HL)CB A6 RES 5,(HL)CB AE RES 6,(HL)CB B6 RES 7,(HL)CB BE RES b,rСброс бита с номером b в регистре r
RES b,BCB 80+8*b
RES b,CCB 81+8*b RES b,DCB 82+8*b RES b,ECB 83+8*b RES b,HCB 84+8*b RES b,LCB 85+8*b RES b,ACB 86+8*b RET NZВозврат из подпрограммы, если флаг Z = 0RET NZC0
RET ZВозврат из подпрограммы, если флаг Z = 1RET ZC8
RET NCВозврат из подпрограммы, если флаг С = 0RET NCD0
RET CВозврат из подпрограммы, если флаг С = 1RET CD8
RETВозврат из подпрограммы. Адрес возврата берется с вершины стекаRETC9
RETIВозврат из процедуры обработки запроса на прерываниеRETID9
RLAЦиклический сдвиг байта в аккумуляторе влево через флаг переносаRLA17Z, N, H, C RLCAЦиклический сдвиг байта в аккумуляторе влевоRLCA07Z, N, H, C RL (HL)Циклический сдвиг байта в ячейке памяти, адресуемой регистровой парой HL, влево через флаг переносаRL (HL)CB 16Z, N, H, C RLЦиклический сдвиг байта в регистре r влево через флаг переноса
RL BCB 10Z, N, H, C RL CCB 11 RL DCB 12 RL ECB 13 RL HCB 14 RL LCB 15 RL ACB 17 RLC (HL)Циклический сдвиг байта в ячейке памяти, адресуемой регистровой парой HL, влевоRLC (HL)CB 06Z, N, H, C RLC rЦиклический сдвиг байта в регистре r влево
RLC BCB 00Z, N, H, C RLC CCB 01 RLC DCB 02 RLC ECB 03 RLC HCB 04 RLC LCB 05 RLC ACB 07 RRAЦиклический сдвиг байта в аккумуляторе вправо через флаг переносаRRA1FZ, N, H, C RRCAЦиклический сдвиг байта в аккумуляторе вправоRRCA0FZ, N, H, C RR (HL)Циклический сдвиг байта в ячейке памяти, адресуемой регистровой парой HL, вправо через флаг переносаRR (HL)CB 1EZ, N, H, C RR rЦиклический сдвиг байта в регистре r вправо через флаг переноса
RR BCB 18Z, N, H, C RR CCB 19 RR DCB 1A RR ECB 1B RR HCB 1C RR LCB 1D RR ACB 1F RRC (HL)Циклический сдвиг байта в ячейке памяти, адресуемой регистровой парой HL, вправоRRC (HL)CB 0EZ, N, H, C RRC rЦиклический сдвиг байта в регистре r вправо
RRC BCB 08Z, N, H, C RRC CCB 09 RRC DCB 0A RRC ECB 0B RRC HCB 0C RRC LCB 0D RRC ACB 0F RST aПереход к подпрограмме, расположенной по фиксированному адресу (рестарт)
RST 00hC7
RST 08hCF RST 18hD7 RST 20hDF RST 28hE7 RST 30hEF RST 38hF7 RST 10hFF SBC A,(HL)Вычитание с учетом заёма содержимого ячейки, адрес которой хранится в регистровой паре HL из аккумулятора А = А - (HL) - CYSBC A,(HL)9EZ, H, C, N SBC A,d8Вычитание с учетам заема содержимого 8-разряднога числа d8 из аккумулятора А = А - d8 - CYSBC A,d8DE d8Z, H, C, N SBC a,rВычитание с учетом заема содержимого указанного регистра из аккумулятора A = A-r-CY
SBC A,B98Z, H, C, N SBC A,C99 SBC A,D9A SBC A,E9B SBC A,H9C SBC A,L9D SBC A,A9F SCFУстановка флага переносаSCF37C SET b,(HL)Установка бита с номером b в ячейке памяти, адресуемой парой HL
SET 0,(HL)CB C6
SET 1,(HL)CB CE SET 2,(HL)CB D6 SET 3,(HL)CB DE SET 4,(HL)CB E6 SET 5,(HL)CB EE SET 6,(HL)CB F6 SET 7,(HL)CB F9 SET b,rУстановка бита с номером b в регистре r
SET b,BCB C0+8*b
SET b,CCB C1+8*b SET b,DCB C2+8*b SET b,ECB C3+8*b SET b,HCB C4+8*b SET b,LCB C5+8*b SET b,ACB C7+8*b SLA (HL)Арифметический сдвиг байта в ячейке памяти, адресуемой регистровой парой HL, влевоSLA (HL)CB 26Z, N, H, C SLA rАрифметический сдвиг байта в регистре r влево
SLA BCB 20Z, N, H, C SLA CCB 21 SLA DCB 22 SLA ECB 23 SLA HCB 24 SLA LCB 25 SLA ACB 27 SRA (HL)Арифметически сдвиг байта в ячейке памяти, адресуемой регистровой парой HL, вправоSRA (HL)CB 2EZ, N, H, C SRA rАрифметический сдвиг байта в регистре r вправо
SRA BCB 28Z, N, H, C SRA CCB 29 SRA DCB 2A SRA ECB 2B SRA HCB 2C SRA LCB 2D SRA ACB 2F SRL (HL)Логический сдвиг байта в ячейке памяти, адресуемой регистровой парой HL, вправоSRL (HL)CB 3EZ, N, H, C SRL rЛогический сдвиг байта в регистре r вправо
SRL BCB 38Z, N, H, C SRL CCB 39 SRL DCB 3A SRL ECB 3B SRL HCB 3C SRL LCB 3D SRL ACB 3F STOPВыключение процессора и контроллера дисплея до нажатия кнопки на пультеSTOP10Z, N, H, C SUB A,(HL)Вычитание содержимого ячейки, адрес которой хранится в регистровой паре HL, из аккумулятора A=A-(HL)SUB A,(HL)96Z, N, H, C SUB A,d8Вычитание содержимого 8-разрядного числа d8 из аккумулятора A = A-d8SUB A,d8D6 d8Z, N, H, C SUB A,rВычитание содержимого указанного регистра из аккумулятора А = А-r
SUB A,B90Z, N, H, C SUB A,C91 SUB A,D92 SUB A,E93 SUB A,H94 SUB A,L95 SUB A,A97 SWAP (HL)Обмен содержимого старшей и младшей половин байта в ячейке памяти, адресуемой регистровой парой HLSWAP (HL)CB 36Z, H, C, N SWAP rОбмен содержимого старшей и младшей половин байта в регистре r
SWAP BCB 30Z, H, C, N SWAP CCB 31 SWAP DCB 32 SWAP ECB 33 SWAP HCB 34 SWAP LCB 35 SWAP ACB 37 XOR (HL)Логическое Исключающее ИЛИ содержимого аккумулятора и ячейки, адрес которой хранится в регистровой паре HLXOR (HL)AEZ, H, C, N XOR d8Логическое Исключающее ИЛИ содержимого аккумулятора и непосредственных данных d8XOR d8EE d8Z, H, C, N XOR rОбмен содержимого старшей и младшей половин байта в регистре r
XOR BA8Z, H, C, N XOR CA9 XOR DAA XOR EAB XOR HAC XOR LAD XOR AAF
Условные обозначения: а - фиксированный адрес рестарта а16 - 16-разрядный адрес a16h - старший байт 16-разрядного адреса а161 - младший байт 16-разрядного адреса b - номер бита в байте (0-7) d8 - непосредственный 8-разрядный операнд d16 - непосредственный 16-разрядный операнд i8 - 8-разрядное смещение в диапазоне от -128 до 127 r - 8-разрядный внутренний регистр процессора r16 - 16-разрядный внутренний регистр или регистровая пара Примечания. 1. Некоторые команды, например LDI, могут записываться в тексте на языке ассемблера несколькими способами. Однако они преобразуются в один и тот же код независимо от выбранной мнемоники. 2. В командах работы с отдельными битами первый байт кода всегда равен CBh, а второй зависит от операнда b, показывающего, какой бит задействован.
683 Прочтений • [Система команд центрального процессора игровой приставки GAME BOY] [19.05.2012] [Комментариев: 0]