首页 > 解决方案 > 如何编写用于在 MARIE 上打印姓名的子程序

问题描述

准备一个名为 printStringName 的 MARIE 子例程,它可以打印包含两个以 ASCII '0' 结尾的字符串的任何名称(使用“输出”指令)。首先使用包含名称字符串起始地址的标签“PrintName”(如上例中的 myNameAdd)。然后代码应该从该地址加载一个字符,如果它不是'0'则输出它,然后将地址加1,并继续这样做直到从地址加载的字符为'0'(这表示结束字符串)。然后,打印一个ASCII“空格”字符,并继续打印名称字符串的第二部分,即姓氏,直到从地址加载的字符为“0”(表示字符串结束)。然后,当您加载标记“名称结尾”的第二个 ASCII '0' 时,打印一个 ASCII“换行”字符并继续打印下一个名称。

                JnS Print
                Halt


Print,          HEX 2
PrintString,    LoadI PrintName
                Skipcond 800
                JumpI Print
                Output
                Clear
                Load PrintName
                Add Increment
                Store PrintName
                Clear
                Jump PrintString

PrintName,      DEC 0   
                HEX 043
                HEX 048
                HEX 045
                HEX 041
                HEX 048
                HEX 030
                HEX 030
                HEX 030
Increment,      DEC 1 
                Load PrintName
                Store Print_Arg
                JnS Print
                Halt
PrintName,      hex 04A


Print_Arg,      DEC 0
Print,          Hex 0
                Load Print_Arg
                Output
                Skipcond 000
                JumpI Print
                Output
                Clear
                Load PrintName
                Add Increment
                Store PrintName
                Clear
                Jump 0

Increment,      DEC 1

代码不断重复,我不确定是什么问题

标签: assemblymarie

解决方案


推荐阅读