Формат инструкций: <destination> <source>
Примечания :
длина определяется в машинных словах
M обозначает обращение к памяти данных
Мнемоника
Синтаксис
Семантика
Длина
mov
mov rd, rs
rd <- rs
1
mov rd, [rs]
rd <- M[rs]
1
mov [rd], rs
M[rd] <- rs
1
mov rd, imm
rd <- imm
2
mov rd, [imm]
rd <- M[imm]
2
mov [imm], rs
M[imm] <- rs
2
mov rd, [rs+imm]
rd <- M[rs+imm]
2
mov [rd+imm], rs
M[rd+imm] <- rs
2
push_ds
push rs
SP <- SP-4M[SP] <- rs
1
push imm
SP <- SP-4M[SP] <- imm
2
pop_ds
pop rd
rd <- M[SP]SP <- SP+4
1
push_rs
push rs
RP <- RP-4M[RP] <- rs
1
push imm
RP <- RP-4M[RP] <- imm
2
pop_rs
pop rd
rd <- M[RP]RP <- RP+4
1
ret
ret
PC <- M[RP]RP <- RP+4
1
Мнемоника
Синтаксис
Семантика
Длина
add
add rd, rs1, rs2
rd <- rs1 + rs2
1
add rd, rs1, imm
rd <- rs1 + imm
2
adc
adc rd, rs1, rs2
rd <- rs1 + rs2 + CF
1
adc rd, rs1, imm
rd <- rs1 + imm + CF
2
sub
sub rd, rs1, rs2
rd <- rs1 – rs2
1
sub rd, rs1, imm
rd <- rs1 – imm
2
mul
mul rd, rs1, rs2
rd <- rs1 * rs2
1
div
div rd, rs1, rs2
rd <- rs1 / rs2
1
mod
mod rd, rs1, rs2
rd <- rs1 % rs2
1
neg
neg rd, rs1
rd <- -rs1
1
cmp
cmp rs1, rs2
SR <- NZVC
1
Мнемоника
Синтаксис
Семантика
Длина
and
and rd, rs1, rs2
rd <- rs1 & rs2
1
and rd, rs1, imm
rd <- rs1 & imm
2
or
or rd, rs1, rs2
rd <- rs1 | rs2
1
or rd, rs1, imm
rd <- rs1 | imm
2
xor
xor rd, rs1, rs2
rd <- rs1 ^ rs2
1
xor rd, rs1, imm
rd <- rs1 ^ imm
2
not
not rd, rs1
rd <- !rs1
1
xor rd, imm
rd <- !imm
2
Операции управления потоком (условные и безусловные переходы)
Семантика для описанных ниже операций идентична: PC <- addr, если условия выполняются
Мнемоника
Синтаксис
Условия
Длина
jmp
jmp addr
Безусловный
2
jcc
jcc addr
CF == 0
2
jcs
jcs addr
CF == 1
2
jeq
jeq addr
ZF == 1
2
jne
jne addr
ZF == 0
2
jlt
jlt addr
NF != VF
2
jgt
jgt addr
ZF == 0 && NF == VF
2
jle
jle addr
ZF == 1 || NF != VF
2
jge
jge addr
NF == VF
2
Операции управления процессором
Мнемоника
Описание
Длина
halt
Остановка выполнения процессора
1
nop
Ничего
1
Мнемоника
Синтаксис
Семантика
Длина
out
out <port>
шина ВУ <- DR
1
in
in <port>
DR <- шина ВУ
1
Операции управления прерываниями
Мнемоника
Синтаксис
Семантика
Длина
en_int
en_int
SR[IE] <- 1
1
dis_int
dis_int
SR[IE] <- 0
1
iret
iret
PC <- SPCEAX..EFX <- r6..r10
1
000000 (0x00) - halt
000001 (0x01) - push_ds
000010 (0x02) - pop_ds
000011 (0x03) - add
000100 (0x04) - adc
000101 (0x05) - sub
000110 (0x06) - mul
000111 (0x07) - div
001000 (0x08) - mod
001001 (0x09) - neg
001010 (0x0A) - cmp
001011 (0x0B) - and
001100 (0x0C) - or
001101 (0x0D) - xor
001110 (0x0E) - not
001111 (0x0F) - jmp
010000 (0x10) - jcc
010001 (0x11) - jcs
010010 (0x12) - jeq
010011 (0x13) - jne
010100 (0x14) - jlt
010101 (0x15) - jgt
010110 (0x16) - jle
010111 (0x17) - jge
011000 (0x18) - mov
011001 (0x19) - nop
011010 (0x1A) - out
011011 (0x1B) - in
011100 (0x1C) - en_int
011101 (0x1D) - dis_int
011110 (0x1E) - iret
011111 (0x1F) - push_rs
100000 (0x20) - pop_rs
100001 (0x21) - ret