ADD a b c
R.a = R.b + R.c
SUB a b c
R.a = R.b - R.c
MUL a b c
R.a = R.b * R.c
DIV a b c
R.a = R.b DIV R.c
MOD a b c
R.a = R.b MOD R.c
CMP a b c
R.a = R.b - R.c
OR a b c
R.a = R.b OR R.c
AND a b c
R.a = R.b & R.c
BIC a b c
R.a = R.b & ~ R.c
XOR a b c
R.a = R.b XOR R.c
LSH a b c
R.a = LSH(R.b R.c)
ASH a b c
R.a = ASH(R.b R.c)
CHK a c
0 <= R.a < R.c
ADDI a b c
R.a = R.b + c
SUBI a b c
R.a = R.b - c
MULI a b c
R.a = R.b * c
DIVI a b c
R.a = R.b DIV c
MODI a b c
R.a = R.b MOD c
CMPI a b c
R.a = R.b - c
ORI a b c
R.a = R.b OR c
ANDI a b c
R.a = R.b & c
BICI a b c
R.a = R.b & ~ c
XORI a b c
R.a = R.b XORI c
LSHI a b c
R.a = LSH(R.b c)
ASHI a b c
R.a = ASH(R.b c)
CHKI a c
0 <= R.a < c
ADDIU a b c
R.a = R.b + c
(unsigned) SUBIU a b c
R.a = R.b - c
(unsigned) MULIU a b c
R.a = R.b * c
(unsigned) DIVIU a b c
R.a = R.b DIV c
(unsigned) MODIU a b c
R.a = R.b MOD c
(unsigned) CMPIU a b c
R.a = R.b - c
(unsigned) ORIU a b c
R.a = R.b OR c
(unsigned) ANDIU a b c
R.a = R.b & c
(unsigned) BICIU a b c
R.a = R.b & ~ c
(unsigned) XORIU a b c
R.a = R.b XORI c
(unsigned) CHKIU a c
0 <= R.a < c
(unsigned) LDW a b c
R.a = Mem[R.b + c]
LDB a b c
R.a = Mem[R.b + c]
POP a b c
R.a = Mem[R.b];
R.b = R.b + c
STW a b c
Mem[R.b + c] = R.a
STB a b c
Mem[R.b + c] = R.a
PSH a b c
R.b = R.b - c;
Mem[R.b] = R.a
The target addresses of branch instructions are word addresses.
BEQ a c
c
if R.a = 0
BNE a c
c
if R.a # 0
BLT a c
c
if R.a "<" 0
BGE a c
c
if R.a >= 0
BLE a c
c
if R.a <= 0
BGT a c
c
if R.a > 0
BSR c
PC
in R31
, then branch to c
(address PC
relative) JSR c
PC
in R31
, then jump to c
(address absolute) RET c
R.c
(address absolute) RD a
R.a =
inputWRD c
prints R.c
WRH c
prints R.c
WRL
prints a newlinec
is 16 bit wide