回 帖 发 新 帖 刷新版面

主题:子程序的调用和返回是不是必须用到堆栈??(空)

见主题

回复列表 (共7个回复)

沙发

要用堆栈保存CS,IP,标志位啦等等

板凳

一般是near 调用,不用保存cs,ip,只需把子程序中用到的寄存器ax,bx 之类的推倒堆栈中,返回之前,在弹出即可
方便的方法可这样
aaa  proc  uses ax bx ……

……

ret
aaa endp

3 楼

用于回复现场 ,因为返回子程序后 寄存器里的值与调用子程序之前不同

4 楼

必须要有堆栈,因为要保存现场,当是near时只保存ip, far还需要保存cs,不过总是ip在上面,另外还可以保存一些数据用来进行参数的传递等等.

5 楼

如果我没有定义堆栈段,那么默认的堆栈段是多大?

6 楼

如果没有定义堆栈,系统会自动分配,不同的系统可能有不同的分配原则。
在XP下,系统的分配方法是:SS=DS,SP=0.

7 楼

楼上大哥 ,
   你的意思是说 堆栈默认大小和数据段一样大??

我来回复

您尚未登录,请登录后再回复。点此登录或注册