始终如一 发表于 2012-4-5 21:52:18

关于CALL指令默认使用的栈

我们都知道CALL指令执行前,会将一些数据入栈,问题是该栈到底是系统提供的栈还是用户自定义的栈?

wAterLoo 发表于 2012-4-5 21:52:19

本帖最后由 wAterLoo 于 2012-4-6 21:15 编辑

这要看你的程序是运行在实模式还是保护模式

实模式下入栈,是系统栈
保护模式下,要看具体情况,
一般Ring0程序是系统栈,而Ring3级别的用户程序都是自定义栈
如果call是长转移,还涉及堆栈的转移。

补充:系统栈的好像只有保护模式的程序下才会去区分的,如果你的程序在实模式下,栈也是你自己定义的 - - 所以也是自定义栈 - -

莫名其妙 发表于 2012-4-6 08:27:37

我以前写call的时候就没有划分栈空间应该是系统的吧!~

夜鸽 发表于 2012-4-6 11:48:14

debug一下就知道了,你会发现ss与cs一样

始终如一 发表于 2012-4-9 08:57:57

谢谢,有点懂了。

2002wmj 发表于 2014-9-10 14:52:19

好东西,谢谢分享!

key2046 发表于 2017-1-10 17:30:01

我以前写call的时候就没有划分栈空间  应该是系统的吧!~
页: [1]
查看完整版本: 关于CALL指令默认使用的栈