【深入浅出汇编语言】寄存器精讲第二期

news2024/9/24 21:26:43

在这里插入图片描述
🌈个人主页:聆风吟
🔥系列专栏:数据结构、算法模板、汇编语言
🔖少年有梦不应止于心动,更要付诸行动。


文章目录

  • 📋前言
  • 一. ⛳️物理地址
  • 二. ⛳️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 要读写内存时:

  1. CPU 中的相关部件提供两个16位的地址,一个称为段地址,另一个称为偏移地址;
  2. 段地址和偏移地址通过内部总线送入一个称为地址加法器的部件;
  3. 地址加法器将两个16位地址合成为一个20位的物理地址;
  4. 地址加法器通过内部总线将20位物理地址送入输入输出控制电路;
  5. 输入输出控制电路将20位物理地址送上地址总线;
  6. 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可以看作是基础地址。



五. ⛳️段的概念

     错误认识:“段地址”这个名称中包含这“段”的概念,使人们误以为内存被划分成了一个一个段,每一个段有一个段地址。

     其实,内存并没有分段。段的划分来自于CPU,8086CPU用 “基础地址(段地址×16)+偏移地址=物理地址” 的方式给出内存单元的物理地址,使得我们可以用分段的方式来管理内存。因此,我们可以认为地址 10000H-100FFH 的内存单元组成一个段,也可以认为地址 10000H-10007FH、10080H-100FFH 的内存单元组成两个段,如下图所示:
在这里插入图片描述

    在编程时可以根据需要,将若干地址连续的内存单元看作一个段,用段地址x16定位段的起始地址(基础地址),用偏移地址定位段中的内存单元。有两点需要注意:

  1. 段地址x16必然是 16 的倍数,所以一个段的起始地址也一定是 16 的倍数;
  2. 偏移地址为 16 位,16 位地址的寻址能力为 64KB,所以一个段的长度最大为64KB。

知识拓展:
(1)CPU访问内存单元时,必须向内存提供内存单元的物理地址
(2)CPU 可以用不同的段地址和偏移地址形成同一个物理地址,比如 CPU 要访问 21F60H 单元,则它给出的段地址 SA 和偏移地址 EA 满足 SAx16+EA=21F60H 即可;
(3)偏移地址 16 位,变化范围为0~FFFFH,仅用偏移地址来寻址最多可寻 64KB 个内存单元,比如给定段地址 1000H,用偏移地址寻址,CPU 的寻址范围为:10000H~1FFFFH;
(4)在8086PC机中,存储单元的地址用两个元素来描述,即段地址和偏移地址
(5)我们经常会使用:①数据存在内存 2000:1F60 单元中;②数据存在内存的 2000H 段中的 1F60H 单元中,这两种描述中的一种表示 “数据在内存单元 21F60H 单元中”



六. ⛳️小结检测

5.1 🔔习题

(1):给定段地址为 0001H,仅通过变化偏移地址寻址,CPU 的寻址范围为_____到_____。

(2):有一数据存放在内存 20000H 单元中,现给定段地址为 SA,若想用偏移地址寻址到此单元。则 SA 应满足的条件是:最小为______,最大为______。(提示,反过来思考一下,当段地址给定为多少,CPU 无论怎么变化偏移地址都无法寻到20000H单元?)

5.2 🔔习题答案

注明:一天后习题答案将在评论区展示,一周或两周后将会把答案修订到文章中。



📝全文总结

本文主要讲解:

  1. 物理地址的定义:所有的内存单元构成的存储空间是一个一维的线性空间,每一个内存单元在这个空间中都有唯一的地址,我们将这个唯一的地址称为物理地址;
  2. 16位结构的CPU特征:运算器一次最多可以处理 16 位的数据;寄存器的最大宽度为 16 位;寄存器和运算器之间的通路为 16位;
  3. 8086CPU给出物理地址的方法:物理地址=段地址x16+偏移地址;
  4. “物理地址=段地址x16+偏移地址” 的本质含义:CPU 在访问内存时,用一个基础地址(段地址x16)和一个相对于基础地址的偏移地址相加,给出内存单元的物理地址;
  5. 段的概念:实际内存并没有分段,但平常我们可以用分段的方式来管理内存。

     今天的内容就到这里了,你对今天的内容是否有所掌握?如果还有疑问的话请在评论区里多多提问,大家可以一起帮你解决,让我们共同进步。创作不易,如果对你有用的的话点个赞支持下作者,你们的支持是作者创作最大的动力。关注我不迷路,让我们下期再见✋✋。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1152094.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

你被骗了吗?别拿低价诱骗机器视觉小白,4000元机器视觉系统怎么来的?机器视觉工程师自己组装一个2000元不到,还带深度学习

淘宝闲鱼,大家搜搜铺价格,特别是机器视觉小白。 机架:(新的)200元以下。(看需求,自己简单打光,买个50元的。如果复杂,就拿给供应商免费打光) 相机,镜头:&am…

有效的数独

题目链接 有效的数独 题目描述 注意点 board.length 9board[i].length 9board[i][j] 是一位数字(1-9)或者 ‘.’ 解答思路 首先判断行是否满足数独条件,再判断列是否满足数独条件,最后再判断划分的3x3方格是否满足数独条件…

2.数据结构-链表

概述 目标 链表的存储结构和特点链表的几种分类及各自的存储结构链表和数组的差异刷题(反转链表) 概念及存储结构 先来看一下动态数组 ArrayList 存在哪些弊端 插入,删除时间复杂度高需要一块连续的存储空间,对内存要求比较高,比如要申请…

SSM培训报名管理系统开发mysql数据库web结构java编程计算机网页源码eclipse项目

