物理地址段地址

时间:2021-09-03 13:04:00

来源:本站

查看:0

  物理地址段地址是什么?先把段地址乘以16就等于把它向左移动4位?学习啦小编整理了相关资料,下面大家跟着学习啦小编一起去了解一下吧。

  物理地址段地址

  为什么段地址要_6

  因为x86处理器地址总线是20位,最大管理1M内存,对应物理地址是00000H-fffffH而内部数据总线、寄存器都是16位的,能表示的范围为0000H-ffffH如何用16位寄存器表示20位?想到这样一种方式:把两个16位寄存器相加得到20位,于是便有了物理地址=段地址_6+偏移地址相当于在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)地址加法器如何完成段地址_6的运算?就是将二进制形式存放的段地址左移4位。

  进一步思考,我们可看出:一个数据的十六进制形式左移1位,相当于乘以16;一个数据的十进制形式左移1位,相当于乘以10;一个X的进制的数据左移1位,相当于乘以X。发散思维。

  “ 段地址_6+偏移地址=物理地址”的本质含义是:CPU在访问内存时,用一个基础地址(段地址_6)和一个相对于基础地址的偏移地址相加,给出内存单元的物理地址。

  下面用两个比喻来说明“基础地址+偏移地址 = 物理地址的思想”

  比如说,学校、体育馆、图书馆同在一条笔直的单行路上,学校位于起点,你要去图书馆,问我那里的地址,我可以用两种方式告诉你图书馆的地址:

物理地址段地址

  (1)从学校走2826m到图书馆。这2826m可以认为是图书馆的物理地址。

  (2)从学校走2000m到体育馆,从体育馆再走826m到图书馆。第一个距离2000m,是相对于起点的基础地址,第二个距离826m是相对于基础地址的偏移地址。

  第二个比喻,比如,只能通过纸条来互相通信,你问我图书馆的地址我只能将它写在纸上告诉你。显然,我必须有一张可以容纳4位数据的纸条,才能写下2826这个数据。

物理地址段地址

  可不巧的是,我没有能容纳4位数据的纸条,仅有两张可以容纳3位数据的纸条。

  这样我只能这样告诉你数据。

  一个是200

  一个是826

  拿到这个数据后,你要做如下运算处理:

  200(段地址)_0+826(偏移地址) = 2826(物理地址)

  8086CPU就是这样一个只能提供两张3位数据纸条的CPU。