哮月苍狼 发表于 2011-7-12 10:47:49

关于栈的问题请教

本帖最后由 哮月苍狼 于 2011-7-15 12:19 编辑

书上60页,问题3.6
将10000H-1000FH,这段空间当做栈,初始状态栈是空的,此时,SS=1000H,SP=0010H
这句话我可不可以这样理解,10000H-1000FH,也是一个“栈段”,大小16KB??
这段话我想不明白 的就是,既然这个单元的偏移地址为栈最底部的字单元地址加2,栈最底部字单元地址为1000:000E,栈 空时,SP=0010H.
那为什么书上68页,问题3.11,同样将10000H-1FFFFH,这段空间当成栈段,初始状态为空,它的SS=1000H,IP为什么会等于0呢?SP原来=FFFEH,栈为空,栈中唯一元素出栈,出栈SP=SP+2,按照问题3.6的思想,那就应该是FFFEH+2=10000,但为什么为认为IP=0呢?这个概念上的问题,我弄糊涂了,请大家帮我转过这个弯来。

张国祥 发表于 2011-7-12 11:59:06

IP是地址指针寄存器,和栈没决定性关系,栈只取决于SS,SP

yulin3192 发表于 2011-7-12 13:24:31

我是新手:D:D

libocdf 发表于 2011-7-12 16:42:31

本帖最后由 libocdf 于 2011-7-14 13:46 编辑

按照题目意思,10000H-1000FH就是一个“栈段”,其大小应为“16B”而非“16KB”(16KB应该是10000H~13FFFH吧),
引用你的原话“那就应该是FFFEH+2=10000,但为什么为认为IP=0呢?”IP是16位寄存器(最大存放两个字节内容,如:3495H,0594H,ABCDH),其最大值用16进制表示为FFFFH,而10000H>FFFFH,注意16进制的10000H是五位数,而其它均为四位,所以最高位的10000H中最高位的1只能舍弃,寄存器放不下。{:1_1:}
10000H把1舍弃后,寄存器中就只有0000H了。

libocdf 发表于 2011-7-14 00:14:51

楼主,不理视???

Pino 发表于 2011-7-14 00:44:37

楼主不厚道,别人帮你解决问题,一句谢谢也不留下,以后谁帮你?

羡小b 发表于 2011-7-14 00:52:37

4楼正解。看一下有符号数和无符号数的相关知识吧。

︶ㄣ孝哆。 发表于 2011-7-14 04:40:43

呵呵,听课不认真了:lol!把基础看几遍就明白了!因为甲鱼先生说一到第三章的内容很重要!
我也是有点模糊,还在加深理解和记忆。你的问题我也看得有点模糊,没法解答,我基础好不够好{:5_92:}

鱼C# 发表于 2011-7-14 06:35:38

栈 很有用 也很重要,好好理解下吧 楼主

哮月苍狼 发表于 2011-7-14 10:25:03

libocdf 发表于 2011-7-14 00:14 static/image/common/back.gif
楼主,不理视???

问题是我没弄明白,我选谁的最优?肯定是要谢谢大伙 的帮忙的

libocdf 发表于 2011-7-14 13:43:54

哮月苍狼 发表于 2011-7-14 10:25 static/image/common/back.gif
问题是我没弄明白,我选谁的最优?肯定是要谢谢大伙 的帮忙的

现在还有什么地方没明白??
页: [1]
查看完整版本: 关于栈的问题请教