怎么实现按字节编址

zhuiri2005 2008-11-25 03:11:20
书上说,存储器可以按字节寻址,也可按字寻址。
按字寻址比较简单,但按字节寻址是如何实现的呢?

例如:一个1M*32位(4MB)的存储器,可以得到,该存储器有2^20个字存储单元,数据线宽度为32,地址线宽度为20。
当按字寻址时,需要20位的地址来表示一个地址编号;
当按字节寻址时,则需要22位的地址来表示一个地址编号。
而地址线只有20位,如果按字节寻址的话,貌似不够。
那如果按这么推理的话,凡是字长大于一个字节的存储器,都不能按字节寻址,好像好事实不符合。

是不是我的理解错了?那按字节寻址的原理究竟时怎样呢?请各位大侠帮忙解答一下,越详细越好。
...全文
683 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhuiri2005 2008-11-30
  • 打赏
  • 举报
回复
恩,我明白了,谢谢!
zhuiri2005 2008-11-26
  • 打赏
  • 举报
回复
也就是说,存储器地址线和地址总线不是同一个东西。
上面的例子中,存储器的地址线宽度为20,但地址总线宽度为22,对吗?

国内的教材说法太不统一了,很多地方都说得不清楚。
cnzdgs 2008-11-26
  • 打赏
  • 举报
回复
是你说的意思。
实际上这个问题都是CPU内部处理的,CPU对外是按字操作,内部逻辑再按字节处理。
cnzdgs 2008-11-25
  • 打赏
  • 举报
回复
储存器只能按字寻址,所以上面说要再加一个元件。4M储存器如果要按字节寻址需要22位地址。
zhuiri2005 2008-11-25
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 cnzdgs 的回复:]
从储存器角度来说,如果要将32位的储存器按字节寻址,需要另外再加一个电子元件,具体名称想不起来,其输入端连接储存器的32位数据线,输出端接8位数据总线,用地址总线的A20、A21来控制,根据地址解码来决定输出其中的8位数据。

从处理器角度来说,处理器每次存取32位数据,当需要读8位数据时,同样从储存器读入32位数据,再从中取出所需要的8位;当需要写8位数据时,先从储存器读入32位数据,然后改写其中的8位,再将这32位…
[/Quote]
但是1M*32位的存储器只有20根地址总线,难道存储器的容量不是按2^地址总线宽度*数据总线宽度来计算?
cnzdgs 2008-11-25
  • 打赏
  • 举报
回复
从储存器角度来说,如果要将32位的储存器按字节寻址,需要另外再加一个电子元件,具体名称想不起来,其输入端连接储存器的32位数据线,输出端接8位数据总线,用地址总线的A20、A21来控制,根据地址解码来决定输出其中的8位数据。

从处理器角度来说,处理器每次存取32位数据,当需要读8位数据时,同样从储存器读入32位数据,再从中取出所需要的8位;当需要写8位数据时,先从储存器读入32位数据,然后改写其中的8位,再将这32位数据存入储存器。

21,500

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