一、源码特点 SSM 培训报名管理系统是一套完善的信息系统,结合SSM框架完成本系统,对理解JSP java编程开发语言有帮助系统采用SSM框架(MVC模式开发),系统具有完整的源代码和数据库,系统主 要采用B/S模式开…

vim

简介 vim是一款多模式的文本编辑器,vim里面还有很多子命令,来进行代码的编写操作 常用模式图 命令模式 光标移动 shif $ 光标定义到当前行的最右侧结尾 shift ^ 光标定义到当前行的最左侧开头 shift g 光标定位到文本最末尾…

激光雷达点云基础-点云滤波算法与NDT匹配算法

激光雷达点云处理在五年前就做了较多的工作,最近有一些新的接触发现激光雷达代码原理五年前未见重大更新,或许C与激光雷达结合本身就是比较高的技术门槛。深度学习调包侠在硬核激光雷达技术面前可以说是完全的自愧不如啊。 1、点云滤波 在获取点云数据…

利用远程IO模块,轻松驾驭食品包装生产的自动化

常见的自动化包装系统,它的核心部分通常由一系列高端设备组成,包括自动开箱机、自动封箱机、自动捆扎机、装箱机器人、码垛机器人等。这些设备协同工作,形成一条高效运转的生产线,从开箱到装箱,再到码垛,每…

SpringCloud(二) Eureka注册中心的使用

在SpringCloud(一)中,我们学会了使用RestTemplate进行远程调用,但是在调用user-service时候需要在order-service中发送http请求,请求中需要书写对应微服务的ip和端口号,十分不方便,如果此时有多个user-service实例的话,就不知道调用哪个了(除非每次调用的时候都对ip和端口号进行…

SpringCloud 微服务全栈体系(九)

第九章 Docker 三、Dockerfile 自定义镜像 常见的镜像在 DockerHub 就能找到,但是我们自己写的项目就必须自己构建镜像了。 而要自定义镜像,就必须先了解镜像的结构才行。 1. 镜像结构 镜像是将应用程序及其需要的系统函数库、环境、配置、依赖打包而…

uniapp保存网络图片

先执行下载uni.downloadFile接口,再执行保存图片uni.saveImageToPhotosAlbum接口。 // 保存二维码 saveQrcode() {var _this this;uni.downloadFile({url: _this.qrcodeUrl, //二维码网络图片的地址success(res) {console.log(res);uni.saveImageToPhotosAlbum({fi…

MQTT 保留消息

一、保留消息简介 官方文档:https://www.emqx.io/docs/zh/v5.1/messaging/mqtt-retained-message.html 1、为什么需要保留消息 不考虑持久会话的因素,MQTT订阅只有在客户端连接之后才能创建主题。所以当消息到达服务端之后,服务端只会把消息…

Pycharm安装jupyter和d2l

安装 jupyter: jupyter是d2l的依赖库,没有它就用不了d2l pycharm中端输入pip install jupyter安装若失败则: 若网速过慢,则更改镜像源再下载: pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/ pip …

梯度下降|笔记

1.梯度下降法的原理 1.1确定一个小目标:预测函数 机器学习中一个常见的任务是通过学习算法,自动发现数据背后的规律,不断改进模型,做出预测。 上图的坐标系,横轴表示房子面积,纵轴表示房价,图…

注册资金认缴和实缴的区别

公司注册资本金实缴和认缴的区别有性质不同、意义不同、类型不同、缴纳时限不同、缴纳方式不同、包含范围不同等方面。 具体分析如下: 公司注册资本实缴制是营业执照注册资金有多少,该公司的银行验资账户上就得有相应金额的资金。实缴制需要占用公司的资…

__attribute__中的constructor和destructor--如何让程序退出时调用指定函数

背景 假设你在开发一个基础组件x,然后你设计了一个x_init接口用来初始化这个组件,相应地你设计了一个x_deinit来去初始化。这样其它模块要用到这个组件时,先调一下x_init, 用完了再调一下x_deinit。init和deinit这是一对很常见的接口&#x…

NB-IOT的粮库挡粮门异动监测装置

一种基于NBIOT的粮库挡粮门异动监测装置,包括若干个NBIOT开门监测装置,物联网后台管理系统,NBIOT低功耗广域网络和用户访问终端;各个NBIOT开门监测装置通过NBIOT低功耗广域网络与物联网后台管理系统连接,物联网后台管理系统与用户访问终端连接.NBIOT开门监测装置能够对粮库挡粮…

网络新闻发稿为何经久不衰?

有的老板可能看不到新闻营销的直接回报,一直不乐意在此方面投入,但是却看到竞争对手一直在搞新闻营销,也就安排个PR做做新闻公关。小马识途营销顾问观察,自互联网诞生以来,新闻营销一直是网络营销工作中的一个重点。 如…

JS中的元编程

ES6(ECMAScript 2015)新增了对 Reflect 和 Proxy 对象的支持,使得我们能够便捷地进行元编程。让我们通过示例来学习它们的用法。 1、什么是元编程 元编程 无异于 编程中的魔法!如果编写一个“能够读取、修改、分析、甚至生成新程…

提高小程序SEO 排名,9招优化技巧!

在当今移动互联网时代,小程序已经成为企业必不可少的一种营销手段,而如何让用户能够更容易地找到自己的小程序,就需要进行SEO优化,提升小程序的排名,本文将 为大家介绍9个小程序SEO优化技巧,帮助您的小程序…

黑客技术(网络安全)——如何高效学习

前言 前几天发布了一篇 网络安全(黑客)自学 没想到收到了许多人的私信想要学习网安黑客技术!却不知道从哪里开始学起!怎么学 今天给大家分享一下,很多人上来就说想学习黑客,但是连方向都没搞清楚就开始学习…