汇编学习笔记---2.2物理地址计算

要理解段地址偏移,首先要了解,为啥要计算段地址。

举个例子:8086CPU有20位地址总线,一次可以传送20为地址,达到1MB的寻址能力,但是,该CPU内部又是16位结构,一次处理传输和暂存的地址为16位,只能传送16位的地址,寻址能力只有64K,因此,通常8086CPU采用的是在内部用两个16位地址来合成一个20位物理地址,而这个20位的物理地址计算,就是通过段地址和偏移地址来合成的。

当8086CPU要读写内存时:

汇编学习笔记---2.2物理地址计算_第1张图片

在上述过程中,地址加法器是如何计算20位物理地址的呢?

这里,地址加法器采用的公式如下:

20位物理地址=段地址X16+偏移地址

比如,8086CPU要方位地址为123C8H的内存单元,那么计算过程是:

段地址:1230

偏移地址00C8

物理地址=1230X16+00C8=12300+00C8=123C8

注意:这里的X16不同于我们的数学计算哦

对于物理地址的计算,它的本质含义是这样的:CPU在访问内存时,用一个基础地址(段地址X16)和一个相对于基础地址的偏移地址相加,来给出内存单元的物理地址。

即:物理地址=段地址X16+偏移地址=基础地址+偏移地址

这里一个基础地址必然是16的倍数,所以一个段的起始地址也一定是16的倍数,偏移地址为16位,16位地址的寻址能力是64K,所以,一个段的最大长度为64K。

你可能感兴趣的:(汇编学习笔记---2.2物理地址计算)