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