1.1. Система команд центрального процессора игровой приставки DENDY Мнемоника | Краткое описание | Методы адресации | Запись на языке Ассемблера | Код Команды | Число байтов | Изменяемые флаги | ADC | Сложение с учётом переноса: A+d8+C. Результат в аккумуляторе A и флаге переносе C. | IMM | ADC #d8 | 69 d8 | 2 | V, N, Z, С | ZP | ADC a8 | 65 a8 | 2 | ZP,X | ADC a8, X | 75 a8 | 2 | ABS | ADC a16 | 6Da16| a16h | 3 | ABS,X | ADC a16, X | 7Da16| a16h | 3 | ABS,Y | ADC a16, Y | 79a16| a16h | 3 | IND,X | ADC (a8, X) | 61 a8 | 2 | IND,Y | ADC (a8), Y | 71 a8 | 2 | AND | Поразрядное логическое И аккумулятор и операнда | IMM | AND #d8 | 29 d8 | 2 | N, Z | ZP | AND a8 | 25 a8 | 2 | ZP,X | AND a8, X | 35 a8 | 2 | ABS | AND a16 | 2Da16| a16h | 3 | ABS,X | AND a16, X | 3Da16| a16h | 3 | ABS,Y | AND a16, Y | 39a16| a16h | 3 | IND,X | AND (a8, X) | 21 a8 | 2 | IND,Y | AND (a8), Y | 31 a8 | 2 | ASL | Арифметические сдвиг операнда влево (умножение на 2) C? бит 7…?...бит0 ? 0 | ACC | ASL A | 0A | 1 | N, Z, C | ZP | ASL a8 | 06 a8 | 2 |
| ZP,X | ASL a8, X | 16 a8 | 2 |
| ABS | ASL a16 | 0Ea16| a16h | 3 |
| ABS,X | ASL a16, X | 1Ea16| a16h | 3 |
| BCC | Переход, если флаг C=0 | REL | BCC i8 | 90 i8 | 2 |
| BCS | Переход, если флаг C=1 | REL | BCS i8 | B0 i8 | 2 |
| BEQ | Переход, если флаг Z=1 | REL | BEQ i8 | F0 i8 | 2 |
| BIT | Установка флагов соответствии с результатом выполнения по разрядного логического И над содержимым аккумулятора или операнда. Бит 6 результат копируется в флаг V, а бит 7 – в флаг N | ZP | BIT a8 | 24 a8 | 21 | N, Z, C | ABS | BIT a16 | 2Ca16| a16h | 3 |
|
|
|
| BMI | Переход, если флаг N=1 | REL | BMI i8 | 30 i8 | 2 |
| BNE | Переход, если флаг Z=0 | REL | BNE i8 | D0 i8 | 2 |
| BPL | Переход, если флаг N=0 | REL | BPL i8 | 10 i8 | 2 |
| BRK | Программное прерывание | IMPL | BRK | 00 | 1 | | | BVC | Переход, если флаг V=0 | REL | BVC i8 | 50 i8 | 2 |
| BVS | Переход, если флаг V=1 | REL | BVS i8 | 70 i8 | 2 |
| CLC | Сброс флага C | IMPL | CLC | 18 | 1 | C | CLD | Сброс флага D | IMPL | CLD | D8 | 1 | D | CLI | Сброс флага I (Разрешение прерывания) | IMPL | CLI | 58 | 1 | | | CLV | Сброс флага V | IMPL | CLV | B8 | 1 | V | CMP | Установка флагов в соответствии с результатом вычитания операнда из содержимого аккумулятора | IMM | CMP #d8 | C9 d8 | 2 | N,Z,C | ZP | CMP a8 | C5 a8 | 2 | ZP,X | CMP a8, X | D5 a8 | 2 | ABS | CMP a16 | CDa16|a16h | 3 | ABS,X | CMP a16, X | DDa16|a16h | 3 | ABS,Y | CMP a16, Y | D9a16|a16h | 3 | IND,X | CMP (a8, X) | C1 a8 | 2 | IND,Y | CMP (a8), Y | D1 a8 | 2 | CPX | Установка флагов в соответствии с результатом вычитания операнда из содержимого регистра X | IMM | CPX #d8 | E0 d8 | 2 | N,Z,C | ZP | CPX a8 | E4 d8 | 2 | ABS | CPX a16 | ECa16|a16h | 3 | CPY | Установка флагов в соответствии с результатом вычитания операнда из содержимого аккумулятора | IMM | CPY #d8 | C0 d8 | 2 | N,Z,C | ZP | CPY a8 | C4 d8 | 2 | ABS | CPY a16 | CCa16|a16h | 3 | DEC | Уменьшение операнда на 1 | ZP | DEC a8 | C6 a8 | 2 | N,Z | ZP,X | DEC a8, X | D6 a8 | 2 | ABS | DEC a16 | CEa16|a16h | 3 | ABS,X | DEC a16, X | DEa16|a16h | 3 | DEX | X=X-1 | IMPL | DEX | CA | 1 | N, Z | DEY | Y=Y-1 | IMPL | DEY | 88 | 1 | N, Z | EOR | Поразрядное Исключающее ИЛИ содержимого аккумулятора и операнда | IMM | EOR #d8 | 49 d8 | 2 | N,Z | ZP | EOR a8 | 45 a8 | 2 | ZP,X | EOR a8, X | 55 a8 | 2 | ABS | EOR a16 | 4Da16|a16h | 3 | ABS,X | EOR a16, X | 5Da16|a16h | 3 | ABS,Y | EOR a16, Y | 59a16|a16h | 3 | IND,X | EOR (a8, X) | 41 a8 | 2 | IND,Y | EOR (a8), Y | 51 a8 | 2 | INC | Уменьшение операнда на 1 | ZP | INC a8 | E6 a8 | 2 | N,Z | ZP,X | INC a8, X | F6 a8 | 2 | ABS | INC a16 | EEa16|a16h | 3 | ABS,X | INC a16, X | FEa16|a16h | 3 | INX | X=X-1 | IMPL | INX | E8 | 1 | N, Z | INY | Y=Y-1 | IMPL | INY | C8 | 1 | N, Z | JMP | Поразрядное Исключающее ИЛИ содержимого аккумулятора и операнда | ABS | JMP a16 | 4Ca16|a16h | 3 |
| IND | JMP (a16) | 6Ca16|a16h | 3 |
| JSR | Вызов подпрограммы с указанным адресом. В стеке сохраняется адрес возврата | ABS | JSR a16 | 20a16|a16h | 1 |
| LDA | Загрузка операнда в аккумулятор | IMM | LDA #d8 | A9 d8 | 2 | N,Z | ZP | LDA a8 | A5 a8 | 2 | ZP,X | LDA a8, X | B5 a8 | 2 | ABS | LDA a16 | ADa16|a16h | 3 | ABS,X | LDA a16, X | BDa16|a16h | 3 | ABS,Y | LDA a16, Y | B9a16|a16h | 3 | IND,X | LDA (a8, X) | A1 a8 | 2 | IND,Y | LDA (a8), Y | B1 a8 | 2 | LDX | Загрузка операнда в регистр X | IMM | LDX #d8 | A2 d8 | 2 | N,Z | ZP | LDX a8 | A6 a8 | 2 | ZP,Y | LDX a8, Y | B6 a8 | 2 | ABS | LDX a16 | AEa16|a16h | 3 | ABS,Y | LDX a16, Y | BEa16|a16h | 3 | LDY | Загрузка операнда в регистр Y | IMM | LDY #d8 | A0 d8 | 2 | N,Z | ZP | LDY a8 | A4 a8 | 2 | ZP,Y | LDY a8, Y | B4 a8 | 2 | ABS | LDY a16 | ACa16|a16h | 3 | ABS,Y | LDY a16, Y | BCa16|a16h | 3 | LSR | Логический сдвиг операнда вправо (деление на 2) 0?бит7...?...бит0?С | ACC | LSR #d8 | 4A | 1 | N,Z | ZP | LSR a8 | 46 a8 | 2 | ZP,X | LSR a8, Y | 56 a8 | 2 | ABS | LSR a16 | 4Ea16|a16h | 3 | ABS,X | LSR a16, Y | 5Ea16|a16h | 3 | NOP | Нет операции | IMPL | NOP | EA | 1 |
| ORA | Поразрядное логическое ИЛИ содержимого аккумулятора и операнда | IMM | ORA #d8 | 09 d8 | 2 | N,Z | ZP | ORA a8 | 05 a8 | 2 | ZP,X | ORA a8, X | 15 a8 | 2 | ABS | ORA a16 | 0Da16|a16h | 3 | ABS,X | ORA a16, X | 1Da16|a16h | 3 | ABS,Y | ORA a16, Y | 19a16|a16h | 3 | IND,X | ORA (a8, X) | 01 a8 | 2 | IND,Y | ORA (a8), Y | 11 a8 | 2 | PHA | Помещение содержимого аккумулятора в стек | IMPL | PHA | 48 | 1 |
| PHP | Помещение регистра состояния в стек | IMPL | PHP | 08 | 1 |
| PLA | Помещение байта с вершины стека в аккумулятор | IMPL | PLA | 68 | 1 |
| PLP | Помещение байта с вершины стека в регистр состояния | IMPL | PLP | 28 | 1 | Все флаги | ROL | Циклический сдвиг операнда влево С? бит7...?...бит 0 ? С | ACC | ROL A | 2A d8 | 2 | N,Z, C | ZP | ROL a8 | 26 a8 | 2 | ZP,X | ROL a8, X | 36 a8 | 2 | ABS | ROL a16 | 2Ea16|a16h | 3 | ABS,X | ROL a16, X | 3Ea16|a16h | 3 | ROR | Циклический сдвиг операнда вправо С? бит7...?... бит0 ? С | ACC | ROR A | 6A d8 | 2 | N,Z, C | ZP | ROR a8 | 66 a8 | 2 | ZP,X | ROR a8, X | 76 a8 | 2 | ABS | ROR a16 | 6Ea16|a16h | 3 | ABS,X | ROR a16, X | 7Ea16|a16h | 3 | RTI | Возврат из прерывания | IMPL | RTI | 40 | 1 | Все флаги | RTS | ВВозврат из подпрограммы | IMPL | RTS | 60 | 1 |
| SBC | Вычитание операнда из содержимого аккумулятора с учетом переноса | IMM | SBC #d8 | E9 d8 | 2 | N,V, Z, C | ZP | SBC a8 | E5 a8 | 2 | ZP,X | SBC a8, X | F5 a8 | 2 | ABS | SBC a16 | EDa16|a16h | 3 | ABS,X | SBC a16, X | FDa16|a16h | 3 | ABS,Y | SBC a16, Y | F9a16|a16h | 3 | IND,X | SBC (a8, X) | E1 a8 | 2 | IND,Y | SBC (a8), Y | F1 a8 | 2 | SEC | Установка флага С | IMPL | SEC | 38 | 1 | C | SED | Установка флага D | IMPL | SED | F8 | 1 | D | SEI | Установка флага | (запрещение прерываний) | IMPL | SEI | 78 | 1 | | | STA | Запись содержимого аккумулятора в память | ZP | STA a8 | 85 a8 | 2 |
| ZP,X | STA a8, X | 95 a8 | 2 | ABS | STA a16 | 8Da16|a16h | 3 | ABS,X | STA a16, X | 9Da16|a16h | 3 | ABS,Y | STA a16, Y | 99a16|a16h | 3 | IND,X | STA (a8, X) | 81 a8 | 2 | IND,Y | STA (a8), Y | 91 a8 | 2 | STX | Запись содержимого регистра Y в память | ZP | STX a8 | 86 a8 | 2 |
| ZP,Y | STX a8, Y | 96 a8 | 2 | ABS | STX a16 | 8Ea16|a16h | 3 | STY | Запись содержимого регистра X в память | ZP | STY a8 | 84 a8 | 2 |
| ZP,X | STY a8, Y | 94 a8 | 2 | ABS | STY a16 | 8Ca16|a16h | 3 | TAX | Пересылка содержимого аккумулятора в регистр X | IMPL | TAX | AA | 1 | N, Z | TAY | Пересылка содержимого аккумулятора в регистр Y | IMPL | TAY | A8 | 1 | N, Z | TSX | Пересылка содержимого указателя стека в регистр X | IMPL | TSX | BA | 1 | N, Z | TXA | Пересылка содержимого регистра X в аккумулятор | IMPL | TXA | 8A | 1 | N, Z | TXS | Пересылка содержимого регистра X в указатель стека | IMPL | TXS | 9A | 1 |
| TYA | Пересылка содержимого регистра Y в аккумулятор | IMPL | TYA | 98 | 1 | N, Z | МЕТОДЫ АДРЕСАЦИИ: ABS - ПРЯМАЯ, УКАЗЫВАЕТСЯ ПОЛНЫЙ 16-РАЗРЯДНЫЙ АДРЕС ОПЕРАНДА: ABS,X - ИНДЕКСИРОВАННАЯ ПО X, УКАЗЫВАЕТСЯ БАЗОВЫЙ 16-РАЗРЯДНЫЙ АДРЕС, К КОТОРОМУ ПРИБАВЛЯЕТСЯ СМЕЩЕНИЕ ИЗ РЕГИСТРА X; ABS,Y - ИНДЕКСИРОВАННАЯ ПО Y, УКАЗЫВАЕТСЯ БАЗОВЫЙ 16-РАЗРЯДНЫЙ АДРЕС, К КОТОРОМУ ПРИБАВЛЯЕТСЯ СМЕЩЕНИЕ ИЗ РЕГИСТРА Y АСС - АККУМУЛЯТОРНАЯ, ОПЕРАНД В РЕГИСТРЕ А ПРОЦЕССОРА. IMM - НЕПОСРЕДСТВЕННАЯ, 8-РАЗРЯДНЫЙ ОПЕРАНД РАСПОЛОЖЕН СРАЗУ ЗА КОДОМ КОМАНДЫ. IMPL - НЕЯВНАЯ, ОПЕРАНДЫ НЕ УКАЗЫВАЮТСЯ. IND - КОСВЕННАЯ, ЗАДАЕТСЯ АДРЕС ЯЧЕЙКИ ПАМЯТИ, В КОТОРОЙ ХРАНИТСЯ АДРЕС ОПЕРАНДА: IND,X - ИНДЕКСНО-КОСВЕННАЯ, УКАЗЫВАЕТСЯ 8-РАЗРЯДНЫЙ АДРЕС В НУЛЕВОЙ СТРАНИЦЕ, К КОТОРОМУ ПРИБАВЛЯЕТСЯ СОДЕРЖИМОЕ РЕГИСТРА X, ПОСЛЕ ЧЕГО ИЗ ЯЧЕЙКИ ПАМЯТИ С ВЫЧИСЛЕННЫМ АДРЕСОМ ИЗВЛЕКАЕТСЯ ПОЛНЫЙ 16-РАЗРЯДНЫЙ АДРЕС ОПЕРАНДА; IND,Y - КОСВЕННО-ИНДЕКСНАЯ, В НУЛЕВОЙ СТРАНИЦЕ УКАЗЫВАЕТСЯ 8-РАЗРЯДНЫЙ АДРЕС, ПОСЛЕ ЧЕГО ИЗ ЗАДАННОЙ ЯЧЕЙКИ ПАМЯТИ СЧИТЫВАЕТСЯ 16-РАЗРЯДНЫЙ БАЗОВЫЙ АДРЕС, К КОТОРОМУ ПРИБАВЛЯЕТСЯ СОДЕРЖИМОЕ РЕГИСТРА Y, И ИЗ ЯЧЕЙКИ С ВЫЧИСЛЕННЫМ АДРЕСОМ ИЗВЛЕКАЕТСЯ ОПЕРАНД; REL - ОТНОСИТЕЛЬНАЯ, В КОМАНДЕ УКАЗЫВАЕТСЯ 8-РАЗРЯДНОЕ СМЕЩЕНИЕ ОТНОСИТЕЛЬНО СОДЕРЖИМОГО СЧЕТЧИКА КОМАНД PC; ZP - АДРЕСАЦИЯ НУЛЕВОЙ СТРАНИЦЫ, В КОМАНДЕ ЗАДАЕТСЯ 8-РАЗРЯДНЫЙ АДРЕС, ОПРЕДЕЛЯЮЩИЙ ЯЧЕЙКУ ПАМЯТИ НУЛЕВОЙ СТРАНИЦЫ, ГДЕ ХРАНИТСЯ ОПЕРАНД; ZP,X - ИНДЕКСИРОВАННАЯ ПО X АДРЕСАЦИЯ НУЛЕВОЙ СТРАНИЦЫ, УКАЗЫВАЕТСЯ 8-РАЗРЯДНЫЙ БАЗОВЫЙ АДРЕС В НУЛЕВОЙ СТРАНИЦЕ, К КОТОРОМУ ПРИБАВЛЯЕТСЯ СОДЕРЖИМОЕ РЕГИСТРА X, И ИЗ ЯЧЕЙКИ ПАМЯТИ С ВЫЧИСЛЕННЫМ АДРЕСОМ ИЗВЛЕКАЕТСЯ ОПЕРАНД; ZP,Y - ИНДЕКСИРОВАННАЯ ПО Y АДРЕСАЦИЯ НУЛЕВОЙ СТРАНИЦЫ, В НУЛЕВОЙ СТРАНИЦЕ УКАЗЫВАЕТСЯ 8-РАЗРЯДНЫЙ БАЗОВЫЙ АДРЕС, К КОТОРОМУ ПРИБАВЛЯЕТСЯ СОДЕРЖИМОЕ РЕГИСТРА Y, И ИЗ ЯЧЕЙКИ ПАМЯТИ С ВЫЧИСЛЕННЫМ АДРЕСОМ ИЗВЛЕКАЕТСЯ ОПЕРАНД. УСЛОВНЫЕ ОБОЗНАЧЕНИЯ: А16 - 16-РАЗРЯДНЫЙ АДРЕС AL6H - СТАРШИЙ БАЙТ 16-РАЗРЯДНОГО АДРЕСА AL6L - МЛАДШИЙ БАЙТ 16-РАЗРЯДНОГО АДРЕСА А8 - 8-РАЗРЯДНЫЙ АДРЕС В НУЛЕВОЙ СТРАНИЦЕ D8 - НЕПОСРЕДСТВЕННЫЙ 8-РАЗРЯДНЫЙ ОПЕРАНД I8 - 8-РАЗРЯДНОЕ СМЕЩЕНИЕ В ДИАПАЗОНЕ ОТ -128 ДО 127 |