像風一樣的男子 发表于 2012-12-21 18:44:22

栈,数据段,代码段和cpu外内部总线之间的关系

小甲鱼,你好!我是您的终极粉丝,我想问个很郁闷我的问题,那就是:原来8086cpu内部是16位的嘛对吧,而而内部是用16位的段地址和16位的偏移地址通过地址加法器形成和外部地址总线20条相匹配的20条总线对吧?但是,数据段和代码段的长度最长是64K,还有栈最长的长度也是64k,对吧?可是那这样不管是数据段还是代码段还 是栈,它们都是长度不超过64k即16位,而cpu的地址总线有20位即能访问1MB的内存,那这样20和16相比不是总线多了4,这样不是浪费了4条总线?求解答,可能是我对内部这些关系理解错了,能不能在把我的主题中“栈,数据段,代码段和cpu外内部总线之间的关系”解释解释???谢谢,最近要考微机了,呜呜呜。:lol



阿飞-祁磊 发表于 2012-12-21 18:44:23

像風一樣的男子 发表于 2012-12-22 20:56 static/image/common/back.gif
你也没有回答我所最后问的。先等等别的答案先把,不好意思哈

段地址*16 这种方式就把寻址能力扩大到了20位(8086寄存器16位,最大是ffff,乘以16以后可以达到ffff0。再加上偏移地址可以寻址所有的地址空间),所以不会浪费。

shdfsbgfjks 发表于 2012-12-21 21:13:23

你说的应该没错,不过由16条变成20条的增加了cpu的寻址范围,对于cpu来说没有这几个段的,内存增加了,就增加了pc机的工作能力,

志华 发表于 2012-12-21 23:01:36

地址总线跟cpu内存的位数没有对应关系,地址总线的20位,最后生成的也只是内存中的一个地址,这个地址对应的也就是一个8位的字节。这个字节才是跟CPU内部的位数产生关系。
地址总线只是表示了CPU的寻址能力,8086CPU只有20根数据总线,他的最大寻址范围就是FFFFF。也就是说如果你的内存大于个这数,那也是没用的。因为CPU只能访问0-FFFFF的内容。

阿飞-祁磊 发表于 2012-12-21 23:25:19

8086的寻址方式是通过段地址和偏移地址组合起来寻址的。的确是用两个16位的地址组合后,来扩大寻址范围。具体的计算方法是,第一个地址(称为段地址)*16+第二个地址(称为偏移地址)。这样获得的结果就是对应的物理地址。

像風一樣的男子 发表于 2012-12-22 20:45:55

shdfsbgfjks 发表于 2012-12-21 21:13 static/image/common/back.gif
你说的应该没错,不过由16条变成20条的增加了cpu的寻址范围,对于cpu来说没有这几个段的,内存增加了,就增 ...

恩,你说得对,但是你不是回答我所主要问的,不好意思哈

像風一樣的男子 发表于 2012-12-22 20:55:22

志华 发表于 2012-12-21 23:01 static/image/common/back.gif
地址总线跟cpu内存的位数没有对应关系,地址总线的20位,最后生成的也只是内存中的一个地址,这个地址对应的 ...

你只是回答了cpu访问内存时候,能够访问的最大访问范围。还没有说数据段还有代码段,还有栈,这几个段人为分长度的时候,最长都是16,而cpu地址总线是20即最大访问内存为fffff,而那个16和20相比不是相差4,不是浪费了4?

像風一樣的男子 发表于 2012-12-22 20:56:19

阿飞-祁磊 发表于 2012-12-21 23:25 static/image/common/back.gif
8086的寻址方式是通过段地址和偏移地址组合起来寻址的。的确是用两个16位的地址组合后,来扩大寻址范围。具 ...

你也没有回答我所最后问的。先等等别的答案先把,不好意思哈

志华 发表于 2012-12-24 00:35:13

像風一樣的男子 发表于 2012-12-22 20:56 static/image/common/back.gif
你也没有回答我所最后问的。先等等别的答案先把,不好意思哈

地址总线表示的是最大的内存访问长度。跟段所能表示的最大地址没有关系。
如果地址总线跟段的偏移一样大,那段地址也就没有意义了。你就一个偏移地址就能把所有的内存都访问到。
就像你说的,比如数据在段地址的ffff处,但他在实际的内存里面的地址肯定不是ffff,当然除了段地址是0,这时候如果只有16位,那就访问不到那个地址了。

落叶无痕 发表于 2013-4-24 20:20:58

路过看看呵呵

pmymy 发表于 2013-4-25 01:14:28

激动人心,无法言表!

vitamin 发表于 2013-4-25 08:35:55

一个代表了寻址能力,也就是说存储单元的个数,一个代表了机器字长存储字长,也就是说一个存储单元里有多少位,我是这样理解的。
页: [1]
查看完整版本: 栈,数据段,代码段和cpu外内部总线之间的关系