An 8-bit CPU designed for education
Format | Operation |
---|---|
000 RS NZP | PC <- MEM[RS] NZP |
Format | Operation |
---|---|
0010 IIII | R0[HIGH] <- I |
0011 IIII | R0[LOW] <- I |
Format | Operation |
---|---|
0100 RD RS | RD <- RD + RS |
0101 RD RS | RD <- RS |
0110 RD RS | RD <- RD & RS |
0111 RD RS | RD <- RD ^ RS |
Format | Operation |
---|---|
1000 RX RY | R0 <- MEM[RX, RY] |
1001 RX RY | MEM[RX, RY] <- R0 |
Format | Operation |
---|---|
10100000 | add8 |
10100001 | sub8 |
10100010 | mul8 |
10100011 | div8 |
10100100 | mod8 |
10100101 | neg8 |
10100110 | and8 |
10100111 | or8 |
10101000 | xor8 |
10101001 | not8 |
10101010 | add16 |
10101011 | sub16 |
10101100 | mul16 |
10101101 | div16 |
10101110 | mod16 |
10101111 | neg16 |
10110000 | and16 |
10110001 | or16 |
10110010 | xor16 |
10110011 | not16 |
10110100 | call |
10110101 | trap |
10110110 | ret |
10110111 | iret |
10111000 | int0 enable |
10111001 | int1 enable |
10111010 | int2 enable |
10111011 | int3 enable |
10111100 | int4 enable |
10111101 | int5 enable |
10111110 | int6 enable |
10111111 | int7 enable |
Format | Operation |
---|---|
110 RD DV | RD <- DEV[DV] |
111 DV RS | DEV[DV] <- RS |
; Octave CPU - Hello World
; R2R1 ← string
LAA R2, R1, string
loop:
; R0 ← [R2R1]
LOAD R2, R1
; IF R0 == 0, JMP exit
XOR R3, R3
ADD R3, R0
LRA exit
JMP R0 Z
; PRINT R3
OUT R3, 1
; INC R1
LOADI 0x01
ADD R1, R0
; JMP loop
LRA loop
JMP R0 NZP
exit:
HALT
string:
BYTES "Hello world!\n"
BYTE 0x00