Assembler

From Esolang
Jump to navigation Jump to search

MEMORY

Regs; A, B, C, D, E, ACC, PC

0000 0001 0010 0011 0100 0101 NOCODE

Ram; TR, ER, PROGRAM VALUE OR PV (STORES PV'S A, B, C, D, E, ACC AND SO ON)

0110 0111 NOCODE

INT; 1000 INT

COMMANDS

MOV [REG] [INT/REG]   load [2] into [1]
MOV [RAM] [ADR] [INT/REG]   load [3] into [1] at [2]
JMP [ADR]   load PC [1] -1 will halt
JZ [ADR]   as JMP only with condition on ACC
JNG [ADR]
JNL [ADR]
JG [ADR] [INT/REG]
JL [ADR] [INT/REG]
JN [ADR]
ADD [INT/REG] [INT/REG] add [2] to [1]
SUB [INT/REG] [INT/REG] sub [2] from [1]
MUL [INT/REG] [INT/REG] multiply [1] and [2]
DIV [INT/REG] [INT/REG] divided [1] to [2] (round to ground)
AND [INT/REG] [INT/REG] [REG] [1] [2] ands result store in [3]
OR [INT/REG] [INT/REG] [REG]
NOT [INT/REG] [REG]
RAM [REG] [RAM] [ADR] store [2] at [3] into [1]
DEF [NAME IN BINARY] def [1]
RET [INT/REG/RAM at ADR] return [1]
END end of def
OTHER 32 OPCODES WILL DO NOTHING
#free[REG] free space 1111 [REG] STORE IN [1]

EXAMPLES

DEF MAIN
MOV TR #freeA 5
RAM B TR A
ADD B 1
MOV TR A 5
END

the x=5 x+1 User:Timm