LC3 N的装配方块
LC3 Assembly Square of N
您好,我正在尝试编写一个 lc3 汇编程序,该程序计算数字的平方并将其存储在 r0 中,整数作为参数给出并位于 r1 中,我在调试时注意到的问题是第一次通过它最初添加 2,但第二次通过它无法将另一个 2 添加到 r0 - 我的代码在下面任何帮助表示赞赏
.orig x3FF8
ld r1,n
ld r5,n
square
add r2,r1,#0
add r5,r5,#-1
add r0,r2,#0
brzp square
brn theend
theend
halt
n .fill #2
.end
我的最终代码感谢帮助的用户:
.orig x3FF8
ld r1,n
ld r5,n
square
add r2, r2,r1
add r5,r5,#-1
brp square
theend
halt
n .fill #4
.end
如果我没记错 LC-3 语法,add r2,r1,#0
就是 r2 = r1 + 0
,所以它从来没有真正添加到 r2
,只是用 r1
覆盖它。
你想要类似的东西在循环之外初始化r2
。
但是在循环内部,您需要 add r2, r2, r1
来执行 r2 = r2 + r1
,即 r2 += r1
.
我不明白为什么你在循环中也有 add r0,r2,#0
。
如果你想要r0
中的最终结果,首先将它累加到r0
中。如果那应该是总和,那么你有同样的错误。
另请注意,add r5,r5,#-1
需要放在最后,以便从它为循环分支设置条件代码标志,而不是从 add r0, r0, r2
或循环内您需要的任何其他内容。
另外:brn theend
完全没用:theend
在下一行,执行会自行继续到下一行。您不必跳过源代码中的空格![=25=]
您好,我正在尝试编写一个 lc3 汇编程序,该程序计算数字的平方并将其存储在 r0 中,整数作为参数给出并位于 r1 中,我在调试时注意到的问题是第一次通过它最初添加 2,但第二次通过它无法将另一个 2 添加到 r0 - 我的代码在下面任何帮助表示赞赏
.orig x3FF8
ld r1,n
ld r5,n
square
add r2,r1,#0
add r5,r5,#-1
add r0,r2,#0
brzp square
brn theend
theend
halt
n .fill #2
.end
我的最终代码感谢帮助的用户:
.orig x3FF8
ld r1,n
ld r5,n
square
add r2, r2,r1
add r5,r5,#-1
brp square
theend
halt
n .fill #4
.end
如果我没记错 LC-3 语法,add r2,r1,#0
就是 r2 = r1 + 0
,所以它从来没有真正添加到 r2
,只是用 r1
覆盖它。
你想要类似的东西在循环之外初始化r2
。
但是在循环内部,您需要 add r2, r2, r1
来执行 r2 = r2 + r1
,即 r2 += r1
.
我不明白为什么你在循环中也有 add r0,r2,#0
。
如果你想要r0
中的最终结果,首先将它累加到r0
中。如果那应该是总和,那么你有同样的错误。
另请注意,add r5,r5,#-1
需要放在最后,以便从它为循环分支设置条件代码标志,而不是从 add r0, r0, r2
或循环内您需要的任何其他内容。
另外:brn theend
完全没用:theend
在下一行,执行会自行继续到下一行。您不必跳过源代码中的空格![=25=]