8086CPU,主板设计有20根地址总线(每根传输1/0),为什么CPU对内存传输的最大范围是2^20=1MB?

来源:百度知道 编辑:UC知道 时间:2024/05/16 11:25:17
前面我都没问题,为什么最后是1MB?

我咋觉得2^20=1048576 (bit)
=131072 (byte)
=128 (kb)
=0.125 (mb)

是我哪里错了吗?
为什么说 这里是字节而不是位呢?

事实上,这个问题,4楼的 文刀舍予 已经回答得很正确、很清晰。但楼主可能一时没转过这个弯来,不要着急,下面我给举例说明一下。

20根地址线表示的是寻址范围,2的20次方代表1048576个地址,不是表示它能容纳多少个字节。如00000000000000000000B,表示内存单元的第一个字节;00000000000000000001B,表示内存单元的第二个字节;等等,以此类推。地址与这个指定地址的内容没有必然的联系。

我国以3位区号代表直辖市、以4位区号代表地级市。如010代表北京、0451代表哈尔滨,010相当于地址,北京相当于中国的一个单元。同理,0451相当于一个地址,哈尔滨则相当于中国的另一个单元。每个直辖市、地级市都有一个唯一的区号,犹如每个内存单元都有一个唯一的地址一样。只不过计算机中的内存地址是连续编号的,而区号并不一定连续编号。

8086采用段寻址,每个段的地址左移8位,然后再叠加地址。
比如DS:[BX],ds左移8位,再加上bx的地址。
这样正好操作到20位

而每个位所对应操作的存储单元就是1个字节。

所以1MB是这样得来的

内存中的每一个内存单元需要一个唯一的二进制地址来表示
CPU读取内存的时候是通过地址总线来确定内存的地址的

如果有1条地址总线的话,可以确定两个内存单元:1和0
如果有2条地址总线的话,4个:00 01 10 11
以此类推

是用地址总线来选择内存单元,不是把数据放到地址总线里

你能看出来为什么不能除以8了吧?再看不出来我就没法解释了

2^20=1048576 (byte)这里是字节而不是位(bit)
=1024(kb)
=1(mb)
所以你的结果要再乘以8就对了。
字节是基本单位,位是最小单位。想想这里为什么是字节而不是位了。我只能这样解释。。。呵呵。。。

应该是这么算的:
2^20(byte)=2^10(kb)
=1(MB)

为什么说 这里是字节而不是位呢?