段地址*16+偏移地址=物理地址的本质含义【详解】

8086处理器通过段地址和偏移地址合成20位物理地址来访问内存,这种寻址方式类似于通过基础地址和相对偏移确定目标位置。文章通过学校、体育馆、图书馆的例子,解释了如何理解这种地址计算方法,并以纸条的比喻说明了在有限的地址空间内如何组合两个3位数字表示4位的物理地址。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、概述

    在8086机器中,物理地址是通过” 段地址 ⋅ 16 段地址 \cdot 16 段地址16 + 偏移地址“来确定的。cpu访问内存时,通过内部的部件给出基础地址( 段地址 ⋅ 16 段地址 \cdot 16 段地址16)和偏移地址,然后合成一个20位的物理地址,再把地址传输到主存储器(内存),从而确定一个内存单元的地址,这是8086cpu实现寻址功能的方式。(不同的机器可能有不同的设计)

2、举例说明

例子1:(说明”基础地址 + 偏移地址 = 物理地址“的思想)
    现有学校、体育馆、图书馆三个地点且在同一条直线上,学校位于起点,
![在这里插入图片描述](https://img-blog.csdnimg.cn/34864d6661f84f548e8e7b41c4dce07a.jpeg#pic_center ”位置关系图“)
现在你从学校出发去图书馆,问我图书馆的地址,我可以用两种那个方式回答:

  • (1) 从学校走2826m到图书馆。这个距离可以认为是图书馆的物理地址
  • (2) 从学校走2000m到体育馆,从体育馆再走826m到图书馆。第一个距离是2000是相对于起点的地址(基础地址),第二个距离826m是相对于基础地址的偏移地址(以基础地址为起点的基础地址,把它称呼为:偏移地址)

两种方式给出了同一位置的地址,第一种是直接给出物理地址2862m,第二种是用基础地址和偏移地址相加得到物理地址。

例子2:(进一步说明” 段地址 ⋅ 16 段地址 \cdot 16 段地址16 + 偏移地址 - 物理地址“思想)
    在例子1的基础上加上一些限制条件,我的回答只能通过写在纸条上传递给你(把距离写在这张纸上)。那么我现在手里的纸条必须满足我能写下2826这四位的数据,
![在这里插入图片描述](https://img-blog.csdnimg.cn/5fb8aea14b2e4fb1b566163e340db7e0.jpeg#pic_center ”容纳4位的纸条“)

但是,我手里没有能容纳4位的纸条,只有两张容纳3位的纸条(对比理解地址总线是20位,寄存器是16位),
在这里插入图片描述

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值