迅维网

标题: 地址线编号为什么是add[3-31]而不是add[0-31] [打印本页]

作者: 南门二饼    时间: 2011-5-13 12:39
标题: 地址线编号为什么是add[3-31]而不是add[0-31]
add[0-2]干什么用了
作者: 大开幕    时间: 2011-5-14 19:32
因为CPU是8位寻址
作者: 南门二饼    时间: 2011-5-14 23:46
回复 大开幕 的帖子

就是说,cpu读到一个起始地址,那后七个就自动都算出来了。所谓的8位连读。

但这与29条线有什么关系?
作者: dadabd    时间: 2011-5-27 08:40
我也想知道?
作者: wuxianglin2000    时间: 2011-5-27 16:24
好像还有的是add[0~1]不接,不知道为什么!会不会和64,32位机寻址方式有关呢,一直没搞明白
作者: nicolas    时间: 2011-6-3 13:12
本帖最后由 nicolas 于 2011-6-3 13:14 编辑

举个例子给大家:
期末考试了,现在发试卷,如果老师一个一个人的发,就要走到每个人的位置上,也就是一位一位的读写
有的老师比较懒,假如你们班有8列8排,老师一次发8张,只要递给每一列第一排的那个人就好了,然后依次往后发,收卷的时候正好相反.这样老师就只要找到每列第一个学生的位置就好了.
而对于32位的CPU也一样,它8位8位的读写,就是把你们班32排8列的人分成32组,8人一组,老师吧试卷只需要交给8人中的第一个就好了,CPU地址又是从高位到低位依次读写,当他读到倒数第3位时,他就不往下读了(懒),然后直接往后3位读写数据,那么后三位地址线你认为还有用吗?已经聋子的耳朵,摆不摆一样...
------------------------------------------------------------------------------------------------------------------
  字节0        字节1        字节2        字节3        字节4        字节5        字节6        字节7
   ↑              ↑              ↑              ↑               ↑             ↑              ↑              ↑
0x0000   0x0001     0x0002       0x0003      0x0004     0x0005     0x0006      0x0007
如上图,我们给出8个字节以及8个字节对应的地址,从0x0000~0x0007
ARM32位寻址时,一次对32bit=4字节进行操作。那么第一次访问的4个字节的地址=0x0000。那么下一次访问的地址是0x0001吗?
错啦,是0x0004,因为第一次寻址的时候已经对0x0000--0x0003地址进行了操作。
那么,我们来归纳一下每次访问的地址:
1st :0x0000
2nd:0x0004
3st :0x0008
4th :0x000C
如果换算成二进制,可以发现最低的两位总是00
同样的道理,如果MCU和Memory之间采用16bit接口,那么最低位总是0





欢迎光临 迅维网 (https://www.chinafix.com/) Powered by Discuz! X3.4