C!2015 发表于 2011-9-23 22:42:02

王爽老师书上的一个疑问(程序6.3)

本帖最后由 C!2015 于 2011-9-23 22:43 编辑


我觉得只用定义8个零,再把mov sp, 30h改成mov sp, 20h就行了,我调试也OK,可书上为什么要是16个零呢?


书上的140页~~~

关键是感觉 发表于 2011-9-24 00:17:06

不行,20H就溢出了!以上题目,栈SP最小必须指向21H。

topcookie 发表于 2011-9-24 00:40:24

16个字32字节,最低要指向21H,不然会向上溢出的

C!2015 发表于 2011-9-24 21:56:04

topcookie 发表于 2011-9-24 00:40 static/image/common/back.gif
16个字32字节,最低要指向21H,不然会向上溢出的

谢谢这位热心人,但是我说了,可以只用8个零,那样还是32位吗?

Ak.xuer 发表于 2011-9-25 01:49:29

其实楼主不必在这个问题上纠结,书上这么定义只是为了让栈空间更大,只要你定义的栈不会出现溢出就okay了

topcookie 发表于 2011-9-25 15:20:25

如果只用8个0的话SP应该为10H,你定义成20H就向下溢出了

cenjie88 发表于 2011-9-29 09:17:22

学习了。!!!!!!!!!!!

chenlin7978580 发表于 2011-10-9 22:29:43

学习ing!:lol

lovixer 发表于 2011-10-9 23:09:17

6#

前面还定义了8个字型空间的所以是20h,楼主的是可以的,只要不发生溢出就可以,不是21h的,因为计算机从0开始数数的

cosmos3919 发表于 2016-8-31 18:20:12

这是由于debug的过程中debug程序也有压栈的操作(在-t的过程中用-d查看cs:0附近的内容就会发现这个情况),如果是20h的话,执行到后半段可能出现栈溢出,即可能覆盖cs:8~cs:f之间的数据,最后出现不正确的结果。
页: [1]
查看完整版本: 王爽老师书上的一个疑问(程序6.3)