关于堆栈的一点疑惑?

voidpointer 2007-12-08 11:18:07
一般一个汇编程序都有一个堆栈段,比如用以下语句定义:
STACK1 SEGMENT STACK
256 dup (?)
STACK1 ENDS
我的疑惑就是当用指令call调用子程序的时候,先要push ip,这个ip是不是保存在这个定义的堆栈中呢?
...全文
76 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhanzhenbo 2007-12-09
  • 打赏
  • 举报
回复

是的。
  当调用一个函数的时候。
1:调用方把参数反序压入堆栈中。
2:调用函数
3:恢复堆栈。

而被调用方需要保存EBP等值,用的就是这个堆栈,在执行
完成后将恢复
czlyc006 2007-12-09
  • 打赏
  • 举报
回复
call指令等价于 push (eip+1)
jmp (子程序处)
ret指令等于 pop eip (虽然实际程序中不能这么写)
fxxygg 2007-12-09
  • 打赏
  • 举报
回复
是的. 只不过在压入栈的时候,压入的是 EIP+1 , 恢复的时候,EIP+1弹出,从这里开始继
续执行.

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