【新书推荐】7.1节 立即寻址方式

本节内容:立即寻址方式的操作数包含在指令中,作为指令的一部分,跟在操作码后存放在代码段。这种操作数称为立即数。

立即寻址方式的实现:8086计算机中,立即数可以是8位,也可以是16位。按照高高低低的原则存放在内存代码段。

例1:立即数——源程序imaddr.asm

7.1.1 立即寻址方式的实现

8086计算机中,立即数可以是8位,也可以是16位。按照高高低低的原则存放。

举例

mov ax,1234h  ;将立即数1234h存储到ax寄存器中。

如图7-1所示,mov ax,1234h汇编指令对应的硬编码为B83412,存储在内存中的代码段。

                                                                 图7-1 立即寻址方式

如图7-2所示,在debug调试器中演示立即寻址方式的实现。运行debug后,输入a命令,接着输入mov ax,1234h汇编指令,两次回车后,输入u命令,观察反汇编代码。在代码段073f:0100地址处存储mov ax,1234h汇编指令的硬编码B83412H。

图7-2 演示立即寻址方式

         立即寻址方式主要用于给寄存器赋初始值。

7.1.2 例1:立即数

举例说明:立即数是存放在哪里的?                                              

仔细观察下面imaddr.asm源程序的代码和注释。

示例代码1

;程序名:imaddr.asm

;假设此程序的代码段标号为code,数据段标号为data。

;演示立即寻址方式

;==============================================

assume cs:code,ds:data                             

x = 1234H         ;符号x等于1234H

y EQU 1234H   ;符号y等于1234H

;数据段的定义                

data segment                                       

z dw 1234h       ;变量地址标号z处,以dw为单位分配两个字节空间,并初始化为 1234h。

char db "423423"    ;地址标号char处以db为单位分配6个字节空间,并初始化为"423423"。

data ends

;代码段的定义                                   

code segment                                      

start:       

         ;将data段值赋给ds数据段                            

         mov ax,data                                

         mov ds,ax

         ;                          

         mov ax,x  ;编译时将符号x替换为1234H,立即数在代码段的指令代码中             

         mov bx,y  ;编译时将符号y替换为1234H,立即数在代码段的指令代码中

         mov cx,z  ;执行时将变量地址标号z处存储的值1234H送入cx寄存器,立即数在数

;据段。

         ; 调用DOS系统4CH号功能,退出程序

         mov ax,4c00h

         int 21h

code ends                                             

end start ;start为代码段的起始地址

请读者debug调试器内测试上述程序,使用‘U’命令观察反汇编代码中的立即数。

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

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

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

相关文章

MedSAM in 3D Slicer: 分割一切医学图像

MedSAM-Lite 3D Slicer简介 这是 MedSAM 的官方 3D Slicer 插件存储库,可用于在医学图像中分割任何物体。 什么是MedSAM:点击查看这篇文章 SCI 1区论文:Segment anything in medical images 查看分割演示👇 添加视频 文中涉及到的视频前往…

工厂方法模式(Factory Method Pattern)

原文地址:https://jaune162.blog/design-pattern/factory-method-pattern/ 概述 工厂方法模式(Factory Method Pattern)是一个对象创建型模式。 定义一个用于创建对象的接口,让子类决定实例化哪一个类。 Factory Method使一个类的实例化延迟到其子类。 – 《设计模式:可复…

手动汉化unity编辑器,解决下载中文语言报错问题

手动汉化unity编辑器,解决下载中文语言报错问题 START 最近在下载支持微信小程序版本的编辑器时,中文语言包,一直无法下载。记录一下 手动汉化unity编辑器的方法 ,帮助和我遇到同样问题的人。 解决方案 1. 下载汉化包 https:…

jvm几个常见面试题整理

1. Full GC触发机制有如下5种情况。 (1)调用System.gc()时,系统建议执行Full GC,但是不必然执行。(2)老年代空间不足。(3)方法区空间不足。(4)老年代的最大可用连续空间小于历次晋升到老年代对象的平均大小就会进行Full GC。(5)由Eden区、S0(From)区向S…

元宇宙虚拟数字人实训室:推动高校培养创新技术人才

随着元宇宙时代的到来,虚拟数字人技术逐渐成为当下火热的产业赛道之一。虚拟数字人涉及了计算机、数字媒体、市场营销等学科技术领域,高校可以通过搭建元宇宙虚拟数字人实训室,有效培养对元宇宙行业的专业化理解和研究能力的专业型创新人才。…

Unity类银河恶魔城学习记录4-4 4-5 P57-58 On Hit Impactp- Attack‘direction fix源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释,可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili Entity.cs using System.Collections; using System.Collections.Generic;…

【数据结构】堆(创建,调整,插入,删除,运用)

目录 堆的概念: 堆的性质: 堆的存储方式: 堆的创建 : 堆的调整: 向下调整: 向上调整: 堆的创建: 建堆的时间复杂度: 向下调整: 向上调整&#xff…

通过websocket 获取mt4软件 实时数据

首先前往github下载 https://github.com/mikha-dev/mt4-websockets 项目 把里面的项目复制到mt4软件目录里。 操作如下: 点开文件->打开数据文件夹 复制进去。 记得点击工具->选项 勾选这些选项。 我们会在 mt4里看到websockets这个文件,右键…

Mysql为什么使用B+Tree作为索引结构

B树和B树 一般来说,数据库的存储引擎都是采用B树或者B树来实现索引的存储。首先来看B树,如图所示: B树是一种多路平衡树,用这种存储结构来存储大量数据,它的整个高度会相比二叉树来说,会矮很多。 而对于数…

【网页设计期末】茶文化网站

本文资源:https://download.csdn.net/download/weixin_47040861/88818886 1.题目要求 设计要求: (1)网站页面数量不少于4个,文件命名规范,网站结构要求层次清楚,目录结构清晰,代码…

【RT-DETR有效改进】计算训练好权重文件对应的FPS、推理每张图片的平均时间(科研必备)

👑欢迎大家订阅本专栏,一起学习RT-DETR👑 一、本文介绍 本文给大家带来的改进机制是利用我们训练好的权重文件计算FPS,同时打印每张图片所利用的平均时间,模型大小(以MB为单位),同时支持batch_size功能的选择,对于轻量化模型的读者来说,本文的内容对你一定有…

HarmonyOS4.0——IPC与RPC通信

基本概念 IPC(Inter-Process Communication)与RPC(Remote Procedure Call)用于实现跨进程通信,不同的是前者使用Binder驱动,用于设备内的跨进程通信,后者使用软总线驱动,用于跨设备…