| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1295 人关注过本帖
标题:CALL压栈疑惑
只看楼主 加入收藏
wenbin168
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2011-11-14
结帖率:100%
收藏
已结贴  问题点数:16 回复次数:8 
CALL压栈疑惑
学习到了十章的CALL和RET指令,有一个疑惑:
在没有设置栈段,初始的情况下SS和CS相同SP和IP相同,栈顶为SS:SP等于CS:IP.
CALL指令执行后将下一条指令的IP压栈,然后跳到标号处。那么假设:1000:0到1000:10中存放着代码,CS设置1000,ip设置为5那么当进行CALL指令时岂不是将1000:3和1000:4上的数据覆盖掉?我在百度上搜了很久也找不到答案,不知道是不是我的理解错了

[ 本帖最后由 wenbin168 于 2012-7-5 22:58 编辑 ]
搜索更多相关主题的帖子: 百度 
2012-07-05 19:27
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:5 
按你说的应该是覆盖 不过应该是出错退出才对 你可以试试嘛
2012-07-05 20:00
heliang6291
Rank: 2
等 级:论坛游民
威 望:3
帖 子:27
专家分:45
注 册:2012-6-28
收藏
得分:5 
是你理解错了。
记得结题散分。
2012-07-06 12:58
wenbin168
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2011-11-14
收藏
得分:0 
以下是引用heliang6291在2012-7-6 12:58:45的发言:是你理解错了。记得结题散分。
总要让我知道哪里理解有问题吧?莫非call用的是编译嚣设置的叧一段栈段?

[ 本帖最后由 wenbin168 于 2012-7-6 13:28 编辑 ]
2012-07-06 13:21
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
我觉得没什么错啊 如果真是

在没有设置栈段,初始的情况下SS和CS相同SP和IP相同,栈顶为SS:SP等于CS:IP.

那应该是覆盖的

问题是 这种东西应该属于违规操作 我感觉这样程序直接就退出了

实践是检验真理的唯一标准 试试才知道
2012-07-06 13:27
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
同样 记得给分。。
2012-07-06 13:27
wenbin168
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2011-11-14
收藏
得分:0 
这两天身边没电脑,连帖子也是手机写的,等过两天回去实验一下
2012-07-06 13:51
无敌小超人
Rank: 1
等 级:新手上路
帖 子:3
专家分:5
注 册:2012-6-29
收藏
得分:5 
怎么会是CS和SS相同的呢?代码段和栈怎么会是相同的呢?栈是存放数据的,怎么会是与代码段相同的呢?
2012-07-06 14:47
heliang6291
Rank: 2
等 级:论坛游民
威 望:3
帖 子:27
专家分:45
注 册:2012-6-28
收藏
得分:0 
关键是一样又如何呢?
指令和数据本身没区别,只有CS:IP指向了才是指令,不然就是个数据而已。
在压栈出栈中,就算诚如你所说,如果直接push则SP指针是减少,而IP指针是增加,所以不会重叠。但是如果你一上来就POP,那样你对一个空栈出栈的话,那是危险的。
2012-07-07 13:55
快速回复:CALL压栈疑惑
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.039312 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved