|
主题 : : 栈段疑问,64k栈空满疑惑 [待解决] |
回复[ 9次 ]
点击[ 520次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2010-02-21 13:56 ]
[引用]
[回复]
[ top ] | |
荣誉值:3
信誉值:0
注册日期:2010-02-20 22:25 |
3.10讲述为64k堆栈空时,sp=0
我理解了
不过满的时候,sp也为0吧
那么如何区别是空是满呢??? | | |
|
|
|
|
[第1楼]
[ 回复时间:2010-02-21 17:51 ]
[引用]
[回复]
[ top ] | |
荣誉值:62
信誉值:0
注册日期:2009-12-03 13:14 |
单从sp的值来看,可能让你觉得迷惑,还是应该分析一下sp的走向,栈有上溢和下溢 | | |
|
|
|
|
[第2楼]
[ 回复时间:2010-02-21 18:42 ]
[引用]
[回复]
[ top ] | |
荣誉值:3
信誉值:0
注册日期:2010-02-20 22:25 |
这个和溢的关系不大吧,空间为64k后就不存在溢出的问题了,只是数据会混乱了吧 | | |
|
|
|
|
[第3楼]
[ 回复时间:2010-02-21 22:11 ]
[引用]
[回复]
[ top ] | |
荣誉值:62
信誉值:0
注册日期:2009-12-03 13:14 |
数据是混乱了,栈满和栈空,你可以预留一个字节来区别 | | |
|
|
|
|
[第4楼]
[ 回复时间:2010-02-21 22:27 ]
[引用]
[回复]
[ top ] | |
荣誉值:307
信誉值:0
注册日期:2009-03-15 23:46 |
我觉得最简单有效的办法就是将sp的初值、即栈的最大容量限制为0FFFEH。 | | |
|
|
|
|
[第5楼]
[ 回复时间:2010-02-28 02:58 ]
[引用]
[回复]
[ top ] | |
荣誉值:6
信誉值:0
注册日期:2009-09-08 11:48 |
这是栈循环,其实在sp=offfeh时再出栈,sp=offfeh+2=10000h,发生进位,但是sp是16位寄存器,所以丢掉了最高位,又变为0,一直一直这样的在0-offffh之间循环! | | |
|
|
|
|
[第6楼]
[ 回复时间:2010-06-14 16:16 ]
[引用]
[回复]
[ top ] | |
荣誉值:2
信誉值:0
注册日期:2009-07-16 14:51 |
|
|
|
|
|
[第7楼]
[ 回复时间:2013-01-15 23:08 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2013-01-01 13:48 |
|
|
|
|
|
[第8楼]
[ 回复时间:2013-01-23 15:34 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2012-12-01 20:23 |
这是栈循环,其实在sp=offfeh时再出栈,sp=offfeh+2=10000h,发生进位,但是sp是16位寄存器,所以丢掉了最高位,又变为0,一直一直这样的在0-offffh之间循环!
------------------
回复:如果sp=0,ss=1000,这在它空栈时,把数据入栈,sp=sp-机器码长的字节数,这用0去减吗?减了之后是负数?还是能得到fffe之类的值?这就是循环吗?
本人小白,刚看到这,有些迷惑,望解答! | | |
|
|
|
|
[第9楼]
[ 回复时间:2013-05-28 11:32 ]
[引用]
[回复]
[ top ] | |
荣誉值:4
信誉值:0
注册日期:2010-01-27 19:28 |
确实,空满都是0。
反过来从0判断空满估计是不可能了。 | | |