地址段地址是什么?先把段地址乘以16就等于把它向左移动4位?学识网小编整理了相关资料,下面大家跟着学识网小编一起去了解一下吧。
物理地址段地址
为什么段地址要*16
因为x86处理器地址总线是20位,最大管理1M,对应物理地址是00000H-fffffH而内部数据总线、寄存器都是16位的,能表示的范围为0000H-ffffH如何用16位寄存器表示20位?想到这样一种方式:把两个16位寄存器相加得到20位,于是便有了物理地址=段地址*16+偏移地址相当于在16位地址后面加4个0,形成20位地址具体过程如下:段地址和偏移地址通过内部总线传入到地址加法器的部件; 地址加法器将两个16位地址合并为一个20位的物理地址;
相当于左移四位,然后地址相加,得到一个二十位的地址,因为当时地址线20根,寄存器最高16位,要寻址1M的空间,必须用段地址和偏移地址结合的。
物理地址是20位的,段地址和偏移地址都是16位的。先把段地址乘以16就等于把它向左移动4位,这样它就变成了20位地址的高16位,再加上16位的偏移地址就是最终的物理地址。
我们看一个例子,一个数据为2H,二进制形式为10B,对其进行左移运算:
观察上面移位次数和各种形式数据的关系,我们可以发现:
(1)一个数据的二进制形式左移1位,相当于该数据乘以2;
(2)一个数据的二进制形式左移N位,相当于该数据乘以2的N次方;
(3)地址加法器如何完成段地址*16的运算?就是将二进制形式存放的段地址左移4位。