鱼C论坛

 找回密码
 立即注册
查看: 2236|回复: 11

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

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



最佳答案

查看完整内容

段地址*16 这种方式就把寻址能力扩大到了20位(8086寄存器16位,最大是ffff,乘以16以后可以达到ffff0。再加上偏移地址可以寻址所有的地址空间),所以不会浪费。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-12-21 18:44:23 | 显示全部楼层

段地址*16 这种方式就把寻址能力扩大到了20位(8086寄存器16位,最大是ffff,乘以16以后可以达到ffff0。再加上偏移地址可以寻址所有的地址空间),所以不会浪费。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-12-21 21:13:23 | 显示全部楼层
你说的应该没错,不过由16条变成20条的增加了cpu的寻址范围,对于cpu来说没有这几个段的,内存增加了,就增加了pc机的工作能力,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-12-21 23:01:36 | 显示全部楼层
地址总线跟cpu内存的位数没有对应关系,地址总线的20位,最后生成的也只是内存中的一个地址,这个地址对应的也就是一个8位的字节。这个字节才是跟CPU内部的位数产生关系。
地址总线只是表示了CPU的寻址能力,8086CPU只有20根数据总线,他的最大寻址范围就是FFFFF。也就是说如果你的内存大于个这数,那也是没用的。因为CPU只能访问0-FFFFF的内容。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-12-21 23:25:19 | 显示全部楼层
8086的寻址方式是通过段地址和偏移地址组合起来寻址的。的确是用两个16位的地址组合后,来扩大寻址范围。具体的计算方法是,第一个地址(称为段地址)*16+第二个地址(称为偏移地址)。这样获得的结果就是对应的物理地址。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-12-22 20:45:55 | 显示全部楼层
shdfsbgfjks 发表于 2012-12-21 21:13
你说的应该没错,不过由16条变成20条的增加了cpu的寻址范围,对于cpu来说没有这几个段的,内存增加了,就增 ...

恩,你说得对,但是你不是回答我所主要问的,不好意思哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-12-22 20:55:22 | 显示全部楼层
志华 发表于 2012-12-21 23:01
地址总线跟cpu内存的位数没有对应关系,地址总线的20位,最后生成的也只是内存中的一个地址,这个地址对应的 ...

你只是回答了cpu访问内存时候,能够访问的最大访问范围。还没有说数据段还有代码段,还有栈,这几个段人为分长度的时候,最长都是16,而cpu地址总线是20即最大访问内存为fffff,而那个16和20相比不是相差4,不是浪费了4?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-12-22 20:56:19 | 显示全部楼层
阿飞-祁磊 发表于 2012-12-21 23:25
8086的寻址方式是通过段地址和偏移地址组合起来寻址的。的确是用两个16位的地址组合后,来扩大寻址范围。具 ...

你也没有回答我所最后问的。先等等别的答案先把,不好意思哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-12-24 00:35:13 | 显示全部楼层
像風一樣的男子 发表于 2012-12-22 20:56
你也没有回答我所最后问的。先等等别的答案先把,不好意思哈

地址总线表示的是最大的内存访问长度。跟段所能表示的最大地址没有关系。
如果地址总线跟段的偏移一样大,那段地址也就没有意义了。你就一个偏移地址就能把所有的内存都访问到。
就像你说的,比如数据在段地址的ffff处,但他在实际的内存里面的地址肯定不是ffff,当然除了段地址是0,这时候如果只有16位,那就访问不到那个地址了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-4-24 20:20:58 | 显示全部楼层
路过看看呵呵
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-4-25 01:14:28 | 显示全部楼层
激动人心,无法言表!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-4-25 08:35:55 | 显示全部楼层
一个代表了寻址能力,也就是说存储单元的个数,一个代表了机器字长存储字长,也就是说一个存储单元里有多少位,我是这样理解的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-17 16:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表