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) |