当前位置:编程学习 > 汇编语言 >>

汇编语言程序设计中,子程序设计时的现场保护和恢复是如何实现的举例说明。

答案:从别人回答中摘的: 常见的CPU的CALL指令(“调用”指令)的功能,就是以下两点: (1)将下一条指令的所在地址(即当时程序计数器PC的内容)入栈, (2)并将子程序的起始地址送入PC(于是CPU的下一条指令就会转去执行子程序)。 而子程序结尾处通常都要编写一条RET指令(“返回”指令),RET指令的功能就是一条: 从栈中取出一条数据送入PC。 从上面叙述可以看出,正常情况下,RET指令从栈中取出的一条数据,也就是当初被CALL指令所入栈的下一条指令的所在地址。 因此,RET指令后,CPU的下一条指令就回去执行当初的CALL指令的下一条了。 CALL L1 调用子程序即过程调用,为了保护现场,会压栈保存断点,段内调用,说明L1的属性为NEAR,只需保存IP(pc值),SP=SP-2,但是如果是段间调用则需要保存CS和IP 那么SP=SP-4.不管怎么样,在执行完RET后,要恢复现场,即弹出断点,SP=SP+2 (段间调用SP=SP+4) 也就是说过程调用前后,SP总体看不会变,但是其堆栈发生了一系列变化。 SP数值没变!

上一个:有下面程序框图能帮忙编个程序吗要用汇编语言,谢谢!
下一个:汇编语言中$的意思?

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,