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

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