如何从4开始倒数并在汇编程序中停在0。到目前为止我已经尝试过了。我希望文本显示然后3210.但它打印3333333333333。 我试图使用STR在减法后存储新结果,然后再次使用新数字减1。但它似乎一直在使用4。
B main
verses DEFW 4
temp DEFW 0
text DEFB " men went to mow a meadow ",0
ALIGN
main ADR R0,verses
SWI 4
ADR R0,text
SWI 3
loop ADR R0,verses
SUB R0,R0,#1
STR R0,verses
SWI 4
B loop
SWI 2
答案 0 :(得分:2)
这是错误的:
ADR R0,verses
SWI 4
期望值在R0
中打印,而不是地址。因此,您应该使用类似LDR R0,verses
的内容。你执行ADR R0,verses
时获得4的原因是因为verses
恰好位于地址4处。但是使用ADR
你将得到4 at < / em> verses
。
此外,您的loop
是无限的,因为您尚未添加任何退出循环的代码。它应该看起来像这样:
LDR R0, verses
loop SUBS R0,R0,#1
BMI done
SWI 4
B loop
done
注意:我不知道SWI
是否保留R0
的值。如果他们不这样做,你将不得不自己照顾,例如将R0
保存在堆栈上。