段地址x16+偏移地址=物理地址的本质含义

物理地址

CPU访问内存单元时,要给出内存单元的地址,所有的内存单元构成的存储空间是一个一维的线性空间,每一个内存单元在这个空间都有唯一的地址,我们将这个唯一的地址称为物理地址。
CPU通过地址总线送到存储器的,必须是一个内存单元的物理的地址。在CPU向地址总线上发出物理地址之前,必须要在内部先形成这个物理地址,不同的CPU可以有不同的形成物理地址的方式,我们现在讨论8086CPU是如何在内部形成内存单元的物理地址的。

16位结构的CPU

我们说的8086CPU的上一代CPU(8080,8085)等是8位机,而8086是16位机,也可以说8086是16位结构的CPU,16位结构描述了一个CPU具有下面以下几方面的结构特性

  • 运算器一次最多可以处理16位的数据
  • 寄存器的最大宽度为16位
  • 寄存器和运算器之间的通路为16位

8086CPU给出物理地址的方法

8086CPU有20位地址总线,可以传送20位地址,达到1MB寻址能力,8086CPU又是16位结构,在内部一次性处理,传输,暂时存储的地址为16位,从8086CPU的内部结构来看,如果将地址从内部简单地发出,那么它只能送出16位的地址,表现出的寻址能力只有64KB

  • 8086CPU采用一种在内部用两个16位地址合成的方法来形成一个20位的物理地址。

如图所示:
在这里插入图片描述

当8086CPU读写内存时:

  • CPU中的相关部件两个16位的地址,一个称为段地址,另一个称为偏移地址
  • 段地址和偏移地址通过内部总线送入一个称为地址加法器的部件
  • 地址加法器将两个16位地址合成为一个20位的物理地址
  • 地址加法器通过内部总线将20位物理地址送入输入输出控制电路
  • 输入输出控制电路将20位物理地址送上地址总线
  • 20位物理地址被地址总线传送到存储器

地址加法器采用物理地址=段地址X16+偏移地址的方法用段地址和偏移地址合成物理地址。如图所示:
在这里插入图片描述

段地址x16+偏移地址=物理地址的本质含义

本质含义:

  • CPU在访问内存时,用一个基础地址和一个相对于基础地址的偏移地址相加,给出内存单元的物理地址。
  • 更一般的说,8086CPU的这种寻址功能是"基础地址+偏移地址=物理地址"寻址模式的一种具体实现方案,8086CPU中,段地址x16可看作是基础地址。

我们用2个与CPU无关的例子做进一步的比喻说明

在这里插入图片描述
你要去图书馆,问我那里的地址,我可以用两种方式告诉你图书馆的地址:

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

我们为上面的例子加一些限制条件,比如,只能通过纸条来互相通信,你问我图书馆的地址我只能将它在纸条上告诉你,显然,我必须有一张可以容纳4位数据的纸条,才能写下2826这个数据。

可以写下4位数据的纸条
2 8 2 6

可不巧的是,我没有能容纳4位数据的纸条,仅有两条可以容纳3位数据的纸条,这样我只能以这种方式告诉你2827这个数据。

2 0 08 2 6

在第一张纸条上写上200(段地址),在第二张纸条上写下826(偏移地址),假设我们事前对这种情况又有过相关的约定,你得到这两张纸后,做这样的运算:200(段地址)X10+826(偏移地址)=2826(物理地址)

  • 8086CPU就是这样一个只能提供两张3位数据纸条的CPU
  • 7
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值