石家庄科技网站建设,wordpress多站点建站,参考消息网国内新闻,互联网保险公司十大排名#x1f308;个人主页#xff1a;聆风吟 #x1f525;系列专栏#xff1a;数据结构、算法模板、汇编语言 #x1f516;少年有梦不应止于心动#xff0c;更要付诸行动。 文章目录 #x1f4cb;前言一. ⛳️物理地址二. ⛳️16位结构的CPU三. ⛳️8086CPU给出物理地址的方… 个人主页聆风吟 系列专栏数据结构、算法模板、汇编语言 少年有梦不应止于心动更要付诸行动。 文章目录 前言一. ⛳️物理地址二. ⛳️16位结构的CPU三. ⛳️8086CPU给出物理地址的方法四. ⛳️“物理地址段地址x16偏移地址” 的本质含义五. ⛳️段的概念六. ⛳️小结检测5.1 习题5.2 习题答案 全文总结 前言 hello! 各位铁子们大家好哇今天又给大家带来了《寄存器精讲第二期》不知道咱们的第一期大家都学会了吗如果还有小伙伴们需要学习或者复习的都可以点击下方专栏进行跳转。 系列专栏本期文章收录在《汇编语言》大家有兴趣可以浏览和关注后面将会有更多精彩内容 欢迎大家关注点赞收藏⭐️留言 一. ⛳️物理地址 CPU访问内存单元时要给出内存单元的地址。所有的内存单元构成的存储空间是一个一维的线性空间每一个内存单元在这个空间中都有唯一的地址我们将这个唯一的地址称为物理地址。CPU 通过地址总线送入存储器必须是一个内存单元的物理地址且物理地址必须要先在内部形成。 二. ⛳️16位结构的CPU
概括的讲16位结构描述了一个CPU具有一下几个方面特征
运算器一次最多可以处理 16 位的数据寄存器的最大宽度为 16 位寄存器和运算器之间的通路为 16位。 三. ⛳️8086CPU给出物理地址的方法 8086有 20 位地址总线可以传送 20 位地址寻址能力为 1 MB。8086内部为 16 位结构它只能传送 16位地址表现出的寻址能力却只有 64KB。那么问题来了8086CPU如何用内部16位的数据转换成20位的地址呢8086CPU 采用一种在内部用两个 16 位地址合成的方法来形成一个 20 位的物理地址。 如下图所示 由上图所示当8086CPU 要读写内存时
CPU 中的相关部件提供两个16位的地址一个称为段地址另一个称为偏移地址;段地址和偏移地址通过内部总线送入一个称为地址加法器的部件地址加法器将两个16位地址合成为一个20位的物理地址地址加法器通过内部总线将20位物理地址送入输入输出控制电路输入输出控制电路将20位物理地址送上地址总线20位物理地址被地址总线传送到存储器。 地址加法器采用物理地址段地址x16偏移地址的方法用段地址和偏移地址合成物理地址。例如8086CPU要访问地址为 123C8H 的内存单元此时加法器的工作过程如下图所示 知识拓展 1一个数据的二进制形式左移 1 位相当于该数据乘以 2 2一个数据的二进制形式左移 n 位相当于该数据乘以 2 的 N 次方 3地址加法器如何完成段地址x16的运算就是将以二进制形式存放的地址左移 4 位计算机中所有的信息都是以二进制形式存储 有以上我们可以看出一个数据的十六进制形式左移 1 位相当于乘以 16一个数据的十进制形式左移 1 位相当于乘以 10一个数据的 X 进制形式左移 1 位相当于乘以 X。 四. ⛳️“物理地址段地址x16偏移地址” 的本质含义 本质含义CPU 在访问内存时用一个基础地址(段地址x16)和一个相对于基础地址的偏移地址相加给出内存单元的物理地址。更通俗的来说8086CPU 的这种寻址功能是 “基础地址偏移地址物理地址” 寻址模式的一种具体实现方案。8086CPU中段地址x16可以看作是基础地址。 五. ⛳️段的概念 错误认识“段地址”这个名称中包含这“段”的概念使人们误以为内存被划分成了一个一个段每一个段有一个段地址。 其实内存并没有分段。段的划分来自于CPU8086CPU用 “基础地址(段地址×16)偏移地址物理地址” 的方式给出内存单元的物理地址使得我们可以用分段的方式来管理内存。因此我们可以认为地址 10000H-100FFH 的内存单元组成一个段也可以认为地址 10000H-10007FH、10080H-100FFH 的内存单元组成两个段如下图所示 在编程时可以根据需要将若干地址连续的内存单元看作一个段用段地址x16定位段的起始地址(基础地址)用偏移地址定位段中的内存单元。有两点需要注意
段地址x16必然是 16 的倍数所以一个段的起始地址也一定是 16 的倍数偏移地址为 16 位16 位地址的寻址能力为 64KB所以一个段的长度最大为64KB。 知识拓展 1CPU访问内存单元时必须向内存提供内存单元的物理地址 2CPU 可以用不同的段地址和偏移地址形成同一个物理地址比如 CPU 要访问 21F60H 单元则它给出的段地址 SA 和偏移地址 EA 满足 SAx16EA21F60H 即可 3偏移地址 16 位变化范围为0~FFFFH仅用偏移地址来寻址最多可寻 64KB 个内存单元比如给定段地址 1000H用偏移地址寻址CPU 的寻址范围为10000H~1FFFFH 4在8086PC机中存储单元的地址用两个元素来描述即段地址和偏移地址 5我们经常会使用①数据存在内存 20001F60 单元中②数据存在内存的 2000H 段中的 1F60H 单元中这两种描述中的一种表示 “数据在内存单元 21F60H 单元中”。 六. ⛳️小结检测
5.1 习题
(1)给定段地址为 0001H仅通过变化偏移地址寻址CPU 的寻址范围为_____到_____。
(2)有一数据存放在内存 20000H 单元中现给定段地址为 SA若想用偏移地址寻址到此单元。则 SA 应满足的条件是最小为______最大为______。提示反过来思考一下当段地址给定为多少CPU 无论怎么变化偏移地址都无法寻到20000H单元
5.2 习题答案
注明一天后习题答案将在评论区展示一周或两周后将会把答案修订到文章中。 全文总结
本文主要讲解
物理地址的定义所有的内存单元构成的存储空间是一个一维的线性空间每一个内存单元在这个空间中都有唯一的地址我们将这个唯一的地址称为物理地址16位结构的CPU特征运算器一次最多可以处理 16 位的数据寄存器的最大宽度为 16 位寄存器和运算器之间的通路为 16位8086CPU给出物理地址的方法物理地址段地址x16偏移地址“物理地址段地址x16偏移地址” 的本质含义CPU 在访问内存时用一个基础地址(段地址x16)和一个相对于基础地址的偏移地址相加给出内存单元的物理地址段的概念实际内存并没有分段但平常我们可以用分段的方式来管理内存。 今天的内容就到这里了你对今天的内容是否有所掌握如果还有疑问的话请在评论区里多多提问大家可以一起帮你解决让我们共同进步。创作不易如果对你有用的的话点个赞支持下作者你们的支持是作者创作最大的动力。关注我不迷路让我们下期再见✋✋。