如何编写用于在MARIE上打印名称的子例程

时间:2019-09-11 18:46:15

标签: assembly marie

准备一个名为printStringName的MARIE子例程,该子例程可以打印包含两个名称的任何名称 ASCII“ 0”终止的字符串(使用“输出”指令)。 首先使用标签“ PrintName”保存名称字符串的起始地址(例如, 在上面的示例中为myNameAdd)。然后,代码应从该地址加载一个字符, 如果它不是“ 0”,则输出它,然后将地址加1,并继续执行直到字符 从地址加载的是“ 0”(表示字符串的结尾)。然后,打印ASCII “空格”字符,然后继续打印名称字符串的第二部分,即姓氏,直到 从地址加载的字符为“ 0”(表示字符串的结尾)。然后,当 您加载了第二个ASCII“ 0”,它标记了“名称的结尾”,并打印了ASCII“ New Line” 字符并继续打印名字。对于此任务,您可以使用两个或三个名称(您的 名和姓,您的老师的姓名,您的老师的姓名等,至少两个名字) 打印时,每个名称都经过硬编码并分配了一个标签以进行标识。

                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

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

0 个答案:

没有答案