Система команд¶
Легенда¶
- OP - код операции.
- SF - суффикс (режим).
- InsType - формат инструкции (см. форматы).
- FlMask - маска флагов, которые изменяет инструкция (
*- не изменяется). - Description - описание.
Полная таблица¶
| OP | SF | Имя | InsType | FlMask | Описание |
|---|---|---|---|---|---|
00h |
00h |
NOP | S0 | ******** |
Нет операции |
01h |
00h |
HALT | S0 | ******** |
Останов тактового генератора |
02h |
00h |
ADD | A0 | ***ZOS*C |
Сложение |
02h |
01h |
ADD.b | A1 | ***ZOS*C |
Сложение с байтовой константой |
02h |
02h |
ADD.w | A2 | ***ZOS*C |
Сложение со словом |
02h |
03h |
ADD.a | A3 | ***ZOS*C |
Сложение с адресом |
03h |
00h |
ADC | A0 | ***ZOS*C |
Сложение с переносом |
04h |
00h |
SUB | A0 | ***ZOSB* |
Вычитание |
04h |
01h |
SUB.b | A1 | ***ZOSB* |
Вычитание байта |
04h |
02h |
SUB.w | A2 | ***ZOSB* |
Вычитание слова |
04h |
03h |
SUB.a | A3 | ***ZOSB* |
Вычитание адреса |
05h |
00h |
SBB | A0 | ***ZOSB* |
Вычитание с заимствованием |
06h |
00h |
MUL | A0 | ***ZOS** |
Умножение |
06h |
01h |
MUL.b | A1 | ***ZOS** |
Умножение на байт |
06h |
02h |
MUL.w | A2 | ***ZOS** |
Умножение на слово |
06h |
03h |
MUL.a | A3 | ***ZOS** |
Умножение на адрес |
07h |
00h |
IMUL | A0 | ***ZOS** |
Знаковое умножение |
07h |
01h |
IMUL.b | A1 | ***ZOS** |
Знаковое умножение на байт |
07h |
02h |
IMUL.w | A2 | ***ZOS** |
Знаковое умножение на слово |
07h |
03h |
IMUL.a | A3 | ***ZOS** |
Знаковое умножение на адрес |
08h |
00h |
DIV | A0 | ***ZOS** |
Деление |
08h |
01h |
DIV.b | A1 | ***ZOS** |
Деление на байт |
08h |
02h |
DIV.w | A2 | ***ZOS** |
Деление на слово |
08h |
03h |
DIV.a | A3 | ***ZOS** |
Деление на адрес |
09h |
00h |
IDIV | A0 | ***ZOS** |
Знаковое деление |
09h |
01h |
IDIV.b | A1 | ***ZOS** |
Знаковое деление на байт |
09h |
02h |
IDIV.w | A2 | ***ZOS** |
Знаковое деление на слово |
09h |
03h |
IDIV.a | A3 | ***ZOS** |
Знаковое деление на адрес |
0Ah |
00h |
AND | A0 | ***ZOS** |
Логическое И |
0Bh |
00h |
OR | A0 | ***ZOS** |
Логическое ИЛИ |
0Ch |
00h |
XOR | A0 | ***ZOS** |
Исключающее ИЛИ |
0Dh |
00h |
NOT | S3 | ***ZOS** |
Побитовое НЕ |
0Eh |
00h |
INC | S3 | ***ZOS*C |
Инкремент |
0Fh |
00h |
DEC | S3 | ***ZOSB* |
Декремент |
10h |
00h |
CMP | A0 | LEG***** |
Сравнение |
10h |
01h |
CMP.b | A1 | LEG***** |
Сравнение с байтом |
10h |
02h |
CMP.w | A2 | LEG***** |
Сравнение со словом |
10h |
03h |
CMP.a | A3 | LEG***** |
Сравнение с адресом |
11h |
00h |
ICMP | A0 | LEG***** |
Знаковое сравнение |
11h |
01h |
ICMP.b | A1 | LEG***** |
Знаковое сравнение с байтом |
11h |
02h |
ICMP.w | A2 | LEG***** |
Знаковое сравнение со словом |
11h |
03h |
ICMP.a | A3 | LEG***** |
Знаковое сравнение с адресом |
12h |
00h |
JMP | J0 | ******** |
Безусловный переход |
13h |
00h |
PUSH | S2 | ******** |
Положить регистр в стек |
14h |
01h |
POP | S1 | ******** |
Взять из стека в регистр |
15h |
00h |
CALL | S6 | ******** |
Вызов подпрограммы |
16h |
00h |
RET | S0 | ******** |
Возврат из подпрограммы |
17h |
00h |
MOV | D0 | ******** |
Пересылка регистр-регистр |
17h |
01h |
LDI.b | D1B | ******** |
Загрузка байтовой константы |
17h |
02h |
LDI.w | D1W | ******** |
Загрузка слова |
17h |
03h |
LDI.a | D1A | ******** |
Загрузка адреса |
18h |
04h |
STR.b | D2F | ******** |
Запись байта (flat) |
18h |
05h |
STR.b | D2S | ******** |
Запись байта (base:offset) |
18h |
07h |
STR.b | D2R | ******** |
Запись байта (adreg) |
18h |
44h |
STR.w | D2F | ******** |
Запись слова (flat) |
18h |
45h |
STR.w | D2S | ******** |
Запись слова (base:offset) |
18h |
47h |
STR.w | D2R | ******** |
Запись слова (adreg) |
18h |
84h |
STR.a | D2F | ******** |
Запись адреса (flat) |
18h |
85h |
STR.a | D2S | ******** |
Запись адреса (base:offset) |
18h |
87h |
STR.a | D2R | ******** |
Запись адреса (adreg) |
19h |
08h |
LOD.b | D3F | ******** |
Чтение байта (flat) |
19h |
09h |
LOD.b | D3S | ******** |
Чтение байта (base:offset) |
19h |
0Bh |
LOD.b | D3R | ******** |
Чтение байта (adreg) |
19h |
48h |
LOD.w | D3F | ******** |
Чтение слова (flat) |
19h |
49h |
LOD.w | D3S | ******** |
Чтение слова (base:offset) |
19h |
4Bh |
LOD.w | D3R | ******** |
Чтение слова (adreg) |
19h |
88h |
LOD.a | D3F | ******** |
Чтение адреса (flat) |
19h |
89h |
LOD.a | D3S | ******** |
Чтение адреса (base:offset) |
19h |
8Bh |
LOD.a | D3R | ******** |
Чтение адреса (adreg) |
1Ah |
00h |
LSL | A1 | ***ZOS** |
Логический сдвиг влево |
1Bh |
00h |
LSR | A1 | ***ZOS** |
Логический сдвиг вправо |
1Ch |
00h |
ASR | A1 | ***ZOS** |
Арифметический сдвиг вправо |
1Dh |
00h |
ROL | A1 | ***ZOS** |
Циклический сдвиг влево |
1Eh |
00h |
ROR | A1 | ***ZOS** |
Циклический сдвиг вправо |
1Fh |
00h |
CLI | S0 | ******** |
Запретить прерывания |
20h |
00h |
STI | S0 | ******** |
Разрешить прерывания |
21h |
00h |
LWIM | S0 | ******** |
Блокировать запись в память инструкций |
22h |
00h |
UNLWIM | S0 | ******** |
Разблокировать запись в память инструкций |
23h |
00h |
INT | S4 | ******** |
Вызвать прерывание |
24h |
00h |
IRET | S0 | ******** |
Возврат из прерывания |
25h |
00h |
WRINT | A3 | ******** |
Записать прерывание в IV |
26h |
00h |
LOCK | S1 | ******** |
Заблокировать регистр |
27h |
00h |
UNLOCK | S1 | ******** |
Разблокировать регистр |
Примечание: в некоторых инструкциях (например,
POP) суффикс в таблице микрокода указан как01h, хотя в справочнике инструкций он может отсутствовать. Это связано с тем, что суффикс определяет формат и режим, а не мнемонику.