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

Вторая версия набора команд, в которой убраны 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 Возврат из процедуры