master
parent
8a275107f6
commit
cc1275a923
@ -1,22 +1,65 @@
|
||||
Instruction set:
|
||||
MOV =
|
||||
|
||||
ALU = --XXXXXX
|
||||
ADD =
|
||||
SUB
|
||||
OR =
|
||||
XOR =
|
||||
AND =
|
||||
NOT =
|
||||
|
||||
Instruction layout in RAM
|
||||
OPCODE A B
|
||||
XXXXXXRR;AAAAAAAA;BBBBBBBB
|
||||
AB
|
||||
R Indicates the value stored in A/B is a register
|
||||
|
||||
ALU INV = --XXXXXX
|
||||
Same as ALU
|
||||
Opcodes:
|
||||
|
||||
IMM =
|
||||
ALU = 1XXXXY--
|
||||
If Y is 1 invert output
|
||||
ADD = -1000Y-- Add A to B output to ACC
|
||||
SUB = -0100Y-- Sub A from B output to ACC
|
||||
OR = -1100Y-- OR A and B output to ACC
|
||||
XOR = -0010Y-- XOR A and B output to ACC
|
||||
AND = -1010Y-- AND A and B output to ACC
|
||||
|
||||
JMP =
|
||||
JNZ =
|
||||
JGZ =
|
||||
JLZ =
|
||||
JEZ =
|
||||
MOV = 010000-- Move A to B
|
||||
|
||||
JMP = 011000-- Jump to A ignore B(?)
|
||||
A = 00100000
|
||||
JNZ = 000100-- Jump if A is not zero to B
|
||||
JGZ = 010100-- Jump if A is greater than zero to B
|
||||
JLZ = 001100-- Jump if A is less than zero to B
|
||||
JEZ = 011100-- Jump if A is zero to B
|
||||
|
||||
NOP = 001010-- Nothing!
|
||||
|
||||
DBL = 000010-- Blink a light
|
||||
DBB = 010010-- Beep a beeper
|
||||
|
||||
HLT = 000001-- Haha die
|
||||
|
||||
Registers:
|
||||
|
||||
RAM = 1XXXXXXX R/W
|
||||
-0000000 | -1111111
|
||||
|
||||
ACC = 01000000 R 8bit
|
||||
A = 00100000 R/W 8bit
|
||||
B = 01100000 R/W 8bit
|
||||
C = 00010000 R/W 8bit
|
||||
|
||||
Special:
|
||||
ZERO = 00000000 R 8bit
|
||||
FULL = 00000001 R 8bit
|
||||
DBGO = 00000010 W Debug output 8bit
|
||||
DBGI = 00000011 R Debug input 8bit
|
||||
PGCR = 00000100 R/W Program Counter 7bit
|
||||
|
||||
Example program (Human readable + binary):
|
||||
OPCODE A B
|
||||
MOV 1 A 01000001;00000001;00100000
|
||||
MOV 1 B 01000001;00000001;01100000
|
||||
MOV -100 C 01000001;11100100;00010000
|
||||
MOV A DBGO 01000011;00100000;00000010
|
||||
lop: 00101000;00000000;00000000
|
||||
ADD A B 11000011;00100000;01100000
|
||||
MOV A B 01000011;00100000;01100000
|
||||
MOV ACC A 01000011;01000000;00100000
|
||||
MOV A DBG0 01000011;00100000;00000010
|
||||
ADD A C 11000011;00100000;00010000
|
||||
JLZ ACC lop 00110010;01000000;00000101
|
||||
HLT 00000100;00000000;00000000
|
||||
|
Loading…
Reference in new issue