§ Коды инструкции

Битовая маска Код Op1 Op2 Описание
Прерывания
0 000 000 000 000 000HALT Вызов прерывания по адресу 4
0 000 000 000 000 001WAIT Остановить процессор до следующего прерывания
0 000 000 000 000 010RTI Возврат из прерывания
0 000 000 000 000 101RESET Пересброс процессора
0 000 000 000 000 110RTT Возврат из отладочного прерывания
0 000 000 000 000 011BPT Вызов прерывания 12
0 000 000 000 000 100IOT Вызов прерывания 16
1 000 100 0xx xxx xxxEMTx Вызов прерывания 24
1 000 100 1xx xxx xxxTRAPx Вызов прерывания 34
Управляющие
0 000 000 001 ddd dddJMPd Переход по эффективному адресу
0 000 000 010 000 rrrRTSr Возврат из процедуры, адрес хранится в регистре
0 000 000 010 10c cccCCCc Сбросить флаг или группу флагов, указанную в `cccc`
0 000 000 010 11c cccSCCc Установить флаг или группу
0 000 000 011 ddd dddSWABd Перестановка байтов в слове местами
0 000 100 rrr ddd dddJSRrd Вызов подпрограммы, запомнить адрес возврата в регистр
Условные переходы
0 000 000 1bb bbb bbbBRb Безусловный переход по диапазону -256,254..252,254
0 000 001 0bb bbb bbbBNEb Переход, если Z=0
0 000 001 1bb bbb bbbBEQb Переход, если Z=1
0 000 010 0bb bbb bbbBGEb Переход, если N=V
0 000 010 1bb bbb bbbBLTb Переход, если N<>V
0 000 011 0bb bbb bbbBGTb Переход, если N=V и Z=0
0 000 011 1bb bbb bbbBLEb Переход, если N<>V или Z=1
1 000 000 0bb bbb bbbBPLb Переход, если N=0
1 000 000 1bb bbb bbbBMIb Переход, если N=1
1 000 001 0bb bbb bbbBHIb Переход, если C=0 и Z=0
1 000 001 1bb bbb bbbBLOSb Переход, если C=1 или Z=1
1 000 010 0bb bbb bbbBVCb Переход, если V=0
1 000 010 1bb bbb bbbBVSb Переход, если V=1
1 000 011 0bb bbb bbbBCCb Переход, если C=0
1 000 011 1bb bbb bbbBCSb Переход, если C=1
Арифметика (слова)
* 000 101 000 ddd dddCLR(B)d Обнулить операнд. Если *=1 то операнд будет байтом
* 000 101 001 ddd dddCOM(B)d Инвертировать биты в операнде (^FF или ^FFFF)
* 000 101 010 ddd dddINC(B)d Увеличить +1
* 000 101 011 ddd dddDEC(B)d Уменьшить -1
* 000 101 100 ddd dddNEG(B)d Изменить знак операнда, op=-op
* 000 101 101 ddd dddADC(B)d Добавить к операнду флаг C
* 000 101 110 ddd dddSBC(B)d Вычесть из операнда флаг C
* 000 101 111 ddd dddTST(B)d Тестирование операнда и установка флагов Z,N; флаги V,C сбрасываются в 0
Сдвиг (слова)
* 000 110 000 ddd dddROR(B)d Циклический сдвиг вправо
* 000 110 001 ddd dddROL(B)d Циклический сдвиг влево
* 000 110 010 ddd dddASR(B)d Арифметически сдвиг вправо, в бите 14(6) появляется бит 15(7)
* 000 110 011 ddd dddASL(B)d Арифметически сдвиг влево
Специальная арифметика
0 111 100 rrr ddd dddXORrd Исключающее ИЛИ с регистром R(приемник) и D
0 111 111 rrr nnn nnnSOBrn Уменьшение R-- и если не 0, то переход на N назад
Перемещения и логика (слова)
* 001 sss sss ddd dddMOV(B)sd Переместить байт или слово из D в S
* 010 sss sss ddd dddCMP(B)sd Сравнить S и D через вычитание
* 011 sss sss ddd dddBIT(B)sd Проверка разряда номера S в операнде D через логическое умножение
* 100 sss sss ddd dddBIC(B)sd Сброс разряда, указанного в S в операнде D, побитово
* 101 sss sss ddd dddBIS(B)sd Установка разряда, указанного в S в операнде D, побитово
0 110 sss sss ddd dddADDsd Сложение S+D и сохранение в D
1 110 sss sss ddd dddSUBsd Вычитание S-D и сохранение в D
Разное
0 000 110 100 ddd dddMARKd При возврате из подпрограммы производится очистка стека от параметров, переданных подпрограмме
0 000 110 111 ddd dddSXTd Расширение знака, если N=1, то операнд становится $FFFF, иначе $0000
1 000 110 100 ddd dddMTPSd Загрузка нового значения в PSW из операнда D
1 000 110 111 ddd dddMFPSd Загрузка в операнд D значения PSW

3 окт, 2020
© 2007-2022 Мутил психический запад