要理解段地址偏移,首先要了解,为啥要计算段地址。
举个例子:8086CPU有20位地址总线,一次可以传送20为地址,达到1MB的寻址能力,但是,该CPU内部又是16位结构,一次处理传输和暂存的地址为16位,只能传送16位的地址,寻址能力只有64K,因此,通常8086CPU采用的是在内部用两个16位地址来合成一个20位物理地址,而这个20位的物理地址计算,就是通过段地址和偏移地址来合成的。
当8086CPU要读写内存时:
在上述过程中,地址加法器是如何计算20位物理地址的呢?
这里,地址加法器采用的公式如下:
20位物理地址=段地址X16+偏移地址
比如,8086CPU要方位地址为123C8H的内存单元,那么计算过程是:
段地址:1230
偏移地址00C8
物理地址=1230X16+00C8=12300+00C8=123C8
注意:这里的X16不同于我们的数学计算哦
对于物理地址的计算,它的本质含义是这样的:CPU在访问内存时,用一个基础地址(段地址X16)和一个相对于基础地址的偏移地址相加,来给出内存单元的物理地址。
即:物理地址=段地址X16+偏移地址=基础地址+偏移地址
这里一个基础地址必然是16的倍数,所以一个段的起始地址也一定是16的倍数,偏移地址为16位,16位地址的寻址能力是64K,所以,一个段的最大长度为64K。
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-11-16 12:42:36