【新书推荐】7.4节 寄存器间接和相对寻址方式

本节内容:当指令操作数为内存操作数,且内存操作数的地址使用指针寄存器表示时,称为寄存器间接寻址方式。

寄存器间接寻址方式:在地址表达式中,只能使用BX、SI、DI、BP四个指针寄存器用来寻址。

7.4.1 寄存器间接寻址方式

寄存器间接寻址方式的操作数在存储器中,操作数有效地址只能使用SI、DI、BX、BP四个寄存器。一般情况下,缺省段超越前缀,如果有效地址在SI、DI变址寄存器中,则默认段寄存器为DS。如果有效地址在BP堆栈基址指针寄存器中,默认段寄存器为SS。

图7-7 寄存器间接寻址方式

如图7-7所示:

假设:(DS)=5000H,(SI)=1234H。

MOV AX,[SI];意为将数据段SI(偏移地址1234H)处存储的值送入AX寄存器。存取的物理存储单元地址为51234H。如果该存储单元的内容是5678H,那么(AX)= 5678H。

在其他段中使用寄存器间接寻址方式:

MOV DL,CS:[BX]  ;将代码段CS内偏移地址BX处一个字节的值送入DL寄存器。

MOV [BP],CX    ;引用缺省段寄存器为SS,将CX寄存器的值送入堆栈段内偏移地址BP处。

寄存器间接寻址方式可以用于表格处理,只要修改指针寄存器的内容就可以方便的处理表中的另一项。

动手实验20:演示寄存器间接寻址方式

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

mov si,1234H;将偏移地址1234H送入SI寄存器。

         mov ax,[si];将数据段si偏移地址处的值送入ax寄存器。

图7-8 演示寄存器间接寻址方式

谨慎

在书写表示寄存器间接寻址时,寄存器必须要放在方括号中。

如:MOV [SI],AX   ;将AX的值送入数据段内偏移地址SI处对应的存储空间

        MOV SI,AX    ;将AX寄存器的值送入SI寄存器

7.5节 寄存器相对寻址方式

         本节内容:寄存器相对寻址方式。

寄存器相对寻址方式:指令操作数为内存操作数,操作数的有效地址是一个基地址寄存器(BX,BP)或变址寄存器(SI,DI)加上指令中给定的8位或16位位移量之和。

7.5.1 寄存器相对寻址方式

寄存器相对寻址方式的操作数在存储器中,操作数的有效地址是一个基地址寄存器(BX,BP)或变址寄存器(SI,DI)加上指令中给定的8位或16位位移量之和。如图7-9所示:

图7-9 寄存器相对寻址方式地址表达式

通常BX,SI,DI引用数据段DS,BP引用堆栈段SS。

在指令中给定的8位或16位位移量如果是有符号整数,则采用补码形式表示。如果是8位有符号整数,则带符号位扩展成16位。

如果所得地址超出FFFFH,则取其64K(FFFFH)的模。

如图7-10所示:

图7-10 寄存器相对寻址方式

假设(DS)=5000H,(DI)=3456H。

MOV AX,[DI+1234H] ;那么内存操作数[DI+1234H]的物理地址为5468AH(5000H*16+3456H+1234H),(AX)=5678H。

动手实验21:演示寄存器相对寻址方式

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

mov ax,5000H

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

mov word ptr [468ah],6789h;将6789H送入数据段偏移地址468aH处。

mov di,3456H;将偏移地址3456H送入di寄存器Mov ax,[di+1234H];将数据段偏移地址di+1234H地址处的值送入ax寄存器。

图7-11 寄存器相对寻址方式

在其他段中使用寄存器相对寻址方式:

MOV BX,[BP-4];默认引用SS段寄存器,将堆栈段BP-4偏移地址处存储的16位数存入BX。

MOV ES:[BX+5],AL  ;引用ES段寄存器,将AL的值存入附加段BX+5偏移地址处。

寄存器相对寻址方式通常用于表格处理,表格的首地址可设置为指令中的位移量,利用修改基址或变址寄存器的内容来存取表格中的项值。这种方式很有利于实现高级语言中对结构或记录等数据类型所实施的操作。我们将在后续课程的代码中反复练习。

提示

在书写基址或变址寄存器名一定要放在方括号中,而位移可不写在方括号中。如下两种方式等价:

    MOV AX , [SI+3]

    MOV AX,3[SI]

