Assembly

Although the computer is primarily controlled by a set of 8-bit opcodes these can be tricky to work with when designing more complicated programs. As with many computers we can use a higher-level language which is more readable for a human but then will need converting into 8-bit opcodes for the computer to understand.

I have designed an assembly style language which is made up of a series of mnemonics that each map directly to an equivalent opcode. This makes it easier to create and maintain programs for the computer but still works at the basic hardware level of the computer. This is in contrast to a modern high-level language such as C# where each statement might compile down to a series of opcodes required to perform that action.

The list of available instructions is as follows:

Register to Register Copy

mov dest: a b c d , src: a b c d

Register Clear

clr a b c d

Load Immediate

ldi 8-bit a b , value (-16..15) 16-bit m j , value (0x0000..0xFFFF) label

Arithmetic Ops

addition add increment inc dest: a d

Logic/Bitwise Ops

bitwise and and bitwise or orr bitwise xor eor compare B-C cmp bitwise not not rotate left rol dest: a d

Branching

subroutine jsr unconditional jmp conditional !zero bne zero beq carry bcs sign bmi sign blt S | Z ble label

Direct op-code

opc Hex opcode (0x00..0xFF) Binary opcode