1.2. Система команд центрального процессора игровой приставки GAME BOY Мнемоника | Краткое описание | Запись на языке Ассемблера | Код Команды | Изменяемые флаги | ADC A,(HL) | Сложение с учётом переноса содержимого аккумулятора и ячейки, адрес которой храниться в регистровой паре HL A = A + (HL) + CY | ADC A,(HL) | 8E | Z, H, C, N | ADC A,d8 | Сложение с учётом переноса содержимого аккумулятора и непосредственных данных В8 A = A + В8 + CY | ADC A,d8 | CE d8 | Z, H, C, N | ADC A,r | Сложение с учётом переноса содержимого аккумулятора и указанного режима А = А + r + CY | ADC A,B | 88 | Z, H, C, N | ADC A,C | 89 | ADC A,D | 8A | ADC A,E | 8B | ADC A,H | 8C | ADC A,L | 8D | ADC A,A | 8F | ADD A,(HL) | Сложение содержимого аккумулятора и ячейки, адрес которой храниться в регистровой паре HL А = А + (HL) | ADD A,(HL) | 86 | Z, H, C, N | ADD A,d8 | Сложение содержимого аккумулятора и непосредственных данных d8 A = A + d8 | ADD A,d8 | C6 d8 | Z, H, C, N | ADD A,r | Сложение содержимого аккумулятора и указанного регистра А = А + r | ADD A,B | 80 | Z, H, C, N | ADD A,C | 81 | ADD A,D | 82 | ADD A,E | 83 | ADD A,H | 84 | ADD A,L | 85 | ADD A,A | 87 | ADD HL,r16 | Сложение содержимого регистровой пары HL и указанной регистровой пары HL = HL + r16 | ADD HL,BC | 09 | H, C, N | ADD HL,DE | 19 | ADD HL,HL | 29 | ADD HL,SP | 39 | ADD SP,d8 | Прибавить 8-разрядное число d8 к указателю SP | ADD SP,d8 | E8 d8 | Z, H, C, N | AND (HL) | Логическое И содержимого аккумулятора и ячейка, адрес которой храниться в регистровой паре HL A = A&(HL) | AND (HL) | A6 | Z, H, C, N | AND d8 | Логическое И содержимого аккумулятора и непосредственных данных d8 A = A&d8 | AND d8 | E6 d8 | Z, H, C, N | AND r | Логическое И содержимого аккумулятора и указанного регистра А = А&r | AND B | A0 | Z, H, C, N | AND C | A1 | AND D | A2 | AND E | A3 | AND H | A4 | AND L | A5 | AND A | A7 | BIT b,(HL) | Проверка состояния бита с номером в ячейке памяти, адресуемой парой HL. Если бит равен 0 то флаг Z равен 1, и наоборот | BIT 0,(HL) | CB 46 | Z, 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,B | CB 40+8*b | Z, H, N | BIT b,C | CB 41+8*b | BIT b,D | CB 42+8*b | BIT b,E | CB 43+8*b | BIT b,H | CB 44+8*b | BIT b,L | CB 45+8*b | BIT b,A | CB 47+8*b | CALL NZ,a16 | Вызов подпрограммы, если флаг Z = 0 | CALL NZ,a16 | C4 a16|a16 |
| CALL Z,a16 | Вызов подпрограммы, если флаг Z = 1 | CALL Z,a16 | CC a16|a16 |
| CALL NC,a16 | Вызов подпрограммы, если флаг С = 0 | CALL NC,a16 | D4 a16|a16 |
| CALL C,a16 | Вызов подпрограммы, если флаг С = 1 | CALL C,a16 | DC a16|a16 |
| CALL a16 | Вызов подпрограммы, адрес возврата сохраняется в стеке | CALL a16 | CD a16|a16 |
| CCF | Инверсия флага С | CCF | 3F | N, H, C | CPL | Инверсия содержимого аккумулятора | CPL | 2F | N, H | CP (HL) | Сравнение содержимого аккумулятора и ячейки, адрес которой хранится в регистровой паре HL | CP (HL) | BE | Z, H, C, N | CP d8 | Сравнение содержимого аккумулятора с числом d8 | CP d8 | FE d8 | Z, H, C, N | CP r | Сравнение содержимого аккумулятора и указанного регистра | CP B | B8 | Z, H, C, N | CP C | B9 | CP D | BA | CP E | BB | CP H | BC | CP L | BD | CP A | BF | DAA | Коррекция результата (необходима для получения правильного результата в двоично-десятичном коде) | DAA | 27 | N, H, C | DEC (HL) | Уменьшение на 1 содержимого ячейки памяти, адресуемой регистровой парой HL (НL) = (НL)-1 | DEC (HL) | 35 | N, H, C | DEC r | Уменьшение на 1 содержимого регистра r = r- 1 | DEC B | 05 | Z, H, N | DEC C | 0D | DEC D | 15 | DEC E | 1D | DEC H | 25 | DEC L | 2D | DEC A | 3D | DEC r16 | Уменьшение на 1 содержимого регистровой пары | DEC BC | 0B |
| DEC DE | 1B | DEC HL | 2B | DEC SP | 3B | DI | Запрещение обработки маскируемых прерываний | DI | F3 |
| EI | Разрешение обработки маскируемых прерываний | EI | FB |
| HALT | Выключение процессора до поступления запроса на прерывание | HALT | 76 |
| INC (HL) | Увеличение на 1 содержимого ячейки памяти, адресуемой регистровой парой HL (HL)-(HL)+ 1 | INC (HL) | 34 | Z, H, N | INC r | Увеличение на 1 содержимого регистра r = r + 1 | INC B | 04 | Z, H, N | INC C | 0C | INC D | 14 | INC E | 1C | INC H | 24 | INC L | 2C | INC A | 3C | INC r16 | Увеличение на 1 содержимого регистра пары | INC BC | 03 |
| INC DE | 13 | INC HL | 23 | INC SP | 33 | JP NZ,a16 | Переход, если флаг z = 0 | JP NZ,a16 | C2 a16|a16 |
| JP Z,a16 | Переход, если флаг z = 1 | JP Z,a16 | CA a16|a16 |
| JP NC,a16 | Переход, если флаг C = 0 | JP NC,a16 | D2 a16|a16 |
| JP C,a16 | Переход, если флаг C = 1 | JP C,a16 | DA a16|a16 |
| JP a16 | Переход по указанному адресу РС = a16 | JP a16 | C3 a16|a16 |
| JP (HL) | Переход по адресу из регистровой пары HL PC = HL | JP (HL) | E9 |
| JR NZ,i8 | Переход по смещению i8, если флаг Z=0 | JP NZ,a16 | 20 i8 |
| JR Z,i8 | Переход по смещению i8, если флаг Z=1 | JP Z,a16 | 28 i8 |
| JR NC,i8 | Переход по смещению i8, если флаг C=0 | JP NC,a16 | 30 i8 |
| JR C,i8 | Переход по смещению i8, если флаг C=1 | JP C,a16 | 38 i8 |
| JR i8 | Переход по указанному смещению i8 PC=PC + i8 | JP C,a16 | 18 i8 |
| LD (HL),d8 | Загрузка d8 в ячейку памяти, адрес которой указан в регистровой паре HL | LD (HL),d8 | 36 d8 |
| LD (HL),r | Запись байта из регистра r в ячейку памяти, адрес которой указан в регистровой паре HL | LD (HL),B | 70 |
| LD (HL),C | 71 | LD (HL),D | 72 | LD (HL),E | 73 | LD (HL),H | 74 | LD (HL),L | 75 | LD (HL),A | 77 | LD (a16),A | Запись байта из аккумулятора в ячейку памяти с адресом a16 | LD (a16),A | EA a16|a16 |
| LD (r16),A | Запись байта из аккумулятора в ячейку памяти, адрес который указан в регистровой паре r16 | LD (BC),A | 02 |
| LD (DE),A | 12 a16|a16 | LD A,(a16) | Загрузка в аккумулятор байта из ячейки памяти a16 | LD 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,d8 | 06 d8 |
| LD C,d8 | 0E d8 | LD D,d8 | 16 d8 | LD E,d8 | 1E d8 | LD H,d8 | 26 d8 | LD L,d8 | 2E d8 | LD A,d8 | 3E 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 B,B | 40 |
| LD B,C | 41 | LD B,D | 42 | LD B,E | 43 | LD B,L | 44 | LD B,H | 45 | LD B,A | 47 | LD C,B | 48 | LD C,C | 49 | LD C,D | 4A | LD C,E | 4B | LD C,L | 4C | LD C,H | 4D | LD C,A | 4F | LD D,B | 50 | LD D,C | 51 | LD D,D | 52 | LD D,E | 53 | LD D,L | 54 | LD D,H | 55 | LD D,A | 57 | LD E,B | 58 | LD E,C | 59 | LD E,D | 5A | LD E,E | 5B | LD E,L | 5C | LD E,H | 5D | LD E,A | 5F | LD H,B | 60 | LD H,C | 61 | LD H,D | 62 | LD H,E | 63 | LD H,L | 64 | LD H,H | 65 | LD H,A | 67 | LD L,B | 68 | LD L,C | 69 | LD L,D | 6A | LD L,E | 6B | LD L,L | 6C | LD L,H | 6D | LD L,A | 6F | LD A,B | 78 | LD A,C | 79 | LD A,D | 7A | LD A,E | 7B | LD A,L | 7C | LD A,H | 7D | LD A,A | 7F | LD r16,d16 | Запись 16-разряднаго числа d 16 в регистровую пару r 16 | LD BC,d16 | 01d16|d16 |
| LD DE,d16 | 11d16|d16 | LD HL,d16 | 21d16|d16 | LD SP,d16 | 31d16|d16 | LD SP,HL | Запись 16-разрядного числа из регистровой пары HL в указатель стека SP | LD SP,HL | F9 |
| LD (a16),SP | Запись указателя стека в ячейки памяти па адресу а 16 | LD (a16),SP | 08a16|a16 |
| LDD (HL),A | Запись байта из аккумулятора в ячейку памяти, адрес которой указан в регистровой паре HL, и уменьшение адреса в регистровой паре HL на 1 | LDD (HL),A | 32 |
| LD (HLD),A | LD (HL-),A | LDI (HL),A | Запись байта из аккумуляторе в ячейку памяти, адрес которой указан в регистровой паре HL, и увеличение адреса в регистровой паре HL на 1 | LDI (HL),A | 3A |
| LD (HLI),A | LD (HL+),A | LDH (d8),A | Запись байта из аккумулятора в ячейку памяти с адресом (FF00h + d8) | LDH (d8),A | E0 d8 |
| LDH A,(d8) | Загрузка в аккумулятор байта из ячейки памяти с адресом (FF00h + d8) | LDH A,(d8) | F0 d8 |
| LDHL SP,d8 | Загрузка в регистровую пару HL значения SP + d8 | LD HL,SP+d8 | F8 d8 |
| LDHL,SPd8 | NOP | Нет операции | NOP | 00 |
| OR(HL) | Логическое ИЛИ содержимого аккумулятора и ячейки, адрес которой хранится в регистровой паре HL A=A|(HL) | OR (HL) | B6 | Z, H, C, N | OR d8 | Логическое ИЛИ содержимого аккумулятора и непосредственных данных d8 А = А|d8 | OR d8 | F6 d8 | Z, H, C, N | OR r | Логическое ИЛИ содержимого аккумулятора и указанного регистра А = А|r | OR B | B0 | Z, H, C, N | OR C | B1 | OR D | B2 | OR E | B3 | OR H | B4 | OR L | B5 | OR A | B7 | POP r16 | Извлечение 16-разрядного числа из стека и помещение в регистровую пару r16 | POP BC | C1 |
| POP DE | D1 | POP HL | E1 | POP AF | F1 | PUSH r16 | Помещение 16-разрядного числа из регистровой пары r16 в стек | PUSH BC | C5 |
| PUSH DE | D5 | PUSH HL | E5 | PUSH AF | F5 | 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,B | CB 80+8*b |
| RES b,C | CB 81+8*b | RES b,D | CB 82+8*b | RES b,E | CB 83+8*b | RES b,H | CB 84+8*b | RES b,L | CB 85+8*b | RES b,A | CB 86+8*b | RET NZ | Возврат из подпрограммы, если флаг Z = 0 | RET NZ | C0 |
| RET Z | Возврат из подпрограммы, если флаг Z = 1 | RET Z | C8 |
| RET NC | Возврат из подпрограммы, если флаг С = 0 | RET NC | D0 |
| RET C | Возврат из подпрограммы, если флаг С = 1 | RET C | D8 |
| RET | Возврат из подпрограммы. Адрес возврата берется с вершины стека | RET | C9 |
| RETI | Возврат из процедуры обработки запроса на прерывание | RETI | D9 |
| RLA | Циклический сдвиг байта в аккумуляторе влево через флаг переноса | RLA | 17 | Z, N, H, C | RLCA | Циклический сдвиг байта в аккумуляторе влево | RLCA | 07 | Z, N, H, C | RL (HL) | Циклический сдвиг байта в ячейке памяти, адресуемой регистровой парой HL, влево через флаг переноса | RL (HL) | CB 16 | Z, N, H, C | RL | Циклический сдвиг байта в регистре r влево через флаг переноса | RL B | CB 10 | Z, N, H, C | RL C | CB 11 | RL D | CB 12 | RL E | CB 13 | RL H | CB 14 | RL L | CB 15 | RL A | CB 17 | RLC (HL) | Циклический сдвиг байта в ячейке памяти, адресуемой регистровой парой HL, влево | RLC (HL) | CB 06 | Z, N, H, C | RLC r | Циклический сдвиг байта в регистре r влево | RLC B | CB 00 | Z, N, H, C | RLC C | CB 01 | RLC D | CB 02 | RLC E | CB 03 | RLC H | CB 04 | RLC L | CB 05 | RLC A | CB 07 | RRA | Циклический сдвиг байта в аккумуляторе вправо через флаг переноса | RRA | 1F | Z, N, H, C | RRCA | Циклический сдвиг байта в аккумуляторе вправо | RRCA | 0F | Z, N, H, C | RR (HL) | Циклический сдвиг байта в ячейке памяти, адресуемой регистровой парой HL, вправо через флаг переноса | RR (HL) | CB 1E | Z, N, H, C | RR r | Циклический сдвиг байта в регистре r вправо через флаг переноса | RR B | CB 18 | Z, N, H, C | RR C | CB 19 | RR D | CB 1A | RR E | CB 1B | RR H | CB 1C | RR L | CB 1D | RR A | CB 1F | RRC (HL) | Циклический сдвиг байта в ячейке памяти, адресуемой регистровой парой HL, вправо | RRC (HL) | CB 0E | Z, N, H, C | RRC r | Циклический сдвиг байта в регистре r вправо | RRC B | CB 08 | Z, N, H, C | RRC C | CB 09 | RRC D | CB 0A | RRC E | CB 0B | RRC H | CB 0C | RRC L | CB 0D | RRC A | CB 0F | RST a | Переход к подпрограмме, расположенной по фиксированному адресу (рестарт) | RST 00h | C7 |
| RST 08h | CF | RST 18h | D7 | RST 20h | DF | RST 28h | E7 | RST 30h | EF | RST 38h | F7 | RST 10h | FF | SBC A,(HL) | Вычитание с учетом заёма содержимого ячейки, адрес которой хранится в регистровой паре HL из аккумулятора А = А - (HL) - CY | SBC A,(HL) | 9E | Z, H, C, N | SBC A,d8 | Вычитание с учетам заема содержимого 8-разряднога числа d8 из аккумулятора А = А - d8 - CY | SBC A,d8 | DE d8 | Z, H, C, N | SBC a,r | Вычитание с учетом заема содержимого указанного регистра из аккумулятора A = A-r-CY | SBC A,B | 98 | Z, H, C, N | SBC A,C | 99 | SBC A,D | 9A | SBC A,E | 9B | SBC A,H | 9C | SBC A,L | 9D | SBC A,A | 9F | SCF | Установка флага переноса | SCF | 37 | C | 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,B | CB C0+8*b |
| SET b,C | CB C1+8*b | SET b,D | CB C2+8*b | SET b,E | CB C3+8*b | SET b,H | CB C4+8*b | SET b,L | CB C5+8*b | SET b,A | CB C7+8*b | SLA (HL) | Арифметический сдвиг байта в ячейке памяти, адресуемой регистровой парой HL, влево | SLA (HL) | CB 26 | Z, N, H, C | SLA r | Арифметический сдвиг байта в регистре r влево | SLA B | CB 20 | Z, N, H, C | SLA C | CB 21 | SLA D | CB 22 | SLA E | CB 23 | SLA H | CB 24 | SLA L | CB 25 | SLA A | CB 27 | SRA (HL) | Арифметически сдвиг байта в ячейке памяти, адресуемой регистровой парой HL, вправо | SRA (HL) | CB 2E | Z, N, H, C | SRA r | Арифметический сдвиг байта в регистре r вправо | SRA B | CB 28 | Z, N, H, C | SRA C | CB 29 | SRA D | CB 2A | SRA E | CB 2B | SRA H | CB 2C | SRA L | CB 2D | SRA A | CB 2F | SRL (HL) | Логический сдвиг байта в ячейке памяти, адресуемой регистровой парой HL, вправо | SRL (HL) | CB 3E | Z, N, H, C | SRL r | Логический сдвиг байта в регистре r вправо | SRL B | CB 38 | Z, N, H, C | SRL C | CB 39 | SRL D | CB 3A | SRL E | CB 3B | SRL H | CB 3C | SRL L | CB 3D | SRL A | CB 3F | STOP | Выключение процессора и контроллера дисплея до нажатия кнопки на пульте | STOP | 10 | Z, N, H, C | SUB A,(HL) | Вычитание содержимого ячейки, адрес которой хранится в регистровой паре HL, из аккумулятора A=A-(HL) | SUB A,(HL) | 96 | Z, N, H, C | SUB A,d8 | Вычитание содержимого 8-разрядного числа d8 из аккумулятора A = A-d8 | SUB A,d8 | D6 d8 | Z, N, H, C | SUB A,r | Вычитание содержимого указанного регистра из аккумулятора А = А-r | SUB A,B | 90 | Z, N, H, C | SUB A,C | 91 | SUB A,D | 92 | SUB A,E | 93 | SUB A,H | 94 | SUB A,L | 95 | SUB A,A | 97 | SWAP (HL) | Обмен содержимого старшей и младшей половин байта в ячейке памяти, адресуемой регистровой парой HL | SWAP (HL) | CB 36 | Z, H, C, N | SWAP r | Обмен содержимого старшей и младшей половин байта в регистре r | SWAP B | CB 30 | Z, H, C, N | SWAP C | CB 31 | SWAP D | CB 32 | SWAP E | CB 33 | SWAP H | CB 34 | SWAP L | CB 35 | SWAP A | CB 37 | XOR (HL) | Логическое Исключающее ИЛИ содержимого аккумулятора и ячейки, адрес которой хранится в регистровой паре HL | XOR (HL) | AE | Z, H, C, N | XOR d8 | Логическое Исключающее ИЛИ содержимого аккумулятора и непосредственных данных d8 | XOR d8 | EE d8 | Z, H, C, N | XOR r | Обмен содержимого старшей и младшей половин байта в регистре r | XOR B | A8 | Z, H, C, N | XOR C | A9 | XOR D | AA | XOR E | AB | XOR H | AC | XOR L | AD | XOR A | AF | Условные обозначения: а - фиксированный адрес рестарта а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, показывающего, какой бит задействован. |