Перейти к содержанию

Система команд

Легенда

  • OP - код операции.
  • SF - суффикс (режим).
  • InsType - формат инструкции (см. форматы).
  • FlMask - маска изменяемых флагов (см. флаги).
  • Description - краткое описание.

Режимы адрессации

  • Absolute (Абсолютная) - addr = imm32
  • Index (Индексная) - addr = reg + reg
  • Indirect (Косвенная) - addr = reg
  • Index+disp (Индексная со смещением) - addr = reg + reg + disp8
  • Indirect+disp (Косвенная со смещением) - addr = reg + reg + disp8

Полная таблица

OP SF Имя InsType FlMask Описание
00h - NOP S0 -------- Нет операции
01h - HALT S0 -------- Останов тактового генератора
02h - WAIT S0 -------- Ожидание прерывания (IRQ)
03h 00h ADD A0 ---ZOS-C Сложение
03h 01h ADD.b A1 ---ZOS-C Сложение с байтовой константой
03h 02h ADD.w A2 ---ZOS-C Сложение со словом
03h 03h ADD.dw A3 ---ZOS-C Сложение с dword
04h 00h ADC A0 ---ZOS-C Сложение с переносом
04h 01h ADC.b A1 ---ZOS-C ADC с байтовой константой
04h 02h ADC.w A2 ---ZOS-C ADC со словом
04h 03h ADC.dw A3 ---ZOS-C ADC с dword
05h 00h SUB A0 ---ZOSB- Вычитание
05h 01h SUB.b A1 ---ZOSB- SUB с байтовой константой
05h 02h SUB.w A2 ---ZOSB- SUB со словом
05h 03h SUB.dw A3 ---ZOSB- SUB с dword
06h 00h SBB A0 ---ZOSB- Вычитание с заимствованием
06h 01h SBB.b A1 ---ZOSB- SBB с байтовой константой
06h 02h SBB.w A2 ---ZOSB- SBB со словом
06h 03h SBB.dw A3 ---ZOSB- SBB с dword
07h 00h MUL A0 ---ZOS-- Умножение
07h 01h MUL.b A1 ---ZOS-- MUL с байтовой константой
07h 02h MUL.w A2 ---ZOS-- MUL со словом
07h 03h MUL.dw A3 ---ZOS-- MUL с dword
08h 00h IMUL A0 ---ZOS-- Знаковое умножение
08h 01h IMUL.b A1 ---ZOS-- IMUL с байтовой константой
08h 02h IMUL.w A2 ---ZOS-- IMUL со словом
08h 03h IMUL.dw A3 ---ZOS-- IMUL с dword
09h 00h DIV A0 ---ZOS-- Деление
09h 01h DIV.b A1 ---ZOS-- DIV с байтовой константой
09h 02h DIV.w A2 ---ZOS-- DIV со словом
09h 03h DIV.dw A3 ---ZOS-- DIV с dword
0Ah 00h IDIV A0 ---ZOS-- Знаковое деление
0Ah 01h IDIV.b A1 ---ZOS-- IDIV с байтовой константой
0Ah 02h IDIV.w A2 ---ZOS-- IDIV со словом
0Ah 03h IDIV.dw A3 ---ZOS-- IDIV с dword
0Bh - NOT S3 ---ZOS-- Побитовое НЕ
0Ch - INC S3 ---ZOS-C Инкремент
0Dh - DEC S3 ---ZOSB- Декремент
0Eh - PUSH S2 -------- Положить в стек
0Fh - POP S1 -------- Взять из стека
10h - CALL S6 -------- Вызов подпрограммы (относительный)
11h - CALLR S2 -------- Вызов подпрограммы (по регистру)
12h - CLABS S6 -------- Вызов подпрограммы (абсолютный)
13h - RET S0 -------- Возврат из подпрограммы
14h - LSL H0 ---ZOS-- Логический сдвиг влево
15h - LSR H0 ---ZOS-- Логический сдвиг вправо
16h - ASR H0 ---ZOS-- Арифметический сдвиг вправо
17h - ROL H0 ---ZOS-- Циклический сдвиг влево
18h - ROR H0 ---ZOS-- Циклический сдвиг вправо
19h 00h AND A0 ---ZOS-- Логическое И
1Ah 00h OR A0 ---ZOS-- Логическое ИЛИ
1Bh 00h XOR A0 ---ZOS-- Исключающее ИЛИ
1Ch 00h CMP A0 LEGZOSB- Сравнение
1Ch 01h CMP.b A1 LEGZOSB- CMP с байтовой константой
1Ch 02h CMP.w A2 LEGZOSB- CMP со словом
1Ch 03h CMP.dw A3 LEGZOSB- CMP с dword
1Dh 00h ICMP A0 LEGZOSB- Знаковое сравнение
1Dh 01h ICMP.b A1 LEGZOSB- ICMP с байтовой константой
1Dh 02h ICMP.w A2 LEGZOSB- ICMP со словом
1Dh 03h ICMP.dw A3 LEGZOSB- ICMP с dword
1Eh - JMP J0 -------- Переход (относительный)
1Fh - JMPR J1 -------- Переход (по регистру)
20h - JMA J0 -------- Переход (абсолютный)
21h 00h COPY D0 -------- Копирование регистр-регистр
21h 01h LDI.B D1B -------- Загрузка байтовой константы
21h 02h LDI.W D1W -------- Загрузка слова
21h 03h LDI.DW D1DW -------- Загрузка dword
22h 00h STR.B D2F -------- Запись байта (absolute)
22h 01h STR.B D2S -------- Запись байта (index)
22h 02h STR.B D2R -------- Запись байта (indirect)
22h 03h STR.B D2SD -------- Запись байта (index+disp)
22h 04h STR.B D2RD -------- Запись байта (indirect+disp)
22h 05h STR.W D2F -------- Запись слова (absolute)
22h 06h STR.W D2S -------- Запись слова (index)
22h 07h STR.W D2R -------- Запись слова (indirect)
22h 08h STR.W D2SD -------- Запись слова (index+disp)
22h 09h STR.W D2RD -------- Запись слова (indirect+disp)
22h 0Ah STR.DW D2F -------- Запись dword (absolute)
22h 0Bh STR.DW D2S -------- Запись dword (index)
22h 0Ch STR.DW D2R -------- Запись dword (indirect)
22h 0Dh STR.DW D2SD -------- Запись dword (index+disp)
22h 0Eh STR.DW D2RD -------- Запись dword (indirect+disp)
23h 00h LOD.B D3F -------- Чтение байта (absolute)
23h 01h LOD.B D3S -------- Чтение байта (index)
23h 02h LOD.B D3R -------- Чтение байта (indirect)
23h 03h LOD.B D3SD -------- Чтение байта (index+disp)
23h 04h LOD.B D3RD -------- Чтение байта (indirect+disp)
23h 05h LOD.W D3F -------- Чтение слова (absolute)
23h 06h LOD.W D3S -------- Чтение слова (index)
23h 07h LOD.W D3R -------- Чтение слова (indirect)
23h 08h LOD.W D3SD -------- Чтение слова (index+disp)
23h 09h LOD.W D3RD -------- Чтение слова (indirect+disp)
23h 0Ah LOD.DW D3F -------- Чтение dword (absolute)
23h 0Bh LOD.DW D3S -------- Чтение dword (index)
23h 0Ch LOD.DW D3R -------- Чтение dword (indirect)
23h 0Dh LOD.DW D3SD -------- Чтение dword (index+disp)
23h 0Eh LOD.DW D3RD -------- Чтение dword (indirect+disp)
25h - INT S4 -------- Программное прерывание
26h - IRET S0 -------- Возврат из прерывания
27h - CLI S0 -------- Запретить прерывания
28h - STI S0 -------- Разрешить прерывания
29h 00h REM A0 ---ZOS-- Остаток от деления
29h 01h REM.b A1 ---ZOS-- REM с байтовой константой
29h 02h REM.w A2 ---ZOS-- REM со словом
29h 03h REM.dw A3 ---ZOS-- REM с dword
2Ah 00h IREM A0 ---ZOS-- Знаковый остаток от деления
2Ah 01h IREM.b A1 ---ZOS-- IREM с байтовой константой
2Ah 02h IREM.w A2 ---ZOS-- IREM со словом
2Ah 03h IREM.dw A3 ---ZOS-- IREM с dword

Группы инструкций

  • Управление: NOP, HALT, WAIT.
  • Арифметика: ADD, ADC, SUB, SBB, MUL, IMUL, DIV, IDIV, REM, IREM, INC, DEC.
  • Логика: AND, OR, XOR, NOT.
  • Сдвиги: LSL, LSR, ASR, ROL, ROR.
  • Сравнение: CMP, ICMP.
  • Переходы: JMP, JMPR, JMA, CALL, CALLR, CLABS, RET.
  • Память: COPY, LDI, STR, LOD.
  • Стек: PUSH, POP.
  • Прерывания: INT, IRET, CLI, STI.