inital commit кек
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
; 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
|
||||
Reference in New Issue
Block a user