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

  • 物理地址
  • 16位结构的CPU
  • 8086CPU给出物理地址的方法
  • 段地址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 0 8 2 6

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

  • 8086CPU就是这样一个只能提供两张3位数据纸条的CPU

段地址x16+偏移地址=物理地址的本质含义相关推荐

  1. 为什么要用段地址和偏移地址?

    本质含义 对于8086CUP而言 是一个16位结构的CPU 其具有的结构特性: (1)运算器一次最多可以处理16位的数据: (2)寄存器的最大宽度为16位: (3)寄存器和运算器之间的通路为16位 除 ...

  2. 基于8086CPU微处理器的汇编学习之段地址与偏移地址的分析

    人的记忆总是不靠谱的,早在几年前就看过汇编语言,由于没有总结下来资料,所以忘记了很多,所以重新梳理下汇编方面的知识,与君共勉. ------------------------------------ ...

  3. 逻辑地址(段地址,偏移地址)知识点全面回顾

    1.什么是逻辑地址? :逻辑地址是用户编程时使用的地址,分为段地址和偏移地址两部分. 逻辑地址表示形式:3020:055AH---------(汇编语言中,数字后面加H表示16进制) 2.为什么要用逻 ...

  4. 段地址和偏移地址是什么

    举个很简单的例子:如果说联合国用01表示中国,02表示美国,这里的01和02表示段地址.而各个国家的首都也是01,这个01就是偏移地址.那么0101就表示北京,0201表示华盛顿,这里段地址加偏移地址 ...

  5. 1MB等于多少BYTE?8086/8088寻址段地址与偏移地址解释

    8086/8088有20条地址线,它的直接寻址能力为1MB.也就是在一个系统中可以有多达1MB的存储器,地址从00000H-FFFFFH.给定任意一个20位物理地址,就可以从中取出需要的指令和操作数. ...

  6. 王爽汇编习题 : 给定段地址为0001H,仅通过变化偏移地址寻址,CPU的寻址范围为 ___ 到 ____。

    1 答案 : 给定段地址为0001H,仅通过变化偏移地址寻址,CPU的寻址范围为 0010H 到 1000FH . 2 解题过程: 物理地址=SA*16+EA EA的变化范围为0h~ffffh 物理地 ...

  7. 微型计算机原理偏移地址,微机原理试卷答案(B)

    2008 -2009 学年第 一 学期闽江学院( B ) 适用年级专业:06物本 考试形式:闭卷 考试课程:微型计算机原理与应用 班级 姓名 学号 一.填空题 20% 1.8086CPU 从偶地址访问 ...

  8. 汇编中偏移地址的理解

    偏移地址也称为偏移量,由于8086/8088CPU内部的ALU只能进行16位(16进制的话4X4,用4位表示,0x0000-0xFFFF)的运算,而8086/8088有20(16进制的话4X5,用5位 ...

  9. 关于“物理地址=段基址x16+段内偏移地址”

    以8086为例. 1.段基址和段内偏移地址都是16位(8086仅有16位数据总线):物理地址是20位(8086有20位地址总线). 2.由于段内偏移地址是16位,所以每个段最大2^16,即0xFFFF ...

  10. 【计组】偏移地址、段地址和寻址方式

    一.逻辑地址和物理地址 物理地址可以理解成是某个存储单元的真正的地址,然而地址总线有20位,寄存器们只有16位,无法完全访问到呀.所以就想到一个办法,搞出一个逻辑地址,之后编程都使用逻辑地址. 写法为 ...

最新文章

  1. 智源首席科学家张平文当选美国工业与应用数学学会会士
  2. 为什么 Java 不支持运算符重载?
  3. MySQL学习(四)查询
  4. day23 01 类的命名空间
  5. C# FTP操作类库
  6. Windows平台RTMP播放器/RTSP播放器如何在播放窗口添加OSD文字叠加
  7. 编写SQL Server数据库对象脚本的方法
  8. 掘金翻译计划 GitHub Star 破3千--终于等到你
  9. C#多线程学习(三) 生产者和消费者 1——解决线程间冲突的关键
  10. Ubuntu 14.04安装LAMP(Linux,Apache,MySQL,PHP)
  11. 移动互联网浩荡十年 有的升腾,有的陨落
  12. 【Urule源码解析1】开源可视化规则引擎
  13. c语言自动贩卖机找钱,c语言趣题之“找钱的方法数量 ”
  14. Spring Cache使用Redisson分布式锁解决缓存击穿问题
  15. android开发 重启app
  16. Intel SGX Explained
  17. c语言 前置声明,C语言编程开发前置声明都有哪些作用
  18. 从RMSE和MSE到更多选择:探索机器学习模型性能指标
  19. 计算机基础活页式教材模板,大学计算机基础WORD文章(排版前)
  20. [转载]从受欢迎角度分析哪些美国主流网站使用了哪些JS框架

热门文章

  1. Xilinx 7系列FPGA DDR3硬件设计规则
  2. Mac系统升级后开发者证书不被信任,报错/usr/bin/codesign --force --sign
  3. 查看Python版本和位数
  4. excel 隐藏和取消隐藏
  5. 计算机械效率的公式四种,初级中学物理计算公式定律整编汇总.doc
  6. 一直播、小咖秀大数据自动化运维实践
  7. 一、VMware及win10虚拟机的安装及环境配置
  8. win7下MyEclipse装Nutch1.7
  9. Matlab之min()、max()函数(求最小、最大值)
  10. ubuntu上打开md文件_Ubuntu 使用教程.md