Instructions: INP 0b0001 | +Adress OUT 0b0010 | +Adress LDA 0b0011 | +Adress STA 0b0100 | +Adress INC 0b0101 | no Adress DEC 0b0110 | no Adress JPP 0b0111 | +Adress/Label JPZ 0b1000 | +Adress/Label JPN 0b1001 | +Adress/Label JPU 0b1010 | +Adress/Label EOJ 0b1011 | no Adress Instruction format, [] means optional: instruction [mem_adress]; [Comment] Memory: 32 Bit Data with 28 Bit Adresess-> 24Mb Memory Instruction Layout: XXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYY X: Instruction Opcode (4bit) Y: Memory Adress (28bit) Labels will get resolved by a preprocessor and transformed to adresses on assembling time A label can be defined at any position in a instruction (except in the comment) by writing $label_name. So you could e.g. write $label OUT 35 but also OUT $label 35 Note that the first variant is recommendet for readability