EQU等值(赋值)伪指令

2008-10-22     作者:        编辑:齐瑞瑞   点击进入论坛

  有时,一个表达式在程序中会多次出现,重复书写可能较为繁杂,易出错。另一方面。如果要对该表达式进行变动,那么必须在程序中找到每一个表达式,一一做出修改,稍有不慎,就会遗漏,引出麻烦。利用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的单元处。

寻找产品:
姓       名: 电   话:
公       司: E-mail:
描       述: