我正在研究一个问题,其目标是创建一个模仿陷阱(PUTS)的子程序,它会将一个字符串写入控制台,这个字符串可以假设在r0
这是我到目前为止,它适用于第一个字符's'之后它保持循环打印>>>>>>香港专业教育学院尝试了一切建议吗?
getWorkers():Observable<any> {
let fn = firebase.database().ref('/workers').on('child_added', (snapshot) => {
return snapshot.val();
});
return Observable.bindCallback(fn) as Observable<any>
}
答案 0 :(得分:0)
好的
1
br putss
使用JSR调用子例程。如果你必须分支到子程序,那么一旦子程序结束,控制流如何回到子程序的调用者?
另一点是,如果你需要在你的子程序中调用TRAP,那么你必须保存并恢复R7,因为作为调用TRAP的一部分,它将在R7中写入它的返回地址,这将破坏返回地址以返回到呼叫者。也许这就是你使用BR的原因?
2
add r0, r1,#0
这很糟糕。这破坏了子程序被调用时R0中包含的字符串数据的地址。我不明白你为什么要这样做?
3
and r1,r1,#0
这似乎是不必要的,当LDR R1,......发生时,你将覆盖R1中的值。
4
add r4, r0, #-4
似乎没必要? PUTS在读取值为0(nul终结符)的字符时结束。
5
theend
halt
不要在子程序中执行此操作,完成后的子程序应该只使用ret返回给调用者。如果你打电话给别人的子程序,你不会希望程序终止。