汇编语言中的返回指令Rst问题

我看教程里说用RST返回指令要用到堆栈指令SP我想问那他的返回地址是不是堆栈指令提供的吗如果不是堆栈指令地址提供的是什么地址返回地址又是谁提供谢谢... 我看教程里说用RST返回指令要用到堆栈指令 SP我想问那他的返回地址是不是堆栈指令提供的吗 如果不是堆栈指令地址提供的是什么地址 返回地址又是谁提供 谢谢 展开
 我来答
zhoujoe1
2009-03-24 · TA获得超过1283个赞
知道答主
回答量:47
采纳率:0%
帮助的人:37.4万
展开全部
先澄清一下你问得模糊的地方。
1、你说的“RST”返回指令应该是“RET”吧?
2、“SP”不叫堆栈指令,它是堆栈指针,估计是Stack Pointer的首字母。
该指针总是指向堆栈的栈顶,即始终存放的是栈顶的地址。
堆栈的工作原理可简述为“后进先出”,即LIFO,last-in-first-out。(具体解释请查阅相关资料)
不同的处理器所支持的汇编指令助记符不尽相同,但是他们的含义有相似性。
下面就以RET来说说吧。
RET在51指令系统里其含义是子程序返回。在用LCALL或ACALL指令调用子程序的时候,堆栈指针SP先增加1,再把下一条将要被执行的程序计数器PC的值存入SP(这一步保证了子程序结束能正常返回原程序),然后存放子程序的存储空间的首地址被送入PC,于是CPU可以执行子程序中的代码。
在子程序结束时,要用RET指令结束,它的作用是将SP中的内容弹出到PC中。SP的内容弹出后,SP自减1,即恢复到调用子程序前的状态。由于SP中的内容(即子程序调用前将要被执行的指令)又回到PC中,所以原程序会继续进行。
至于SP的地址,系统复位后,SP被初始化为07H,使得堆栈区从08H开始。当然用户也可以自己设置SP的地址,只不过要注意不要将堆栈区与其它的存储区冲突。

参考资料: 《单片机原理即应用技术》 中国矿业大学出版社

lxhgmx
2009-03-24 · TA获得超过2321个赞
知道小有建树答主
回答量:561
采纳率:0%
帮助的人:0
展开全部
返回指令是相对调用指令而言的,在执行调用指令时,就会将主程序中调用指令的下一条指令的地址(在PC寄存器中)自动压入到堆栈中保存起来,当子程序运行结束后,会安排一条返回指令(目地就是为了返回到主程序中相应调用指令的下一条指令),执行返回指令,会自动从堆栈中将先前保存的下条指令地址弹出到程序计数器PC中。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
汤旺河边
2009-03-24 · TA获得超过2.9万个赞
知道大有可为答主
回答量:2675
采纳率:0%
帮助的人:3192万
展开全部
从被调用过程返回到调用点是通过ret指令来实现的,执行ret指令时,cpu自动从栈顶弹出一个字送给指令指针寄存器ip,返回地址是cpu通过堆栈操作自动提供的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式