80X86 汇编语言之伪指令语句

1、处理器选择伪指令

2、数据定义伪指令

3、符号定义伪指令

3.1、等价伪指令

语句格式:符号名 EQU 表达式

功能:为常量、表达式及其他各种符号定义一个等价的符号名,但不申请分配存储单元(在该语句中,符号名一定不可省)。

EQU 伪指令用法较广泛,下面分别进行说明。

① 为常量定义一个符号名,以便在程序中使用符号来表示常量,这就是符号常量。

例如:

A  EQU  5
B  EQU  A * 3 + 2       ; 即 B = 17
AA  EQU  50
...
MOV AX,  AA     ; AA 为立即数。该语句执行后,(AX) = 50

使用符号常量可使程序简单明了,可读性强。如果将符号常量作为程序的参数,可方便地实现参数的修改,增强程序的通用性。

② EQU 与特殊运算符 PTR 或 THIS 连用,可以给变量或标号定义新的类型属性并重新命名,但其段属性和偏移地址属性不变。

③ 利用 EQU 命令可以为较复杂的表达式及源程序中的任何符号,如指令助记符、寄存器名、变量名、标号、段名、组名、宏定义名等定义一个替换名。在程序中,使用新替换名的作用与使用原来的表达式或符号名的作用完全等价。

例如:

...
SUBC    EQU     SBB
COUNT   EQU     DEC
ARR     EQU     BYTE PTR    [SI]
...
        SUBC    DX, CX      ; 该语句与“SBB DX, CX”等价
        CMP     ARR, 0      ; 该语句与“CMP BYTE PTR [SI], 0”等价
        COUNT   CX          ; 该语句与“DEC CX” 等价

注意:使用 EQU 语句定义的符号不得与本程序中的其他符号名同名。另外,EQU 语句不能重新定义,即在同一个源程序中用 EQU 语句定义的符号不能再赋不同的值。这里要注意与下面的“=”区分

3.2、等号伪指令

语句格式:符号名 = 表达式

功能:与 EQU 语句类似,不同的是等号语句能对所定义的符号名再重新定义。当使用等号语句连续地定义同一符号名时,以最后一次定义的值为准。

例如:

...
A = 5
    MOV   AX, A     ; 5 赋给 AX
    ...
A = A - 10
    MOV   BX, A     ; 0FFFBH 赋给 BX
A = 10H
A = 20H
    MOV   CX, A     ; 20H 赋给 CX

参考:《80X86汇编程序设计》(王元珍)


80X86 汇编语言之伪指令语句
http://fanyfull.github.io/2021/06/09/80X86-汇编语言之伪指令语句/
作者
Fany Full
发布于
2021年6月9日
许可协议