简述子程序调用与返回的过程?
子程序调用过程:先保护断点,即将CALL指令的下一条指令地址推入堆栈;再根据CALL指令的操作数,修改CS:IP,以转去执行子程序。具体操作:对段内调用,指令指针IP内容入栈,修改IP,实现段内转移。对段间调用,代码段寄存器CS内容入栈,指令指针IP内容入栈,修改CS和IP,实现段间转移。返回的过程:对段内调用,从当前栈顶弹出一个字送IP,实现段内返回;对段间调用,从当前栈顶弹出2个字,先弹出的字送IP,后弹出的字送CS,实现段间返回。
简述子程序调用与返回的过程?
子程序调用过程:先保护断点,即将CALL指令的下一条指令地址推入堆栈;再根据CALL指令的操作数,修改CS:IP,以转去执行子程序。具体操作:对段内调用,指令指针IP内容入栈,修改IP,实现段内转移。对段间调用,代码段寄存器CS内容入栈,指令指针IP内容入栈,修改CS和IP,实现段间转移。返回的过程:对段内调用,从当前栈顶弹出一个字送IP,实现段内返回;对段间调用,从当前栈顶弹出2个字,先弹出的字送IP,后弹出的字送CS,实现段间返回。