【新书推荐】7.2节 寄存器寻址方式和直接寻址方式

本节内容:寄存器寻址方式的操作数在CPU内部的寄存器中,指令中指定寄存器号。

寄存器寻址方式:16位的寄存器操作数可以是AX、BX、CX、DX、SI、DI、SP、BP共计8个16位通用寄存器;8位寄存器操作数可以是AH、AL、BH、BL、CH、CL、DH、DL共计8个8位寄存器;

7.2.1 寄存器寻址方式

16位的寄存器操作数可以是AX、BX、CX、DX、SI、DI、SP、BP共计8个16位通用寄存器;

8位寄存器操作数可以是AH、AL、BH、BL、CH、CL、DH、DL共计8个8位寄存器。

举例

MOV SI,AX        ;将AX寄存器内存储的值赋给SI寄存器。

MOV AL,DH      ;将DH寄存器内存储的值赋给AL寄存器。

由于操作数在寄存器中,不需要通过访问存储器来取得操作数,所以采用这种寻址方式

的指令执行速度较快。如图7-3所示,AX寄存器包含两个字节存储单元,其中高字节存储单元AH中存储12H,低字节存储单元AL中存储34H。

图7-3 AX寄存器

动手实验18:演示寄存器寻址方式

如图7-4所示,在debug调试器中输入mov ah,12h;mov al,34h;mov si,ax;三条汇编指令,观察寄存器AH、AL、AX和SI的值。

图7-4 演示寄存器寻址方式

思考

         为何MOV AX,1234h、MOV SI,AX这样的寄存器赋值语句称为寻址方式呢?

         我们可以理解为CPU内AX、BX、CX等14个寄存器看作是以字母符号命名的寄存器存储单元,内存中的存储单元同样也是由寄存器构成,只是由于内存中的存储单元太多,所以使用地址编号的方式命名。

7.3节 直接寻址方式

         本节内容:在指令中直接包含操作数的有效地址称为直接寻址方式。

直接寻址方式:直接寻址有两种形式,一是直接给出二进制数表示的地址;二是直接给出地址标号。

7.3.1 直接寻址方式

直接寻址方式的操作数在存储器中,指令直接包含有操作数的有效地址。操作数一般存放在数据段,所以操作数的地址由DS加上指令直接给出的16位偏移得到。

如果采用段超越前缀,则操作数也可包含在数据段外的其他段中,如ES、SS段。

                                                       

图7-5 直接寻址方式

如图7-5所示,设DS=5000H,地址51234H字存储单元的内容是5678H,那么执行MOV AX,[1234H]后AX=5678H。

动手实验19:演示直接寻址方式

如图7-6所示,在debug调试器内输入:

mov ax,5000H;

mov ds,ax;将段值5000H赋给DS段寄存器。

接着输入mov word ptr [1234H],6789H;将6789H存入数据段偏移地址1234H处。

最后输入mov ax,[1234H];将数据段偏移地址1234H处的值6789H送入AX寄存器。

                                               图7-6 演示直接寻址方式

如果在ES段,并使用段超越前缀:MOV ES:[5678H],BL,表示将BL寄存器中的值存储在ES附加段内的偏移地址5678H处。

         使用直接寻址方式时,我们很少会直接使用数值表示偏移地址,而是在数据段中,采用数据定义的形式定义一个变量,这个变量称为数据段内的地址标号。

         例如下面的数据段定义:

         data segment

         var dw 6789H 

         data ends

var dw 6789H  的意思为在数据段地址标号“var”处,以dw字为单位分配2个字节内存空间,并且初始化将其为6789H。

在代码段中,读取数据段内var地址标号对应存储单元内的值:mov ax,ds:[var],这条语句就是典型的直接寻址方式。直接寻址方式常用于处理单个存储器变量的情况,可以在64KB的段内寻找操作数。

谨慎

立即寻址和直接寻址书写的方法不同,直接寻址的地址要放在方括号中,往往用变量名表示。

mov ax,1234h  ;立即寻址方式

mov ax,ds:[var];直接寻址方式

本文摘自编程达人系列教材《X86汇编语言基础教程》。

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

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

相关文章

echarts 曲线图自定义提示框

<!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>曲线图</title><!-- 引入 ECharts 库 -->…

猪圈密码.

1.介绍 又称朱高密码、共济会密码、共济会暗号、共济会员密码&#xff0c;是一种以格子为基础的简单替代式密码。即时使用符号&#xff0c;也不影响密码分析&#xff0c;亦可用其他替代式密码。 2.产生背景 这是一种外形古怪的密码&#xff0c;已经传递了几百年。没有人明确…

防疫物资管理新篇章:Java+SpringBoot实战

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…

【知识整理】技术新人的培养计划

一、培养计划落地实操 1. 概要 新人入职&#xff0c;要给予适当的指导&#xff0c;目标&#xff1a; 1、熟悉当前环境&#xff1a; 生活环境&#xff1a;吃饭、交通、住宿、娱乐 工作环境&#xff1a;使用的工具&#xff0c;Mac、maven、git、idea 等 2、熟悉并掌握工作技…

【C++从0到王者】第四十二站:类型转换

文章目录 一、 C语言中的类型转换1. C语言中的类型转换2.一个常见的坑 二、为什么C需要四种类型转换三、C强制类型转换1.static_cast2.reinterpret_cast3.const_cast4.dynamic_cast 四、RTTI 一、 C语言中的类型转换 1. C语言中的类型转换 在C语言中&#xff0c;如果赋值运算符…

免费软件推荐-开源免费批量离线图文识别(OCR)

