首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >N的LC3装配方

N的LC3装配方
EN

Stack Overflow用户
提问于 2017-12-12 04:35:01
回答 1查看 1.4K关注 0票数 0

嗨,我正在编写一个lc3汇编程序,它计算一个数字的平方并将它存储在r0中,整数作为一个参数给出,并且位于r1中,我注意到在调试过程中遇到的问题是在第一次传递时它最初添加了2,但是第二次传递没有将另一个2添加到r0 --我的代码低于任何帮助。

代码语言:javascript
复制
           .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

我的最后代码感谢帮助我的用户:

代码语言:javascript
复制
    .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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-12 04:48:19

如果我正确地记住了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在下一行,执行继续到下一行。您不必跳过源中的空白!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47765417

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档