注册 登录
编程论坛 汇编论坛

关于调用子程序用堆栈作参数时的问题

魔城侠客 发布于 2007-06-14 17:51, 1232 次点击
在调用子程序前堆栈中已经有数据,在调用子程序后,堆栈的顶端是否保存了返回的地址????
如果在子程序里子程序再调用自己,那这时堆栈顶端的返回地址是否有变化???
觉在堆栈这里子程序的调用有点迷惑,希望高手来解决
5 回复
#2
菜鸟上路2007-06-14 19:30

堆栈段只要不益处,可以一直存放数据或地址什么的

#3
爱以走远2007-06-14 20:40
调用子程序的时候 当子程序执行完后 程序会自动返回
堆栈就是用来保存一些数据的 如ax在主程序里有一个值 但是在子程序里要用到ax
这样就先把ax入栈 等子程序运行完后 在弹出ax原来的值
#4
hkbyest2007-06-14 22:12
关于这个问题,一般做法是在子程序里push ebp  mov ebp,esp然后用ebp来定位参数。即call proc前参数入栈,然后是返回地址入栈,这时ebp+2 +4 +6 +8等就是参数位置。
#5
魔城侠客2007-06-17 10:51
嗯,现在知道了,是在堆栈里直接取数据用,而不用pop的
#6
雨竹2007-06-20 10:10
为什么我什么都不懂?
1