有时,一个表达式在程序中会多次出现,重复书写可能较为繁杂,易出错。另一方面。如果要对该表达式进行变动,那么必须在程序中找到每一个表达式,一一做出修改,稍有不慎,就会遗漏,引出麻烦。利用EQU伪指令,就可以避免这些问题的发生。
格式:<符号名> EQU <表达式>
该伪指令的含义是为EQU后面的<表达式>起一个叫做<符号名>的名字。这样一来,程序中凡是需要用到该表达式的地方,就都可以用这个名字代替了。这里,<表达式>可以是任何有效的数据,可以是能够算出值的表达式,也可以是有效的助记符等。
例 COUNT EQU 256
表示赋予数256一个名字,叫做COUNT。
VAR1 EQU COUNT-2
表示赋予表达式COUNT-2一个名字,叫做VAR1。如果有“COUNT EQU 256”在先,那么由于COUNT是数值256,所以VAR1就代表数值254。
PH EQU PUSH
表示赋予PUSH一个名字PH。由于PUSH是汇编语言的一个助记符,因此,在程序中书写PH AX,就相当于 PUSH AX。
与EQU伪指令类似的是等号伪指令“=”。它们的区别是:由EQU伪指令定义后的符号名是不能重复再定义的,而“=”伪指令中定义的符号名可重复定义。例如:
EMP=7
┋
EMP=EMP+2
这表示,开始把符号名EMP定义为是数值7,后来把符号名EMP重新定义为代表数值9。但是不能写成:
EMP EQU 7
┋
EMP EQU EMP+2
例 STAK SEGMENT STACK
DB 100H DUP(?)
TOP EQU $
STAK ENDS
在定义堆栈段时,常用TOP EQU $来指定栈底,TOP是符号地址。上述定义的堆栈段大小为100H个字节单元,地址范围为0000H~00FFH。$紧随其后,所以地址计数器的当前值为$=00FFH+1=0100H,即栈底TOP在偏移地址为0100H的单元处。