本文写的很详细,搞了很久才理解这块的东西,如有错误请指出.
为了方便理解,先补充一些知识
8位十六进制=32位二进制
字地址=存储字地址=存储单元地址
1字节=8位二进制
字(word)是一次存取,加工,传送的数据长度,字长是每个字所包含的位数,32位字长=4个字节
32(字长)/8(bit)=4(字节) 因此1个字=4个字节
大端和小端是指数据在内存中的存储模式,它由 CPU 决定:
1) 大端模式(Big-endian)是指将数据的低位(比如 1234 中的 34 就是低位)放在内存的高地址上,而数据的高位(比如 1234 中的 12 就是高位)放在内存的低地址上.
2) 小端模式(Little-endian)是指将数据的低位放在内存的低地址上,而数据的高位放在内存的高地址上。这种存储模式将地址的高低和数据的大小结合起来,高地址存放数值较大的部分,低地址存放数值较小的部分,这和我们的思维习惯是一致,比较容易理解。
12345678H是8位十六进制(也就是8个16进制数),左边大端方式12所在的位置是低地址,1个十六进制数转化为二进制占4位,因为一个字节是8位二进制,因此一个格子里放2个十六进制数.
列 字地址 0 4 8 ,实际是因为1个字=4个字节, 也就是0123(0)4567(4)891011(8)
对16个格子进行编号,第一行第一个是0, 就像二维数组那样. 0就是最低位
地址线和按字节寻址/按字寻址
总线中的每根“线”,一次只能传输0/1,所以一根线能传输1位(bit)的数据,两根线呢,能传输2位(bit)。但是,需要注意的是1bit能表达0和1,所以1bit能表达2个数,所以,3bit能表达的数其实是2^3个,也就是8。
地址线24根,按字节寻址范围为2^24 =16M;
若字长32位,则一个字有4个字节,所以要留2根地址线指出该字中的哪个字节[00,01,10,11],即寻址范围为 2^24−2=4M;
若字长16位,则一个字有2个字节,所以要留1根地址线指出该字中的哪个字节[0,1],即寻址范围为2^24−1=8M;