当前位置: 技术问答>linux和unix
16位CPU内存寻址问题
来源: 互联网 发布时间:2016-09-17
本文导语: 在16位的cpu中数据线是16位,地址线是20位的,其目的就是使CPU能寻址1M的内存,同时CPU中增加了4个寄存器,分别是CS、DS、ES、SS,2^4*2^16=1M,但是只有4个寄存器,也就是说只需要2位来选择用哪一个寄存器,但是这里用...
在16位的cpu中数据线是16位,地址线是20位的,其目的就是使CPU能寻址1M的内存,同时CPU中增加了4个寄存器,分别是CS、DS、ES、SS,2^4*2^16=1M,但是只有4个寄存器,也就是说只需要2位来选择用哪一个寄存器,但是这里用的是4位来选择用那个寄存器,如果是用4位来选择这个寄存器的话,那就是可以选择16个。并且每一个段是64k的内存,乘以16正好是1M,难道是说这个每一个寄存器对应着多个内存段?
我想问的就是这里CPU到底是怎么处理的,还是我想的就是错的?希望各位能帮我讲解一下。
我想问的就是这里CPU到底是怎么处理的,还是我想的就是错的?希望各位能帮我讲解一下。
|
20位地址的形成不是你这样子的。段基址*16+偏移地址。CS、DS、ES、SS都是段基址。偏移地址就是16位的一个数值,所以每个段最大是2^16=64KB。