1、概述
在8086机器中,物理地址是通过” 段地址 ⋅ 16 段地址 \cdot 16 段地址⋅16 + 偏移地址“来确定的。cpu访问内存时,通过内部的部件给出基础地址( 段地址 ⋅ 16 段地址 \cdot 16 段地址⋅16)和偏移地址,然后合成一个20位的物理地址,再把地址传输到主存储器(内存),从而确定一个内存单元的地址,这是8086cpu实现寻址功能的方式。(不同的机器可能有不同的设计)
2、举例说明
例子1:(说明”基础地址 + 偏移地址 = 物理地址“的思想)
现有学校、体育馆、图书馆三个地点且在同一条直线上,学校位于起点,

现在你从学校出发去图书馆,问我图书馆的地址,我可以用两种那个方式回答:
- (1) 从学校走2826m到图书馆。这个距离可以认为是图书馆的物理地址
- (2) 从学校走2000m到体育馆,从体育馆再走826m到图书馆。第一个距离是2000是相对于起点的地址(基础地址),第二个距离826m是相对于基础地址的偏移地址(以基础地址为起点的基础地址,把它称呼为:偏移地址)
两种方式给出了同一位置的地址,第一种是直接给出物理地址2862m,第二种是用基础地址和偏移地址相加得到物理地址。
例子2:(进一步说明”
段地址
⋅
16
段地址 \cdot 16
段地址⋅16 + 偏移地址 - 物理地址“思想)
在例子1的基础上加上一些限制条件,我的回答只能通过写在纸条上传递给你(把距离写在这张纸上)。那么我现在手里的纸条必须满足我能写下2826这四位的数据,

但是,我手里没有能容纳4位的纸条,只有两张容纳3位的纸条(对比理解地址总线是20位,寄存器是16位),
这样我只能通过两种纸条的方式写下2826m(图书馆物理地址)这个数据。那么两个容纳三位数据的纸条怎么拼成一个4位的数据呢?如上图所示,一张纸条写200,另一张写826,显然这两个数据加起来不等于2826m,因此在200的基础上乘以10等于2000(对比理解 ” 段地址 ⋅ 16 段地址 \cdot 16 段地址⋅16“),再加上826(偏移地址)就等于2826,得到图书馆地址(给出内存单元的物理地址)。