鱼C论坛

 找回密码
 立即注册
查看: 1709|回复: 3

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

[复制链接]
发表于 2012-12-20 22:56:50 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
小甲鱼,你好!我是您的终极粉丝,我想问个很郁闷我的问题,那就是:原来8086cpu内部是16位的嘛对吧,而而内部是用16位的段地址和16位的偏移地址通过地址加法器形成和外部地址总线20条相匹配的20条总线对吧?但是,数据段和代码段的长度最长是64K,还有栈最长的长度也是64k,对吧?可是那这样不管是数据段还是代码段还 是栈,它们都是长度不超过64k即16位,而cpu的地址总线有20位即能访问1MB的内存,那这样20和16相比不是总线多了4,这样不是浪费了4条总线?求解答,可能是我对内部这些关系理解错了,能不能在把我的主题中“栈,数据段,代码段和cpu外内部总线之间的关系”解释解释???谢谢,最近要考微机了,呜呜呜。:lol
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-12-23 10:29:19 | 显示全部楼层
首先,禁止点将!其次是问题:
8086有20位地址总线,所以寻址能力是1MB,但他却是16位的CPU,所以才会有加法器这个东西

8086CPU将1MB的存储器空间分成许多逻辑段,每个段最大限制为64KB, 段地址就是逻辑段在主存中的起始位置。为了能用16位寄存器表示段地址,8086规定段地址必须是模16地址。

其次这个问题,你可以看下IBM的那本汇编书,你最后的问题就是说,既然8086限制了64kb,何必又要用20位地址总线,浪费4位...这个问题,你也理解下数据段长度和寻址范围,提醒一点:原始的创造又时间不需要什么原因! 8086本来是16的,他非要加一个20位的,为了不浪费使用,然后CPU把1MB的分割为...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-12-23 11:50:40 | 显示全部楼层
本帖最后由 紫色/tp雲天 于 2012-12-23 11:53 编辑

:dizzy:你的意思是这3个段的寻址范围只有64KB而地址总线却是1MB,1MB-64KB剩下的段就没有用是吗?
sa*16+ea=20位物理地址,其寻址长度64KB是指的ea的变化范围吧,具体的物理地址范围还要看sa的啊
我也是新手,不知道回答的对不对
另求个QQ交流群啊,我实在是没看到哪里有官方交流群。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-4-24 19:52:16 | 显示全部楼层
来看看呵呵
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-10-7 20:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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