§ Коды инструкции
Битовая маска | Код | Op1 | Op2 | Описание |
---|---|---|---|---|
Прерывания | ||||
0 000 000 000 000 000 | HALT | Вызов прерывания по адресу 4 | ||
0 000 000 000 000 001 | WAIT | Остановить процессор до следующего прерывания | ||
0 000 000 000 000 010 | RTI | Возврат из прерывания | ||
0 000 000 000 000 101 | RESET | Пересброс процессора | ||
0 000 000 000 000 110 | RTT | Возврат из отладочного прерывания | ||
0 000 000 000 000 011 | BPT | Вызов прерывания 12 | ||
0 000 000 000 000 100 | IOT | Вызов прерывания 16 | ||
1 000 100 0xx xxx xxx | EMT | x | Вызов прерывания 24 | |
1 000 100 1xx xxx xxx | TRAP | x | Вызов прерывания 34 | |
Управляющие | ||||
0 000 000 001 ddd ddd | JMP | d | Переход по эффективному адресу | |
0 000 000 010 000 rrr | RTS | r | Возврат из процедуры, адрес хранится в регистре | |
0 000 000 010 10c ccc | CCC | c | Сбросить флаг или группу флагов, указанную в `cccc` | |
0 000 000 010 11c ccc | SCC | c | Установить флаг или группу | |
0 000 000 011 ddd ddd | SWAB | d | Перестановка байтов в слове местами | |
0 000 100 rrr ddd ddd | JSR | r | d | Вызов подпрограммы, запомнить адрес возврата в регистр |
Условные переходы | ||||
0 000 000 1bb bbb bbb | BR | b | Безусловный переход по диапазону -256,254..252,254 | |
0 000 001 0bb bbb bbb | BNE | b | Переход, если Z=0 | |
0 000 001 1bb bbb bbb | BEQ | b | Переход, если Z=1 | |
0 000 010 0bb bbb bbb | BGE | b | Переход, если N=V | |
0 000 010 1bb bbb bbb | BLT | b | Переход, если N<>V | |
0 000 011 0bb bbb bbb | BGT | b | Переход, если N=V и Z=0 | |
0 000 011 1bb bbb bbb | BLE | b | Переход, если N<>V или Z=1 | |
1 000 000 0bb bbb bbb | BPL | b | Переход, если N=0 | |
1 000 000 1bb bbb bbb | BMI | b | Переход, если N=1 | |
1 000 001 0bb bbb bbb | BHI | b | Переход, если C=0 и Z=0 | |
1 000 001 1bb bbb bbb | BLOS | b | Переход, если C=1 или Z=1 | |
1 000 010 0bb bbb bbb | BVC | b | Переход, если V=0 | |
1 000 010 1bb bbb bbb | BVS | b | Переход, если V=1 | |
1 000 011 0bb bbb bbb | BCC | b | Переход, если C=0 | |
1 000 011 1bb bbb bbb | BCS | b | Переход, если C=1 | |
Арифметика (слова) | ||||
* 000 101 000 ddd ddd | CLR(B) | d | Обнулить операнд. Если *=1 то операнд будет байтом | |
* 000 101 001 ddd ddd | COM(B) | d | Инвертировать биты в операнде (^FF или ^FFFF) | |
* 000 101 010 ddd ddd | INC(B) | d | Увеличить +1 | |
* 000 101 011 ddd ddd | DEC(B) | d | Уменьшить -1 | |
* 000 101 100 ddd ddd | NEG(B) | d | Изменить знак операнда, op=-op | |
* 000 101 101 ddd ddd | ADC(B) | d | Добавить к операнду флаг C | |
* 000 101 110 ddd ddd | SBC(B) | d | Вычесть из операнда флаг C | |
* 000 101 111 ddd ddd | TST(B) | d | Тестирование операнда и установка флагов Z,N; флаги V,C сбрасываются в 0 | |
Сдвиг (слова) | ||||
* 000 110 000 ddd ddd | ROR(B) | d | Циклический сдвиг вправо | |
* 000 110 001 ddd ddd | ROL(B) | d | Циклический сдвиг влево | |
* 000 110 010 ddd ddd | ASR(B) | d | Арифметически сдвиг вправо, в бите 14(6) появляется бит 15(7) | |
* 000 110 011 ddd ddd | ASL(B) | d | Арифметически сдвиг влево | |
Специальная арифметика | ||||
0 111 100 rrr ddd ddd | XOR | r | d | Исключающее ИЛИ с регистром R(приемник) и D |
0 111 111 rrr nnn nnn | SOB | r | n | Уменьшение R-- и если не 0, то переход на N назад |
Перемещения и логика (слова) | ||||
* 001 sss sss ddd ddd | MOV(B) | s | d | Переместить байт или слово из D в S |
* 010 sss sss ddd ddd | CMP(B) | s | d | Сравнить S и D через вычитание |
* 011 sss sss ddd ddd | BIT(B) | s | d | Проверка разряда номера S в операнде D через логическое умножение |
* 100 sss sss ddd ddd | BIC(B) | s | d | Сброс разряда, указанного в S в операнде D, побитово |
* 101 sss sss ddd ddd | BIS(B) | s | d | Установка разряда, указанного в S в операнде D, побитово |
0 110 sss sss ddd ddd | ADD | s | d | Сложение S+D и сохранение в D |
1 110 sss sss ddd ddd | SUB | s | d | Вычитание S-D и сохранение в D |
Разное | ||||
0 000 110 100 ddd ddd | MARK | d | При возврате из подпрограммы производится очистка стека от параметров, переданных подпрограмме | |
0 000 110 111 ddd ddd | SXT | d | Расширение знака, если N=1, то операнд становится $FFFF, иначе $0000 | |
1 000 110 100 ddd ddd | MTPS | d | Загрузка нового значения в PSW из операнда D | |
1 000 110 111 ddd ddd | MFPS | d | Загрузка в операнд D значения PSW |
3 окт, 2020
© 2007-2023 Права - это когда правый хук