首页 理论教育 符号定义伪指令

符号定义伪指令

时间:2022-02-28 理论教育 版权反馈
【摘要】:EQU语句给符号名定义一个值,或定义为别的符号名,或任何可以求出常数值的表达式,也可以是任何有效的助记符。符号名经EQU定义过后,在程序中就可使用。与EQU相类似的还有一个“=”伪指令可作为等值语句使用。它们之间的区别是EQU伪指令中的符号名是不允许重复定义的,而“=”伪指令则允许重复定义。这样,同一条指令处定义了两个不同距离属性的标号,以提高引用的灵活性。

3.2.1 符号定义伪指令

1.等值语句EQU

EQU语句给符号名定义一个值,或定义为别的符号名,或任何可以求出常数值的表达式,也可以是任何有效的助记符。

格式:符号名EQU表达式

符号名经EQU定义过后,在程序中就可使用。表达式可以是能求出常数值的表达式或就是常数,也可以是另一个符号名,也可以是任何有效的助记符。

【例3-16】

CONSTANT EQU 256

DATA EQU HEIGHT+12

ALPHA EQU 7

BETA EQU ALPHA-2

例3-16中,CONSTANT的值为256,ALPHA的值为7,而BETA值就等于7-2=5,因为BETA的表达式中用了ALPHA,因此ALPHA必须在BETA之前先定义。

与EQU相类似的还有一个“=”伪指令可作为等值语句使用。它们之间的区别是EQU伪指令中的符号名是不允许重复定义的,而“=”伪指令则允许重复定义。

【例3-17】

EMP=7

EMP=EMP+2

开始EMP为7,之后EMP为9。注意,在同一源程序中,同一符号名不能同时使用EQU和“=”伪指令来分别定义。

2.定义符号名语句LABEL

基本形式:

名字 LABEL类型

功能:将名字作为一个符号地址,指定其类型,地址由所在位置确定,但并不为名字分配内存空间。

说明:当类型是BYTE、WORD、DWORD、QWORD或TBYTE时,名字作为相应类型的变量;当类型是NEAR或FAR时,名字作为相应类型的标号。

【例3-18】 定义地址相同、类型不同的两个变量

ba LABELBYTE

w a DW 50DUP(?)

将100个字节的数组首地址赋予两个不同类型的变量:字节类型变量ba与字类型变量w a。尽管w a+2与ba+2指向同一内存地址,但下列两条指令的操作类型不同:

MOV w a+2,0 ;将0作为一个字送到地址w a+2

MOV ba+2,0;将0作为一个字节送到地址ba+2

要特别注意LABEL伪指令的位置。若使用如下定义的顺序:

w a DW 50DUP(?)

ba LABELBYTE

则ba的地址等于w a+100。

此外,LABEL也可用于标号。例如,下面的语句定义了两个标号NearL与FarL。

FarLLABELFAR

NearLMOV AX,0

这里,NearL与FarL指向同一条指令,但NearL是NEAR类型的标号,而FarL是FAR类型的标号。这样,同一条指令处定义了两个不同距离属性的标号,以提高引用的灵活性。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