Added comments to test.asm

This commit is contained in:
2023-11-02 23:39:31 +00:00
parent 0b0dc4c498
commit fc4b9702d2

View File

@@ -1,5 +1,7 @@
;; Allocate a buffer of 3 characters
malloc.byte 3
mov.word 0
;; Setup the buffer to be equivalent to "abc"
push.reg.word 0
push.byte 'a'
mset.byte 0
@@ -10,36 +12,51 @@
push.byte 'c'
mset.byte 2
;; Save buffer to W[8] because the first 8 registers should be
;; reserved for library routines as it may be overwritten
push.reg.word 0
mov.word 8
push.reg.word 0
;; Call the routine
call print_cptr
;; Delete allocated buffer
push.reg.word 8
mdelete
push.byte '\n'
print.char
halt
;;; print_cptr: Prints pointer to a buffer of characters. Pointer
;;; should be on the stack as a word.
print_cptr:
;; Save pointer in layout to W[0], P -> W[0]
mov.word 0
;; iterator I -> W[1]
push.word 0
mov.word 1
push.reg.word 0
;; (W[0])[W[1]] -> P[I]
push.reg.word 0 ; <-- #
push.reg.word 1
mget.stack.byte
print.char
;; I += 1
push.reg.word 1
push.word 1
plus.word
mov.word 1
;; if I != |P| ...
push.reg.word 1
push.reg.word 0
msize
eq.word
not.byte
;; then go to #
jump.if.byte *-13
;; else print a newline
push.byte '\n'
print.char
;; return back to the caller
ret