鱼C论坛

 找回密码
 立即注册
查看: 1753|回复: 8

[已解决]物理内存地址?

[复制链接]
发表于 2022-5-3 15:44:37 | 显示全部楼层 |阅读模式

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

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

x
8086CPU内部总线宽度是16位的,寻址能力是2^16,可它和外部器件的总线宽度是20位,寻址能力是2^20,

为了充分利用外部器件的的物理地址,就需要用段地址*16+偏移地址来索引物理地址

段地址左移一位就有了5位十六进制数,相当于二进制的20位,那偏移后的20位就已经可以寻址到2^20的地址,那为啥还要再加个偏移地址啊?
最佳答案
2022-5-3 17:28:01
竹逸 发表于 2022-5-3 17:14
我的问题你可能没听明白,我的意思是段地址经过地址加法器加工后组成了一个5位的地址,也就是向左移了一 ...

          经过左移的段地址相当于
段地址 x 10h
          这的确是一个 20 位的地址,但是,我想问的是,这个地址的末位数它不一直是 0 值吗?抛弃掉偏移,你用什么来表达末位数的改变?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-5-3 15:51:00 | 显示全部楼层
课件里是说用两个16位地址来合成一个物理地址,那它的意思是把一个16位地址用来锁定段地址(每一个地址都是段的索引,是存储单元的集合,而不是一个个的存储单元),一个16位地址用来索引该段中的每一个存储单元?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-3 16:51:52 | 显示全部楼层
本帖最后由 jackz007 于 2022-5-3 16:54 编辑

        8088 CPU 的数据总线是 16 位,表达空间是 2 ^ 16 = 64 KB;地址总线是 20 位,存储单总元总数为 2 ^ 20 = 64 KB x 16,16 位指针可寻址空间为 64 KB ,还有 15 个 64 KB 存储单元无法寻址。就好比车牌编码要求用 5 位数,而你的手上只有 4 位数的车牌,为了凑出 5 位数,就不得不用 2 块车牌拼凑 1 块的方法来解决问题。段地址 + 偏移地址的寻址方式和拼车牌的道理完全一样。
    16位段地址 x 10h + 16位偏移地址 = 20 位内存地址
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-5-3 16:58:48 | 显示全部楼层
jackz007 发表于 2022-5-3 16:51
8088 CPU 的数据总线是 16 位,表达空间是 2 ^ 16 = 64 KB;地址总线是 20 位,存储单总元总数为 2 ...

8086CPU是16位结构的CPU,也就是内部的数据总线、地址总线和控制总线都是16位,20位总线是CPU和外部器件的总线宽度吧?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-3 17:11:43 | 显示全部楼层
竹逸 发表于 2022-5-3 16:58
8086CPU是16位结构的CPU,也就是内部的数据总线、地址总线和控制总线都是16位,20位总线是CPU和外部器件 ...

        是的没错,16 位汇编 20 位地址的概念来自 8088 CPU
        
        请参考:https://baike.baidu.com/item/8088%E8%8A%AF%E7%89%87/10485632
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-5-3 17:14:27 | 显示全部楼层
jackz007 发表于 2022-5-3 16:51
8088 CPU 的数据总线是 16 位,表达空间是 2 ^ 16 = 64 KB;地址总线是 20 位,存储单总元总数为 2 ...

我的问题你可能没听明白,我的意思是段地址经过地址加法器加工后组成了一个5位的地址,也就是向左移了一位,相当于二进制的20位,这个加工后的20位地址就已经可以寻址到2^20的物理地址,那为啥还要再加个偏移地址?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-3 17:28:01 | 显示全部楼层    本楼为最佳答案   
竹逸 发表于 2022-5-3 17:14
我的问题你可能没听明白,我的意思是段地址经过地址加法器加工后组成了一个5位的地址,也就是向左移了一 ...

          经过左移的段地址相当于
段地址 x 10h
          这的确是一个 20 位的地址,但是,我想问的是,这个地址的末位数它不一直是 0 值吗?抛弃掉偏移,你用什么来表达末位数的改变?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-5-3 17:31:34 | 显示全部楼层
jackz007 发表于 2022-5-3 17:28
经过左移的段地址相当于

          这的确是一个 20 位的地址,但是,我想问的是,这个地址 ...


哦,对哦,也就是还有 1~F没有表示出来,所以就需要用到偏移地址来补足是吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-3 17:55:17 | 显示全部楼层
竹逸 发表于 2022-5-3 17:31
哦,对哦,也就是还有 1~F没有表示出来,所以就需要用到偏移地址来补足是吧

       没错!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-28 11:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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