物理内存地址?
8086CPU内部总线宽度是16位的,寻址能力是2^16,可它和外部器件的总线宽度是20位,寻址能力是2^20,为了充分利用外部器件的的物理地址,就需要用段地址*16+偏移地址来索引物理地址
段地址左移一位就有了5位十六进制数,相当于二进制的20位,那偏移后的20位就已经可以寻址到2^20的地址,那为啥还要再加个偏移地址啊? 课件里是说用两个16位地址来合成一个物理地址,那它的意思是把一个16位地址用来锁定段地址(每一个地址都是段的索引,是存储单元的集合,而不是一个个的存储单元),一个16位地址用来索引该段中的每一个存储单元? 本帖最后由 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 位内存地址 jackz007 发表于 2022-5-3 16:51
8088 CPU 的数据总线是 16 位,表达空间是 2 ^ 16 = 64 KB;地址总线是 20 位,存储单总元总数为 2 ...
8086CPU是16位结构的CPU,也就是内部的数据总线、地址总线和控制总线都是16位,20位总线是CPU和外部器件的总线宽度吧? 竹逸 发表于 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
jackz007 发表于 2022-5-3 16:51
8088 CPU 的数据总线是 16 位,表达空间是 2 ^ 16 = 64 KB;地址总线是 20 位,存储单总元总数为 2 ...
我的问题你可能没听明白,我的意思是段地址经过地址加法器加工后组成了一个5位的地址,也就是向左移了一位,相当于二进制的20位,这个加工后的20位地址就已经可以寻址到2^20的物理地址,那为啥还要再加个偏移地址? 竹逸 发表于 2022-5-3 17:14
我的问题你可能没听明白,我的意思是段地址经过地址加法器加工后组成了一个5位的地址,也就是向左移了一 ...
经过左移的段地址相当于
段地址 x 10h
这的确是一个 20 位的地址,但是,我想问的是,这个地址的末位数它不一直是 0 值吗?抛弃掉偏移,你用什么来表达末位数的改变? jackz007 发表于 2022-5-3 17:28
经过左移的段地址相当于
这的确是一个 20 位的地址,但是,我想问的是,这个地址 ...
哦,对哦,也就是还有 1~F没有表示出来,所以就需要用到偏移地址来补足是吧 竹逸 发表于 2022-5-3 17:31
哦,对哦,也就是还有 1~F没有表示出来,所以就需要用到偏移地址来补足是吧
没错!
页:
[1]