首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Trap子程序LC3程序集

Trap子程序LC3程序集
EN

Stack Overflow用户
提问于 2017-12-06 02:55:47
回答 1查看 1.2K关注 0票数 0

嗨,我有个cs类的问题。

代码语言:javascript
复制
       The puts TRAP routine has been disabled for some reason. Write an LC-3 
      subroutine called puts that
  implements its behaviour. In other words when the subroutine is called 
 register R0 will contain the
 address of a null-delimited string and the subroutine will simply print the 
string and return. You will of
course need to utilize the TRAP routine out that prints a character. 

不必编写主程序。

所以我的方法是这样,我不确定这是正确的还是我的逻辑是正确的

代码语言:javascript
复制
    PUTS:      
    ADD R2, R0, #0;
    AND R0, R0, #0;
    ADD R0, R2, #0;

    Out(trapx21) ; print first char in r0;


    BRp PUTS ; repeat loop 

我不确定我做得对不对有什么帮助吗?

EN

回答 1

Stack Overflow用户

发布于 2017-12-06 07:23:29

你的陷阱有几件事要做。

  1. 最大的错误是,您正在使用陷阱服务例程中的OUT陷阱。当调用陷阱时,返回地址将放在R7中。当您调用OUT陷阱时,R7失败了,现在您无法回到最初称为陷阱的任何代码中。
  2. 最后你需要一个RET指令才能回到给你打电话的人那里
  3. 您的代码实际上并不是从包含在R0中的字符串中获取字符。因此,如果您从R0中包含的地址(通过LDR)读取,您应该得到第一个字符,从R0+1中包含的地址读取,并且您应该得到第二个字符,您必须从R0中的地址连续读取字符,直到收到0,这是NUL。

与问题中的说明相反,您应该编写一个MAIN来测试它。

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

https://stackoverflow.com/questions/47666072

复制
相关文章

相似问题

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