段地址x16+偏移地址=物理地址的本质含义
段地址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+偏移地址=物理地址的本质含义相关推荐
- 为什么要用段地址和偏移地址?
本质含义 对于8086CUP而言 是一个16位结构的CPU 其具有的结构特性: (1)运算器一次最多可以处理16位的数据: (2)寄存器的最大宽度为16位: (3)寄存器和运算器之间的通路为16位 除 ...
- 基于8086CPU微处理器的汇编学习之段地址与偏移地址的分析
人的记忆总是不靠谱的,早在几年前就看过汇编语言,由于没有总结下来资料,所以忘记了很多,所以重新梳理下汇编方面的知识,与君共勉. ------------------------------------ ...
- 逻辑地址(段地址,偏移地址)知识点全面回顾
1.什么是逻辑地址? :逻辑地址是用户编程时使用的地址,分为段地址和偏移地址两部分. 逻辑地址表示形式:3020:055AH---------(汇编语言中,数字后面加H表示16进制) 2.为什么要用逻 ...
- 段地址和偏移地址是什么
举个很简单的例子:如果说联合国用01表示中国,02表示美国,这里的01和02表示段地址.而各个国家的首都也是01,这个01就是偏移地址.那么0101就表示北京,0201表示华盛顿,这里段地址加偏移地址 ...
- 1MB等于多少BYTE?8086/8088寻址段地址与偏移地址解释
8086/8088有20条地址线,它的直接寻址能力为1MB.也就是在一个系统中可以有多达1MB的存储器,地址从00000H-FFFFFH.给定任意一个20位物理地址,就可以从中取出需要的指令和操作数. ...
- 王爽汇编习题 : 给定段地址为0001H,仅通过变化偏移地址寻址,CPU的寻址范围为 ___ 到 ____。
1 答案 : 给定段地址为0001H,仅通过变化偏移地址寻址,CPU的寻址范围为 0010H 到 1000FH . 2 解题过程: 物理地址=SA*16+EA EA的变化范围为0h~ffffh 物理地 ...
- 微型计算机原理偏移地址,微机原理试卷答案(B)
2008 -2009 学年第 一 学期闽江学院( B ) 适用年级专业:06物本 考试形式:闭卷 考试课程:微型计算机原理与应用 班级 姓名 学号 一.填空题 20% 1.8086CPU 从偶地址访问 ...
- 汇编中偏移地址的理解
偏移地址也称为偏移量,由于8086/8088CPU内部的ALU只能进行16位(16进制的话4X4,用4位表示,0x0000-0xFFFF)的运算,而8086/8088有20(16进制的话4X5,用5位 ...
- 关于“物理地址=段基址x16+段内偏移地址”
以8086为例. 1.段基址和段内偏移地址都是16位(8086仅有16位数据总线):物理地址是20位(8086有20位地址总线). 2.由于段内偏移地址是16位,所以每个段最大2^16,即0xFFFF ...
- 【计组】偏移地址、段地址和寻址方式
一.逻辑地址和物理地址 物理地址可以理解成是某个存储单元的真正的地址,然而地址总线有20位,寄存器们只有16位,无法完全访问到呀.所以就想到一个办法,搞出一个逻辑地址,之后编程都使用逻辑地址. 写法为 ...
最新文章
- 智源首席科学家张平文当选美国工业与应用数学学会会士
- 为什么 Java 不支持运算符重载?
- MySQL学习(四)查询
- day23 01 类的命名空间
- C# FTP操作类库
- Windows平台RTMP播放器/RTSP播放器如何在播放窗口添加OSD文字叠加
- 编写SQL Server数据库对象脚本的方法
- 掘金翻译计划 GitHub Star 破3千--终于等到你
- C#多线程学习(三) 生产者和消费者 1——解决线程间冲突的关键
- Ubuntu 14.04安装LAMP(Linux,Apache,MySQL,PHP)
- 移动互联网浩荡十年 有的升腾,有的陨落
- 【Urule源码解析1】开源可视化规则引擎
- c语言自动贩卖机找钱,c语言趣题之“找钱的方法数量 ”
- Spring Cache使用Redisson分布式锁解决缓存击穿问题
- android开发 重启app
- Intel SGX Explained
- c语言 前置声明,C语言编程开发前置声明都有哪些作用
- 从RMSE和MSE到更多选择:探索机器学习模型性能指标
- 计算机基础活页式教材模板,大学计算机基础WORD文章(排版前)
- [转载]从受欢迎角度分析哪些美国主流网站使用了哪些JS框架
热门文章
- Xilinx 7系列FPGA DDR3硬件设计规则
- Mac系统升级后开发者证书不被信任,报错/usr/bin/codesign --force --sign
- 查看Python版本和位数
- excel 隐藏和取消隐藏
- 计算机械效率的公式四种,初级中学物理计算公式定律整编汇总.doc
- 一直播、小咖秀大数据自动化运维实践
- 一、VMware及win10虚拟机的安装及环境配置
- win7下MyEclipse装Nutch1.7
- Matlab之min()、max()函数(求最小、最大值)
- ubuntu上打开md文件_Ubuntu 使用教程.md