近期要批量处理图片转电子化&#xff0c;为了解决这个世纪难题&#xff0c;试了很多软件&#xff08;华为手机自带OCR识别、 PandaOCR、天若OCR、Free OCR&#xff09;等软件&#xff0c;还是选择了这一款&#xff0c;方便简单 一、什么是OCR? 光学字符识别&#xff08;Opt…

大模型学习 一

https://www.bilibili.com/video/BV1Kz4y1x7AK/?spm_id_from333.337.search-card.all.click GPU 计算单元多 并行计算能力强 指数更重要 A100 80G V100 A100 海外 100元/时 单卡 多卡并行&#xff1a; 单机多卡 模型并行 有资源的浪费 反向传播 反向传播&#xff08;B…

C++11新特性(一)

目录 C11简介 统一的列表初始化 变量类型推导 std::initializer_list 声明 auto decltype nullptr STL的一些变化 右值引用 右值引用和左值引用 右值引用适用场景 移动构造和移动语义 对类的影响 可变参数模板 递归函数方式展开参数包 STL容器中的empalce相…

使用Launch4j将jar包转成.exe可执行文件

Launch4j官网:Launch4j - Cross-platform Java executable wrapper 然后点击上面按钮 随便写个文件名

2024-02-08(Flume)

1.Flume 的架构和MQ消息队列有点类似 2.Flume也可以做数据的持久化操作 在Channel部分选择使用File channel组件 3.Flume进行日志文件监控 场景&#xff1a;企业中应用程序部署后会将日志写入到文件中&#xff0c;我们可以使用Flume从各个日志文件将日志收集到日志中心以便…

数据结构(C语言)代码实现(八)——顺序栈实现数值转换行编辑程序括号分配汉诺塔

目录 参考资料 顺序栈的实现 头文件SqStack.h&#xff08;顺序栈函数声明&#xff09; 源文件SqStack.cpp&#xff08;顺序栈函数实现&#xff09; 顺序栈的三个应用 数值转换 行编辑程序 顺序栈的实现测试 栈与递归的实现&#xff08;以汉诺塔为例&#xff09; 参考资…

【Leetcode】236. 二叉树的最近公共祖先

文章目录 题目思路代码结果 题目 题目链接 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为&#xff1a;“对于有根树 T 的两个节点 p、q&#xff0c;最近公共祖先表示为一个节点 x&#xff0c;满足 x 是 p、q 的祖先且 x 的深度尽可…

[算法前沿]--058- LangChain 构建 LLM 应用详细教程

什么是LLMs? LLM,即大型语言模型,是指经过大量文本数据训练的最先进的语言模型。它利用深度学习技术来理解和生成类似人类的文本,使其成为各种应用程序的强大工具,例如文本完成、语言翻译、情感分析等。LLMs最著名的例子之一是 OpenAI 的 GPT-3,它因其语言生成能力而受到…

C语言笔试题之求出二叉树的最大深度(递归解决)

实例要求&#xff1a; 1、给定一个二叉树 root &#xff0c;返回其最大深度&#xff1b;2、二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数&#xff1b; 案例展示&#xff1a; 实例分析&#xff1a; 1、判断根节点是否为空&#xff1b;2、分别递归处理左…

containerd中文翻译系列(十九)cri插件

cri插件包含的内容比较多&#xff0c;阅读之前请深呼吸三次、三次、三次。 CRI 插件的架构 本小节介绍了 containerd 的 cri 插件的架构。 该插件是 Kubernetes 容器运行时接口&#xff08;CRI&#xff09; 的实现。Containerd与Kubelet在同一个节点上运行。containerd内部的…

1987-2022年各省进出口总额数据整理(含进口和出口)(无缺失)

1987-2022年各省进出口总额数据整理&#xff08;含进口和出口&#xff09;&#xff08;无缺失&#xff09; 1、时间&#xff1a;1987-2022年 2、来源&#xff1a;各省年鉴、统计公报 3、指标&#xff1a;进出口总额&#xff08;万美元&#xff09;、进口总额&#xff08;万美…

Vuex介绍和使用

1. 什么是Vuex Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式和库。它解决了在大型 Vue.js 应用程序中共享和管理状态的问题&#xff0c;使得状态管理变得更加简单、可预测和可维护。 在 Vue.js 应用中&#xff0c;组件之间的通信可以通过 props 和事件进行&#xff0c…

SCI 1区论文:Segment anything in medical images(MedSAM)[文献阅读]

基本信息 标题&#xff1a;Segment anything in medical images中文标题&#xff1a;分割一切医学图像发表年份: 2024年1月期刊/会议: Nature Communications分区&#xff1a; SCI 1区IF&#xff1a;16.6作者: Jun Ma; Bo Wang(一作&#xff1b;通讯)单位&#xff1a;加拿大多…

文件绕过-Unsafe Fileuoload

文件上传基础 什么是文件上传 将客户端数据以文件形式封装通过网络协议发送到服务器端&#xff0c;在服务器端解析数据&#xff0c;最终在服务端硬盘上作为真实的文件保存。 通常一个文件以HTTP协议进行上传时&#xff0c;将以POST请求发送至Web服务器&#xff0c;Web服务器…

【初中生讲机器学习】6. 分类算法中常用的模型评价指标有哪些?here!

创建时间&#xff1a;2024-02-07 最后编辑时间&#xff1a;2024-02-09 作者&#xff1a;Geeker_LStar 你好呀~这里是 Geeker_LStar 的人工智能学习专栏&#xff0c;很高兴遇见你~ 我是 Geeker_LStar&#xff0c;一名初三学生&#xff0c;热爱计算机和数学&#xff0c;我们一起加…