DJ13-1 汇编语言程序设计-2

news/2024/11/17 15:45:28/

目录

一、数据定义伪指令

1. 格式

2. 操作数

3. 重复操作数

4. 变量的使用

5. 属性定义伪指令 LABEL

6. 表达式运算符

二、符号定义伪指令


伪指令

指示性语句中的伪操作命令,无论表示形式或其在语句中所处的位置都与 CPU 指令相似,因此也称为伪指令,但两者之间有着重要的区别。

首先,CPU 指令在程序运行时由 CPU 执行,每条指令对应 CPU 的一种特定的操作,如数据传送、算术运算等;而伪指令在汇编过程中由汇编程序执行,如定义数据、分配存储区、定义段以及定义过程等。其次,汇编以后,每条 CPU 指令都被汇编并产生一条与之对应的目标代码,而伪指令则不产生与之对应的目标代码。

一、数据定义伪指令

1. 格式

{变量名}  伪指令  操作数1 {,操作数 ...}

花括号中的变量名为可选项。常用的数据定义伪指令有以下 5 种。

2. 操作数

操作数的值不能超过伪指令所定义的范围。

(易错)若想要实现 2 个以上字符,则必须使用 DB 字节方式进行定义。

(易错)DW 和 DD 伪指令不能用两个以上字符构成的字符串赋初值,否则将会出错。

3. 重复操作数

当同样的操作数重复多次时,可用 DUP 表示。

格式:变量名  伪指令  表达式1  DUP (表达式2)

  • 表达式 1 为重复次数
  • 表达式 2 为重复内容

4. 变量的使用

(1)在指令语句中引用

若在指令语句中直接引用变量名,则表示该操作数为存储器操作数,其表现形式为:

段地址:[ 偏移地址 ]

变量名代表:

  • 是一个存储器操作数
  • 段地址、偏移地址、类型

汇编后,表达式必须要有一个确定的值。这个值可能是数值,也可能是段地址和偏移地址。

对于 DATA2,汇编时只会写入它的段地址和偏移地址。这两个地址是汇编程序知道的,因为地址本来就是在汇编中分配的。但是汇编程序不知道这两个地址对应的存储单元存储的内容,因为内容要在执行后才能确定。因此,DATA2 + 1 代表偏移地址 + 1,而不是对应内容 + 1 。

当变量出现在寄存器间接寻址的操作数中时,它表示该变量的偏移地址。

(2)在伪指令中引用

5. 属性定义伪指令 LABEL

LABEL 对属性进行永久性修改,PTR 对属性进行暂时性修改。

举例

  • SUB1_FAR 与 SUB1 两个标号具有相同的逻辑地址。
  • SUB1_FAR 与 SUB1 被转移指令或调用指令使用时是指同一个入口地址。
  • SUB1只能被段内调用,SUB1_FAR可以被段间指令调用。

举例

  • DATA_BYTE 与 DATA_WORD 具有相同的段基址和偏移量。
  • DATA_BYTE 可以被用来存取一个字节数据,而 DATA_WORD 则不能。

6. 表达式运算符

关系运算符用来比较两个表达式的大小。

关系运算符比较的两个表达式必须同为常数或同一逻辑段中的变量

  • 若是常量的比较,则按无符号数进行比较。
  • 若是变量的比较,则比较它们的偏移量的大小。

关系运算的结果只能是 “真” 或 “假”,即全 1 或全 0 。

举例

举例

该语句在汇编时,根据符号常量 CNUM 的大小来决定 VAR 存储单元的值。

当 CNUM < 0ABH 时,则变量 VAR 的内容为 0FFFFH;否则,VAR 的内容为 0 。

举例

不能用来分离一个变量、寄存器或存储单元的内容。


 

二、符号定义伪指令

符号定义伪指令将常数或表达式等形式用某个指定的符号来表示。

格式:符号名  EQU  表达式

功能:用符号名来表示 EQU 右边的表达式。后面的程序中一旦出现该符号名,汇编程序就把它替换成该表达式。


http://www.ppmy.cn/news/4953.html

相关文章

JVM之堆

堆的基本内容&#xff1a; Java堆&#xff08;Java Heap&#xff09;是虚拟机所管理的内存中最大的一块&#xff0c;Java堆是被所有线程共享的一块内存区域&#xff0c;在虚拟机启动时创建&#xff0c;此内存区域的唯一目的就是存放对象实例&#xff0c;Java 世界里“几乎”所…

Mycat(6):mycat简单配置

1 找到conf/schema.xml并备份 2 配置虚拟表table[在schema里面] 其中 sharding-by-intfile 为rule.xml中的规则 规则文件为conf文件夹中的partition-hash-int.txt 3 配置数据节点dataNode 现在数据库新建3个数据库&#xff0c;skywalking&#xff0c;skywalking1&#xff0c;s…

艾美捷利妥昔单抗Rituximab参数及应用

艾美捷利妥昔单抗Rituximab背景&#xff1a; 利妥昔单抗是一种针对CD20抗原的基因工程嵌合鼠/人单克隆IgG1κ抗体。利妥昔单抗的分子量约为145 kD。利妥昔单抗由哺乳动物细胞&#xff08;中国仓鼠卵巢&#xff09;产生。 艾美捷利妥昔单抗Rituximab基本参数&#xff1a; 中文…

Jenkins(2)— 配置webhooks触发器

1、项目配置 项目配置 >> 构建触发器 >> 选择Gitee webhook触发器 生成Gitee WebHook密码&#xff1a;46d678257c0399b105635bcb9722ea09 2、Gitee配置 Gitee项目 >> 管理 >> 配置WebHooks 注意&#xff1a; 由于我的jenkins是部署在本地的&#xff…

【MySQL】-索引以及树的常用数据结构分析

作者&#xff1a;学Java的冬瓜 博客主页&#xff1a;☀冬瓜的主页&#x1f319; 专栏&#xff1a;【MySQL】 分享&#xff1a;纵一苇之所如&#xff0c;凌万顷之茫然。——《赤壁赋》 主要内容&#xff1a;MySQL中索引的介绍、创建索引、使用索引&#xff1b;索引背后的数据结构…

Pandas提取数据的几种方式

文章目录前言Pandas读取数据的几种方式1. read_csv2. read_excel3. read_sql总结前言 快期末了&#xff0c;数据挖掘的大作业需要用到python的相关知识&#xff08;这太难为我这个以前主学C的人了&#xff0c;不过没办法还是得学&#x1f602;&#xff09;&#xff0c;下面是我…

集合的框架体系和Collection接口

1.集合的理解和好处 前面我们保存多个数据使用的是数组&#xff0c;那么数组有不足的地方&#xff0c;我们分析一下 1.1数组 1)长度开始时必须指定&#xff0c;而且一旦指定&#xff0c;不能更改 2)保存的必须为同一类型的元素 3)使用数组进行增加/删除元素的示例代码-比较麻烦…

通过项目下的包名获取包下的全部类

通过项目下的包名获取包下的全部类 关键点&#xff1a; ClassLoader.getResources() 返回给定包目录下所有资源。 是一个非静态方法&#xff0c;它只能通过类对象访问&#xff0c;如果我们尝试使用类名访问方法&#xff0c;那么我们将得到一个错误。 方法可能在返回资源时抛出…