本文摘自编程达人系列教材《X86汇编语言基础教程》。资料下载www.bcdaren.com

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

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

相关文章

初步探索Pyglet库:打造轻量级多媒体与游戏开发利器

目录 pyglet库 功能特点 安装和导入 安装 导入 基本代码框架 导入模块 创建窗口 创建控件 定义事件 运行应用 程序界面 运行结果 完整代码 标签控件 常用事件 窗口事件 鼠标事件 键盘事件 文本事件 其它场景 网页标签 音乐播放 图片显示 祝大家新…

Debezium发布历史120

原文地址: https://debezium.io/blog/2022/04/07/read-only-incremental-snapshots/ 欢迎关注留言,我是收集整理小能手,工具翻译,仅供参考,笔芯笔芯. Read-only Incremental Snapshots for MySQL April 7, 2022 by K…

【数学建模】【2024年】【第40届】【MCM/ICM】【B题 搜寻潜水器】【解题思路】

一、题目 (一)赛题原文 2024 MCM Problem A: Resource Availability and Sex Ratios Maritime Cruises Mini-Submarines (MCMS), a company based in Greece, builds submersibles capable of carrying humans to the deepest parts of the ocean. A …

Netty应用(一) 之 NIO概念 基本编程

目录 第一章 概念引入 1.分布式概念引入 第二章 Netty基础 - NIO 1.引言 1.1 什么是Netty? 1.2 为什么要学习Netty? 2.NIO编程 2.1 传统网络通信中开发方式及问题(BIO) 2.1.1 多线程版网络编程 2.1.2 线程池版的网络编程…

腾讯云4核8G服务器多少钱?轻量和CVM报价2024新版

腾讯云4核8G服务器S5和轻量应用服务器优惠价格表,轻量应用服务器和CVM云服务器均有活动,云服务器CVM标准型S5实例4核8G配置价格15个月1437.3元,5年6490.44元,标准型SA2服务器1444.8元一年,轻量应用服务器4核8G12M带宽一…

网络扫描神器:Nmap 保姆级教程(附链接)

一、介绍 Nmap(Network Mapper)是一款用于网络发现和安全审计的开源工具。它最初由 Gordon Lyon(也被称为 Fyodor Vaskovich)开发,是一款功能强大且广泛使用的网络扫描工具。Nmap 允许用户在网络上执行主机发现、端口…

小程序-云开发 获取用户的openid等信息

说明介绍: 小程序云开发功能来获取用户的openid。 一般在我们需要用到用户登录的时候,通常是需要获取微信小程序的openid的,由于微信的限制,一般我们只能通过后台去调微信的接口,来授权获取,增加了后端开发…

第三百一十七回

文章目录 1. 概念介绍2. 实现方法2.1 hintText2.2 labelText2.3 controller 3. 示例代码4. 内容总结 我们在上一章回中介绍了"如何在输入框中处理光标"相关的内容,本章回中将介绍如何添加输入框默认值.闲话休提,让我们一起Talk Flutter吧。 1.…

车载测试Vector工具——常见问题汇总

车载测试Vector工具——常见问题汇总 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师(Wechat:gongkenan2013)。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何 消耗你的人和事,多看一眼都是你的…

无人机遥感技术应用分析,无人机遥感系统测绘技术详解

由于无人机具有机动快速、使用成本低、维护操作简单等技术特点,因此被作为一种理想的飞行平台广泛应用于军事和民用各个领域。尤其是进入二十一世纪以后,许多国家将无人机系统的研究、开发、应用置于优先发展的地位,体积小、重量轻、探测精度高的新型传感器的不断问世,也使无人…

结构体数组所有元素(1亿个元素)初始化为相同的值

一个结构体数组,有1亿个元素,每个元素都要初始化为相同的值,如果没有现成的语法直接支持这样的初始化操作,就得用for循环写,会不会非常耗时? 如果结构体里的成员都是一些简单的基本数据类型,整…

CodeWave学习笔记--博物馆预约管理系统

场馆信息管理页面搭建(PC) 首先是场馆实体的创建 页面的搭建 在总览界面下创建子界面venueManage界面 现在总览页中实现跳转场馆管理子界面 设计场馆管理界面 效果 访客预约申请页面搭建(H5) 添加H5端,点击确认即可 …