代码不会停止执行

时间:2017-12-14 00:23:30

标签: assembly lc3

嗨,我有这个代码不会停止执行我不知道为什么。有什么建议吗?

LEA R1, SOURCE
 LEA R2, DEST
LOOP: LDR R0, R1, #0
 STR R2, R0, #0
 BRz DONE
 ADD R1, R1, #1
 ADD R2, R2, #1
 BRnzp LOOP
DONE: LEA R0, DEST
 TRAP x22 ; PUTS
 TRAP x25 ; HALT
SOURCE .STRINGZ "\"My sources say no\""
DEST .BLKW #20

1 个答案:

答案 0 :(得分:1)

是的,我强烈建议使用lc3模拟器。最好允许您设置断点并逐步执行指令。

您的问题是您没有将字符写入DEST。

LDR R0, R1, #0
STR R2, R0, #0

您将字符加载到R0中,但是然后将R0中的值视为地址并存储该地址中R2中的任何内容,这很可能会覆盖陷阱向量表中的值,该值不是好(我工作的模拟器会警告这样的东西)。

我想,因为你在使用PUTS时没有在DEST写任何字符,所以它会反复打印出字符,直到你碰巧找到一个可能在你的模拟器中没有发生的NUL字符。 / p>

修复方法是切换R2和R0 STR R0, R2, 0

相关问题