8086 汇编中的伪操作(伪指令)是给汇编器的指令,不生成机器码,仅用于控制汇编过程、定义数据 / 段 / 符号等。以下按功能分类汇总核心伪操作,覆盖 MASM/TASM 主流用法:
一、段定义与存储模式伪操作
| 伪操作 | 功能 |
|---|
.MODEL | 指定程序存储模式(TINY/SMALL/MEDIUM 等),简化段定义 |
SEGMENT/ENDS | 手动定义段的开始与结束(代码段、数据段、栈段) |
.CODE | 简化定义代码段(配合.MODEL使用) |
.DATA | 简化定义数据段(配合.MODEL使用) |
.STACK | 定义栈段并指定大小(如.STACK 100H) |
ASSUME | 关联段寄存器与逻辑段(如ASSUME CS:CODE, DS:DATA) |
ORG | 指定当前段的起始偏移地址(如ORG 100H用于 COM 程序) |
二、数据定义伪操作
| 伪操作 | 功能 |
|---|
DB | 定义字节型数据(8 位,如NUM DB 5, 'A') |
DW | 定义字型数据(16 位,如ARR DW 100H, 200H) |
DD | 定义双字型数据(32 位,如VAL DD 12345678H) |
DQ | 定义四字型数据(64 位) |
DT | 定义十字节型数据(80 位,用于浮点) |
DUP | 重复定义数据(如BUF DB 10 DUP(0),定义 10 个 0 字节) |
EQU | 符号常量赋值(如MAX EQU 100,常量不可重定义) |
= | 符号赋值(可重定义,如COUNT = COUNT + 1) |
三、程序结束与入口伪操作
| 伪操作 | 功能 |
|---|
END | 标记汇编源程序结束,主模块可指定入口标号(如END START) |
ENDM | 结束宏定义(与MACRO配合) |
四、过程与宏定义伪操作
| 伪操作 | 功能 |
|---|
PROC/ENDP | 定义过程(子程序)的开始与结束(如MAIN PROC) |
MACRO/ENDM | 定义宏指令(批量指令复用,如EXIT MACRO {MOV AH,4CH; INT 21H} ENDM) |
LOCAL | 宏 / 过程中定义局部标号,避免重名冲突 |
RET | 过程返回(虽为指令,但常与 PROC 配合,伪操作层面可归为过程相关) |
五、模块通信伪操作
| 伪操作 | 功能 |
|---|
PUBLIC | 声明本模块可被其他模块访问的符号(标号、过程、变量) |
EXTRN | 声明引用其他模块的外部符号(需指定类型,如EXTRN SUBP:PROC) |
INCLUDE | 嵌入指定文件内容(如头文件.inc,实现代码共享) |
六、其他常用伪操作
| 伪操作 | 功能 |
|---|
LABEL | 为内存单元定义别名与类型(如ARRAY_BYTE LABEL BYTE) |
TYPE | 获取数据类型的字节数(如TYPE NUM,NUM 为 DB 则返回 1) |
LENGTH | 获取数组元素个数(如LENGTH ARR,ARR 为10 DUP(0)则返回 10) |
SIZE | 获取数组总字节数(SIZE = TYPE × LENGTH) |