henrywsnew 发表于 2013-5-17 13:52:43

栈要不要先设置才能使用

请教,如果一开始不对栈进行设置,那么在程序中可以直接对这样的栈进行入栈出栈操作吗?我个人觉得不可以,但是在做题目的时候发现王爽教材中的数字转字符程序中是可以的,为什么这样可以?
以下是我的问题
1。一开始不对栈进行设置,那么默认的栈段 是ss=cs ,sp=0 我这样说对吗?第一次入栈后,sp 是不是等于FFFEH?
2.如果说我上面的说法对的话,那么栈空间是不是ss:0 到ss:ffffh,直接使用这个空间会不会有什么内存使用问题,在学习的时候,王爽教材里的栈都是先定义好的

小丑Delta 发表于 2013-5-17 16:23:51

本帖最后由 小丑Delta 于 2013-5-17 16:28 编辑

如果你不设置栈段,那么当入栈的时候就会覆盖代码段的内容从而造成,指令的错误
1,如果你是这样入栈的话,那么第一次入栈后,sp=fffeh
2,里面有着代码段,或者系统文件,很容易造成数据的覆盖,从而造成严重的后果,黑客常用手法就是使用栈溢出,使其覆盖栈段之外的数据,达到攻击的目的

nios 发表于 2013-5-17 18:45:41

本帖最后由 nios 于 2013-5-17 18:48 编辑

一开始不对栈进行设置,那么默认的栈段 是ss=cs ,sp=0 ,是这样的吗?我一直没有注意过。
实验了一下:


确实,ss=cs,但SP不是指向0,这时候你往里面推数据的话看图

因为默认ss=cs,所以往里面推是可以的。但是推进去字节多了之后代码段就会被覆盖了。
看到吗?当第二次push的时候05 B0被00 06覆盖了!
页: [1]
查看完整版本: 栈要不要先设置才能使用