常见伪指令
-
符号定义伪指令
- 赋值语句 EQU
- 格式:符号 EQU 表达式
- 将右侧表达式赋值给 左侧符号
- 注意
- 使用 EQU 定义的符号只能定义一次,并且不占用内存单元
- A1 EQU 30 ; A1 = 30
- 等号符号 =
- 格式:符号 = 表达式
- 注意
- 与 EQU 具体功能相同,但 ’=‘ 定义的符号可以被重新定义,也不占用内存符号
- A1 = 20 ; A1 = 30 ; A1 = 30
-
数据定义伪指令
- 为数据分配内存单元,并给所分配的第一个存储单元指定变量名
- 格式:变量名 伪指令助记符 操作数1 , 操作数2
-
DB 定义字节,操作数占一个字节空间
-
DW 定义字 ,操作数占两个字节的空间,存放是低字节放低地址,高地址放高地址
-
DD 定义双字操作数占四个字节空间,存放时,低字存放低地址,高字存放高地址
-
DQ 定义 8 字的空间
-
DT 定义 10 字的空间
-
?数据表达式 表示数据无固定值,只用来占据存储空间
-
DUP 数据表达式 重复数据
- 格式: n DUP (表达式1 ,表达式2 ……)n 为次数,括号内为数据项,表示数据项重复n次
- 在定义变量及存储 单元的同时,也定义了他们的类型属性,
- DUP 可以嵌套使用
-
例子
- AA DB 50H ; AB DW 1012 H ;
- AC DB ? ; AD DB 2 DUP (4,15)
- 执行完以上语句的存储空间示意图
-
例子
- DATA1 DB ‘AB’
- DATA2 DD ‘AB’
-
-
段定义伪指令
- SEGMENT / ENDS
- 用来定义各种类型的逻辑段 主要是一个声名
- 格式:段名 SEGMENT
- 段内语句
- 段名 ENDS
- ASSUME
- 段分配语句:指出段名与寄存器之间的关系,真正将 段名与寄存器连接起来
- 格式:ASSUME 段寄存器:段名,段寄存器:段名 ……
-
过程定义伪指令
- 格式:
- 过程名 PROC [NEAR / FAR ]
- RET
- 过程名 ENDP
-
宏定义伪指令
- 格式:
- 宏指令名 MACRO [形参1 ,形参 2 … ]
- ENDM
- 调用格式:
- 宏指令名 [参数1 ,参数2 ….]
-
地址定义伪指令 ORG
- 指明数据或程序的起始地址的偏移量,即从表达式提供的偏移地址开始存放
- 格式:ORG 数值表达式
- ORG 200H
- 从此语句起,后面的指令或数据从当当前段的 200H 初开始存放
- 地址指针计数器 $
- 表示当前地址指针计数器的值
- 例子
- DATA SEGMENT
- X DW 3,6 ,$+5 , 7 , 8
- DATA ENDS
- 则 $+5 = 0009H
TA SEGMENT - X DW 3,6 ,$+5 , 7 , 8
- DATA ENDS
- 则 $+5 = 0009H
- $ = 4 ; $+5 之前占用四个字节