当前位置: 首页 > news >正文

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

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


文章目录

  • 📋前言
  • 一. ⛳️物理地址
  • 二. ⛳️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. 段的概念:实际内存并没有分段,但平常我们可以用分段的方式来管理内存。

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

相关文章:

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

🌈个人主页:聆风吟 🔥系列专栏:数据结构、算法模板、汇编语言 🔖少年有梦不应止于心动,更要付诸行动。 文章目录 📋前言一. ⛳️物理地址二. ⛳️16位结构的CPU三. ⛳️8086CPU给出物理地址的方…...

如何保证分布式情况下的幂等性

关于这个分布式服务的幂等性,这是在使用分布式服务的时候会经常遇到的问题,比如,重复提交的问题。而幂等性,就是为了解决问题存在的一个概念了。 什么是幂等 幂等(idempotent、idempotence)是⼀个数学与计算机学概念,常⻅于抽象代数中。 在编程中⼀个幂等操作的特点是…...

Mybatis特殊SQL的执行

文章目录 模糊查询批量删除动态设置表名添加功能获取自增的主键自定义映射resultMapresultMap处理字段和属性的映射关系 多对一映射处理级联方式处理映射关系使用association处理映射关系 分步查询1. 查询员工信息 2. 查询部门信息 一对多映射处理collection 模糊查询 /*** 根…...

MyBatis-Flex(一):快速开始

框架介绍 MyBatis-Flex 是一个优雅的 MyBatis 增强框架,它非常轻量、同时拥有极高的性能与灵活性。 MyBatis-Flex 官方文档 说明 本文参照官方文档的【快速开始】 章节,编写 Spring Boot 项目的代码示例。 快速开始 创建数据库表 直接参照官网示…...

Vue组件化

组件 组件是实现应用中局部功能的代码(HTML,CSS,JS)和资源(图片,声音,视频)的集合,凡是采用组件方式开发的应用都可以称为组件化应用 模块是指将一个大的js文件按照模块化拆分规则进行拆分成的每个js文件, 凡是采用模块方式开发的应用都可以称为模块化应用(组件包括模块) 传…...

nodejs+python+php+微信小程序-基于安卓android的健身服务应用APP-计算机毕业设计

考虑到实际生活中在健身服务应用方面的需要以及对该系统认真的分析,将系统权限按管理员和用户这两类涉及用户划分。  则对于进一步提高健身服务应用发展,丰富健身服务应用经验能起到不少的促进作用。 健身服务应用APP能够通过互联网得到广泛的、全面的宣…...

SpringCloud 微服务全栈体系(九)

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

Mybatis 多对一和一对多查询

文章目录 Mybatis 多对一 and 一对多查询详解数据库需求Mybatis代码注意 Mybatis 多对一 and 一对多查询详解 数据库 员工表 t_emp 部门表 t_dept CREATE TABLE t_emp (emp_id int NOT NULL AUTO_INCREMENT,emp_name varchar(25) CHARACTER SET utf8 COLLATE utf8_general_ci…...

MySQL的数据库操作、数据类型、表操作

目录 一、数据库操作 (1)、显示数据库 (2)、创建数据库 (3)、删除数据库 (4)、使用数据库 二、常用数据类型 (1)、数值类型 (2&#xff0…...

音视频技术开发周刊 | 317

每周一期,纵览音视频技术领域的干货。 新闻投稿:contributelivevideostack.com。 MIT惊人再证大语言模型是世界模型!LLM能分清真理和谎言,还能被人类洗脑 MIT等学者的「世界模型」第二弹来了!这次,他们证明…...

【JavaSE专栏58】“Java构造函数:作用、类型、调用顺序和最佳实践“ ⚙️⏱️

解析Java构造函数:作用、类型、调用顺序和最佳实践" 🚀📚🔍🤔📝🔄⚙️⏱️📖🌐 摘要引言1. 什么是构造函数 🤔2. 构造函数的类型与用途 📝1.…...

Ubuntu系统HUSTOJ 用 vim 修改php.ini 重启PHP服务

cd / sudo find -name php.ini 输出: ./etc/php/7.4/cli/php.ini ./etc/php/7.4/fpm/php.ini sudo vim /etc/php/7.4/cli/php.ini sudo vim /etc/php/7.4/fpm/php.ini 知识准备: vim的搜索与替换 在正常模式下键入 / ,即可进入搜索模式…...

案例分析真题-信息安全

案例分析真题-信息安全 2009年真题 【问题1】 【问题2】 【问题3】 2010年真题 【问题1】 【问题2】 【问题3】 2011 年真题 【问题1】 【问题2】 【问题3】 骚戴理解:这个破题目完全考的知识储备,不知道的连手都动不了,没法分析 2013年真题…...

envi5.3处理高分二号影像数据辐射定标大气校正

目录 一、多光谱影像处理 1. 辐射定标 2.大气校正 1. 需要准备一些数据: 2.大气校正过程 3、正射校正 二、全色影像处理 1. 辐射定标 2. 正射校正 三、图像融合 1.几何配准 2.图像融合 高分二号处理流程 envi5.3的安装教程: ENVI5.3安装 安装完ENVI5.3后&#xff0…...

C语言 结构体

结构体的自引用: 自引用的目的: 结构体的自引用就是指在结构体内部,包含指向自身类型结构体的指针。 像链表就会用到结构体的自引用。假如我们要创建链表 链表的没个节点都是一个结构体,它里面存放着它的数据和下个节点的地址。 假如我们用…...

frp-内网穿透部署-ubuntu22服务器-windows server-详细教程

文章目录 1.下载frp2.配置服务器2.1.配置frps.ini文件2.2.设置服务文件2.3.设置开机自启和服务操作2.4.后台验证2.5.服务器重启 3.配置本地window3.1.frpc配置3.2.添加开机计划启动3.3.控制台启动隐藏窗口 4.centos防火墙和端口3.1.开放端口3.2.查看端口 5.关闭进程5.1.杀死进程…...

MySQL内存使用的监控开关和使用查看

参考文档: https://brands.cnblogs.com/tencentcloud/p/11151 https://www.cnblogs.com/grasp/p/10306697.html MySQL如何使用内存 在MySQL中,内存占用主要包括以下几部分,全局共享的内存、线程独占的内存、内存分配器占用的内存&#xff0…...

数据库管理-第113期 Oracle Exadata 04-硬件选择(20231020)

数据库管理-第113期 Oracle Exadata 04-硬件选择(2023010290) 本周没写文章,主要是因为到上海参加了Oracle CAB/PAB会议,这个放在后面再讲,本期讲一讲Exadata,尤其是存储节点的硬件选择及其对应的一些通用…...

带着问题去分析:Spring Bean 生命周期 | 京东物流技术团队

1: Bean在Spring容器中是如何存储和定义的 Bean在Spring中的定义是_org.springframework.beans.factory.config.BeanDefinition_接口,BeanDefinition里面存储的就是我们编写的Java类在Spring中的元数据,包括了以下主要的元数据信息: 1&…...

C语言修行之函数篇(一)tolower —— 转换为小写字母

文章目录 函数说明函数声明函数返回值函数实现函数实例 函数说明 对于大写字母&#xff0c;如果在当前语言环境中存在小写表示形式&#xff0c;则tolower()返回其小写等效物。否则&#xff0c;tolower()函数执行相同的任务。 函数声明 #include <ctype.h> int tolower(…...

先整个经典的入门款耶路撒冷十字电阻吸波器玩吧,就冲5.8GHz的WiFi频段调——毕竟现在连吸波材料都得先蹭蹭网络信号的热度才好入门嘛

CST仿真吸波器选5.8GHz有个小小心思&#xff1a;单层电阻超材料的谐振频率一般和单元边长相关&#xff0c;大概是谐振波长的0.2-0.4倍&#xff08;等效介电常数εr算进去的话还要除以√εr的平方根&#xff09;&#xff0c;用的FR-4基板ε_r4.4、tanδ0.025、厚度1mm&#xff0…...

SAP IDoc入站出站处理全流程拆解:从WE19测试到IDOC_INPUT_函数调试

SAP IDoc接口开发实战&#xff1a;从零构建到生产环境调试全指南 在SAP系统集成领域&#xff0c;IDoc&#xff08;Intermediate Document&#xff09;作为企业级数据交换的标准载体&#xff0c;其重要性不言而喻明。不同于简单的文件传输&#xff0c;一个健壮的IDoc接口需要开发…...

企业级 Agent SKILL 最佳实践

最近&#xff0c;真的是屁颠屁颠地使用Openclaw作为业务核心为客户打造智能体的工作流程&#xff0c;包括组织、业务、技术三个全面的转型。同时&#xff0c;由于OpenAI的Sora下线&#xff0c;年初刚刚建立的AI漫剧工作流&#xff0c;资产库以及提示词都需要转换成替代品。还有…...

douyin-downloader:让每个人都能轻松获取无水印视频的技术利器

douyin-downloader&#xff1a;让每个人都能轻松获取无水印视频的技术利器 【免费下载链接】douyin-downloader 项目地址: https://gitcode.com/GitHub_Trending/do/douyin-downloader 一、问题破局&#xff1a;揭开抖音内容获取的神秘面纱 1.1 内容获取的三大拦路虎 …...

PyQt新手必看:Fluent Widgets vs PyQtGraph,哪个更适合你的GUI项目?

PyQt新手指南&#xff1a;Fluent Widgets与PyQtGraph的深度对比与选型策略 当你第一次踏入PyQt GUI开发的世界&#xff0c;面对琳琅满目的框架选择&#xff0c;是否感到迷茫&#xff1f;Fluent Widgets和PyQtGraph这两个名字可能已经出现在你的搜索列表中&#xff0c;但它们究竟…...

苹果全球推出关键MDM工具和企业服务

随着苹果在企业市场份额的稳步增长&#xff0c;该公司终于在美国以外地区推出了其面向中小型企业&#xff08;SMB&#xff09;的实用服务集合Apple Business Essentials&#xff0c;但这次它不再叫Apple Business Essentials&#xff0c;而且其中大部分服务都将免费提供。Apple…...

Java面向对象实战:从0到1手写奇偶判断工具类[特殊字符]新手保姆级教程

&#x1f338;你好呀&#xff01;我是断弦承露&#x1f31f;感谢陪伴&#xff5e; 小白博主在线求友&#x1f33f; 跟着小白学/Java/软件设计/鸿蒙开发/芯片开发&#x1f4d6;专栏汇总&#xff1a;《软件设计师》专栏 | 《Java》专栏 | 《 RISC-V 处理器实战》专栏 | 《Flutter…...

[DRAM Test]从入门到精通:全面解析DRAM内存测试工具与实战故障排查

1. DRAM测试工具全景解析 内存作为计算机系统的核心组件&#xff0c;其稳定性直接影响整机性能。我经手过的蓝屏案例中&#xff0c;超过60%最终都指向内存问题。目前市面上的DRAM测试工具主要分为三大类&#xff1a; 应用层工具以HCI MemTest为代表&#xff0c;这类工具运行在操…...

手把手教你用丹青识画:智能影像雅鉴系统保姆级入门教程

手把手教你用丹青识画&#xff1a;智能影像雅鉴系统保姆级入门教程 1. 认识丹青识画系统 "以科技之眼&#xff0c;点画意之睛。"这句话完美诠释了丹青识画系统的核心理念。这是一款将人工智能技术与东方美学相结合的创新工具&#xff0c;能够自动分析图像内容并生成…...

python-flask-djangol框架的考公考编学习课程资料推荐系统

目录技术选型与架构设计数据采集与处理推荐算法实现用户画像构建前端交互与功能部署与优化合规与扩展项目技术支持源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作技术选型与架构设计 采用Python Flask作为后端框架&#xff0c;搭配SQLAlch…...