From 07f64b796d3aa2ca33496df019148d4d9f18eb3e Mon Sep 17 00:00:00 2001 From: Aryadev Chavali Date: Thu, 2 Nov 2023 23:29:50 +0000 Subject: Implemented a routine which prints out a buffer of characters and use it All in my assembly/virtual machine! --- test.asm | 41 ++++++++++++++++++++++------------------- 1 file changed, 22 insertions(+), 19 deletions(-) diff --git a/test.asm b/test.asm index 0962956..6f857b8 100644 --- a/test.asm +++ b/test.asm @@ -11,32 +11,35 @@ mset.byte 2 push.reg.word 0 - msize - malloc.stack.byte - mov.word 1 - push.word 0 - mov.word 2 + mov.word 8 push.reg.word 0 - push.reg.word 2 - push.word 1 + call print_cptr + 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: + mov.word 0 + push.word 0 + mov.word 1 push.reg.word 0 - msize - sub.word - sub.word + push.reg.word 1 mget.stack.byte - mov.byte 24 + print.char push.reg.word 1 - push.reg.byte 24 - push.reg.word 2 - mset.stack.byte - push.reg.word 2 push.word 1 plus.word - mov.word 2 - push.reg.word 2 + mov.word 1 + push.reg.word 1 push.reg.word 0 msize eq.word not.byte - jump.if.byte 17 - halt + jump.if.byte *-13 + ret -- cgit v1.2.3-13-gbd6f