首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LC3汇编代码循环不为空终止?

LC3汇编代码循环不为空终止?
EN

Stack Overflow用户
提问于 2022-07-19 16:34:01
回答 1查看 44关注 0票数 -1

我目前正在尝试让Getstring的程序集lc3工作,它使用get信函子例程获得一个字符串,然后在按enter/newline之后终止/退出子例程。但是,当我模拟它时,代码会到达RET,然后返回到ADD R1,R0,#-10行,而不是退出到main。我将如何终止循环或让它返回到main?

GetString代码:功能不正常的程序

GetLetter子程序

更新代码: GETSTRING

保存除返回寄存器外更改的所有寄存器。ST R1,GS_R1;以R1为例。ST R7,GS_R7

代码语言:javascript
复制
;.... PUT YOUR CODE HERE ....

添加R1,R0,#0

GS_TOP

JSR GETLETTER

添加R1,R0,#-10

BRZ GS_DONE

R0,R1,#0

添加R1,R1,#1

BRNZP GS_TOP

GS_DONE ST R1,#0

代码语言:javascript
复制
;Registers registers you used.
LD R1, GS_R1    ;Restore R1
LD R7, GS_R7
RET ;This subroutine should ONLY have one return here.

;GETSTRING储存。在这个子例程中使用的所有.fill、.stringz、.blkw标签都应该放在这里。;------------------------------------------------------------------------------ GS_R1 .fill 0;GETSTRING GS_R7 .fill 0 R1的存储位置;

以下是我的错误:以下提示可能帮助您找到改进解决方案的一些方法:

位置1处字符串中的字符错误:“”应该是“H”。(2次)

位置2处字符串中的字符错误:“”应该是“H”。

位置1处字符串中的字符错误:“”应该是“�”。

位置3处字符串中的字符错误:“”应该是“�”。

位置2处字符串中的字符错误:“”应该是“V”。

位置2处字符串中的字符错误:‘应该是'S’。

位置2处字符串中的字符错误:‘应该是'n’。

位置1处字符串中的字符错误:‘应该是'b’。

EN

回答 1

Stack Overflow用户

发布于 2022-07-19 17:26:50

当一个函数调用另一个函数或调用一个陷阱时,它必须保存其传入的返回地址参数,该参数位于R7中,因为该寄存器将用于这些操作。

例如,当A调用B时,它在R7中传递B一个返回地址。B应该使用A提供的返回地址返回到适当的呼叫站点并恢复A。然而,如果B调用C,那么它还在R7中提供了一个返回地址,C应该用来返回给B。因此,如果B不能保存来自A的传入返回地址,那么调用C的工作就会破坏该值并丢失它与A的链接。

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

https://stackoverflow.com/questions/73040573

复制
相关文章

相似问题

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