DECLARE MEMORY_SIZE $4096; addi $10 $-5 %A; subi %A $2 %B; muli $2 %B %C; divi $2 %C %D; # Set A to zero seti %A $0; # Loop from 0 to 10 count_loop: addi $1 %A %A; # Print the current value int $1; seti %B %A; seti %A $32; # space int $0; seti %A %B; lti %A $10; jmp count_loop; # Hello world seti %A $72; # H int $0; seti %A $101; # e int $0; seti %A $108; # l int $0; int $0; seti %A $111; # o int $0; seti %A $32; # space int $0; pushi $68; # D pushi $76; # L pushi $82; # R pushi $79; # O pushi $87; # W seti %B $5; world_loop: popi %A; int $0; subi %B $1 %B; gti %B $0; jmp world_loop; seti %A $10; # newline int $0; seti %B $1024; seti [%B] $50; seti %A $66; seti [$10] %A; # Print 66 as decimal seti %A [$10]; int $1; seti %A $10; # newline int $0; # Print 50 as hex (0x32) seti %A [$1024]; int $2; # Push the string "hell" into register A seti %A $108; # l shli %A $8 %A; addi %A $108 %A; # l shli %A $8 %A; addi %A $101 %A; # e shli %A $8 %A; addi %A $104 %A; # h # Store A at memory location 900 seti [$900] %A; # Setup to print a string from position 900 seti %A $900; seti %B $4; int $3; # Jump over the interrupt call noop_function; int $3; exit; noop_function: ret;