; Hello World for TinyCPU ; Prints "Hello!" to GPU via 0xC0 ; ; TinyCPU instructions: ; 0x00 NOP 0x01 MOV_A_B 0x02 MOV_IMM_A 0x03 ADD_A_B ; 0x04 SUB_A_B 0x05 JMP_A 0x06 JZ_A 0x07 JC_A ; 0x08 CMP_A_B 0x09 MOV_IMM_B 0x0A STORE_A 0x0B LOAD_A ; 0x0C JMP_IMM 0x0D JZ_IMM 0x0E JC_IMM 0x0F INC_A ; 0x10 CALL_IMM 0x11 RET 0xFF HLT .org 0x00 ; Print "Hello!" MOV_IMM_A 0x48 ; 'H' STORE_A 0xC0 MOV_IMM_A 0x65 ; 'e' STORE_A 0xC0 MOV_IMM_A 0x6C ; 'l' STORE_A 0xC0 MOV_IMM_A 0x6C ; 'l' STORE_A 0xC0 MOV_IMM_A 0x6F ; 'o' STORE_A 0xC0 MOV_IMM_A 0x21 ; '!' STORE_A 0xC0 MOV_IMM_A 0x0A ; newline STORE_A 0xC0 loop: MOV_IMM_A 0x41 ; 'A' print_loop: STORE_A 0xC0 ; print char INC_A ; next char MOV_IMM_B 0x5B ; b = 'Z' + 1 CMP_A_B ; compare JZ_IMM done ; if A == 0x5B, done JMP_IMM print_loop done: MOV_IMM_A 0x0A ; newline STORE_A 0xC0 HLT