fox32
32 bit fantasy computer
add
Encoding
xx000001
Variable size is allowed.
Operation
dest ← dest + src
Description
The contents of src are added to dest, and the result is stored in dest.
Flags
Z - set if the result is zero, otherwise reset.
C - set if the destination overflowed, otherwise reset.
Examples
If register r0 contains 0x04 and register r1 contains 0x08,
upon execution of add r0, r1, register r0 will contain 0x0C.
If register r0 contains 0x04,
upon execution of add r0, 0x08, register r0 will contain 0x0C.
If address 0x00008000 contains 0x04,
upon execution of add.8 [0x00008000], 0x08, address 0x00008000 will contain 0x0C.
and
Encoding
xx000011
Variable size is allowed.
Operation
dest ← dest & src
Description
The contents of src are bitwise ANDed with dest, and the result is stored in dest.
Flags
Z - set if the result is zero, otherwise reset.
C - no change.
Examples
If register r0 contains 0x1F and register r1 contains 0x10,
upon execution of and r0, r1, register r0 will contain 0x10.
If register r0 contains 0x1F,
upon execution of and r0, 0x10, register r0 will contain 0x10.
If address 0x00008000 contains 0x1F,
upon execution of and.8 [0x00008000], 0x10, address 0x00008000 will contain 0x10.
bcl
Encoding
10010110
Variable size is not allowed.
Operation
src bit number of dest ← 0
Description
Bit src in dest is cleared.
Flags
Z - no change.
C - no change.
Examples
If register r0 contains 0x1F and register r1 contains 0x00,
upon execution of bcl r0, r1, register r0 will contain 0x1E.
If register r0 contains 0x1F,
upon execution of bcl r0, 0x00, register r0 will contain 0x1E.
If address 0x00008000 contains 0x1F,
upon execution of bcl [0x00008000], 0x00, address 0x00008000 will contain 0x1E.
brk
Encoding
10100000
Variable size is not allowed.
Description
Print register contents to the terminal.
Flags
Z - no change.
C - no change.
bse
Encoding
10000110
Variable size is not allowed.
Operation
src bit number of dest ← 1
Description
Bit src in dest is set.
Flags
Z - no change.
C - no change.
Examples
If register r0 contains 0x1E and register r1 contains 0x00,
upon execution of bse r0, r1, register r0 will contain 0x1F.
If register r0 contains 0x1E,
upon execution of bse r0, 0x00, register r0 will contain 0x1F.
If address 0x00008000 contains 0x1E,
upon execution of bse [0x00008000], 0x00, address 0x00008000 will contain 0x1F.
bts
Encoding
10100110
Variable size is not allowed.
Operation
Z ← !(src bit number of dest)
Description
Bit src in dest is tested and the result is inverted and stored in Z.
Flags
Z - set if the specified bit is zero, otherwise reset.
C - no change.
call
Encoding
10011000
Variable size is not allowed.
Operation
[stack pointer] ← instruction pointer + size offset
instruction pointer ← src
Description
The current instruction pointer plus the size of the current instruction is pushed to the stack, then the instruction pointer is set to src.
Flags
Z - no change.
C - no change.
cmp
Encoding
xx000111
Variable size is allowed.
Operation
Z ← dest - src
Description
The contents of src are subtracted from dest, and the result is discarded.
Flags
Z - set if the result is zero, otherwise reset.
C - set if the destination overflowed, otherwise reset.
dec
Encoding
xx110001
Variable size is allowed.
Operation
dest ← dest - 1
Description
The contents of dest are subtracted by one, and the result is stored in dest.
Flags
Z - set if the result is zero, otherwise reset.
C - set if the destination overflowed, otherwise reset.
div
Encoding
xx100010
Variable size is allowed.
Operation
dest ← dest / src
Description
The contents of dest are divided by src, and the result is stored in dest.
Flags
Z - set if the result is zero, otherwise reset.
C - no change.
halt
Encoding
10010000
Variable size is not allowed.
Description
The CPU is halted until an interrupt occurs.
Flags
Z - no change.
C - no change.
icl
Encoding
10011100
Variable size is not allowed.
Description
Disables interrupts.
Flags
Z - no change.
C - no change.