, в которой убраны 3х операндные инструкции, поскольку в них не было необходимости.
# | Перемещения |
00 |
MOV |
A,u32 |
** AA |
Загрузка 32-битного значения в регистр A |
01 |
MOV |
A,B |
BB AA |
Загрузка регистра B в регистр A |
02 |
MOVU |
A,u8 |
** AA |
Загрузка 8-битного беззнакового значения в регистр A |
03 |
MOVS |
A,s8 |
** AA |
Загрузка 8-битного знакового значения в регистр A |
04 |
MOVB |
A,[B] |
BB AA |
Извлечь байт из памяти и запись в A с очисткой старших 24 бит в 0 |
05 |
MOVW |
A,[B] |
BB AA |
Извлечь слово из памяти и запись в A с очисткой старших 16 бит в 0 |
06 |
MOVD |
A,[B] |
BB AA |
Извлечь байт из памяти и запись в A с очисткой старших 24 бит в 0 |
07 |
MOVB |
[A],B |
BB AA |
Запись младших 8 бит регистра B в память A |
08 |
MOVB |
[A],B |
BB AA |
Запись младших 16 бит регистра B в память A |
09 |
MOVB |
[A],B |
BB AA |
Запись младших 32 бит регистра B в память A |
0A |
COPY |
A,B,C |
AA BB CC |
Скопировать из адреса A в адрес B, количество копирований C |
# | Арифметика |
0B |
MUL |
A,B |
AA BB |
Умножение числа A x B => A |
0C |
DIV |
A,B |
AA BB |
Деление числа A / B, результат в A, остаток B |
# | Стековые |
0B |
PUSH |
regs |
nn ... |
Запись nn регистров в стек, номера их следуют за параметром nn |
0C |
POP |
regs |
nn ... |
Извлечение из стека nn регистров, номера их следуют за параметром nn |
0D |
CALL |
u32 |
** |
Вызов процедуры по адресу 32 бит |
0E |
CALL |
A |
AA |
Вызов процедуры по адресу значения регистра A |
0F |
RET |
|
|
Возврат из процедуры |
# | АЛУ |
10 |
ADD |
A,B |
AA BB |
Сложить A+B и записать в A |
11 |
ADC |
A,B |
AA BB |
Сложить A+B с заемом и записать в A |
12 |
SUB |
A,B |
AA BB |
Вычесть A-B и записать в A |
13 |
SBC |
A,B |
AA BB |
Вычесть A-B с заемом и записать в A |
14 |
AND |
A,B |
AA BB |
Побитовое A & B, записать в A |
15 |
XOR |
A,B |
AA BB |
Побитовое A ^ B, записать в A |
16 |
OR |
A,B |
AA BB |
Побитовое A | B, записать в A |
17 |
CMP |
A,B |
AA BB |
Вычесть A-B, но записать только флаги |
# | Сдвиговые |
18 |
ROL |
A,B |
AA BB |
Циклический сдвиг регистра A влево |
19 |
ROR |
A,B |
AA BB |
Циклический сдвиг регистра A вправо |
1A |
SHL |
A,B |
AA BB |
Логический сдвиг регистра A влево |
1B |
SHR |
A,B |
AA BB |
Логический сдвиг регистра A вправо |
1C |
RCL |
A,B |
AA BB |
Сдвиг регистра A влево, заполняя младшие биты значением CF |
1D |
RCR |
A,B |
AA BB |
Сдвиг регистра A вправо, заполняя старшие биты значением CF |
1E |
INC |
A,s |
AA ** |
Добавить к регистру A знаковое число s8 |
1F |
SAR |
A,B |
AA BB |
Сдвиг регистра A вправо, заполняя старшие биты значением старшего 31-го бита |
# | Переходы |
20 |
JR |
b8 |
** |
Короткий переход -128..127 |
21 |
JP |
b16 |
** |
Средний переход -32768..32767 |
22 |
JMP |
u32 |
** |
Перейти по 32-х битному адресу |
23 |
JMP |
A |
AA |
Перейти на адрес, указанный в регистре A |
24 |
JC |
b8 |
** |
Короткий переход если CF=1 |
25 |
JNC |
b8 |
** |
Короткий переход если CF=0 |
26 |
JZ |
b8 |
** |
Короткий переход если ZF=1 |
27 |
JNZ |
b8 |
** |
Короткий переход если ZF=1 |
28 |
JBE |
b8 |
** |
Короткий переход если CF=1 AND ZF=1 |
29 |
JA |
b8 |
** |
Короткий переход если CF=0 OR ZF=0 |
2A |
JS |
b8 |
** |
Короткий переход если SF=1 |
2B |
JNS |
b8 |
** |
Короткий переход если SF=0 |
2C |
JL |
b8 |
** |
Короткий переход если SF!=OF :: A < B |
2D |
JNL |
b8 |
** |
Короткий переход если SF=OF :: A >= B |
2E |
JLE |
b8 |
** |
Короткий переход если SF!=OF OR ZF=1 :: A <= B |
2F |
JG |
b8 |
** |
Короткий переход если SF=OF AND ZF=0 :: A > B |