连接起来实现。表达式可分为算术运算符、逻辑运算符、关系运算符等。
下面具体来看:
★算术运算符,它包括加(+)、减(-)、乘(*)、除(/),取余(MOD),
举个例子:
MOV AX, 20 * 7
,这就是数值表达式;
LEA SI, TAB+1
,这就是地
址表达式。也有我们需要注意的是,两地址加减是两地址间字节单元的个数,地
址±整数,就是另一单元地址。
★逻辑运算符,它包括与(AND)、或(OR)、异或(XOR)、非(NOT),
举个例子:MOV AL, 31H AND 0FH 等价于 MOV AL ,01H。我们需要注意的
是,这些运算符只适用于数值表达式,不能用在逻辑表达式中。
★关系运算符,它包括等于(
EQ
)、不等(
NE
)、小于(
LT
)、大于(
GT
)、
小于等于(LE)、大于等于(GE),注意,使用关系运算符的时候,运算符两边
必须是数值或者是同一段中的两个储存单元地址,而且结果只能是两个特定的数
值之一,也就是说是真还是假,举个例子:
MOV AL, 31H EQ 0FH 就相当于 MOV AL ,00H
MOV AL, 31H NE 0FH
就相当于
MOV AL ,0FFH
总结:真:0FFFFH 或 0FFH 当关系成立;假: 0000H 或 00H 当关系不成立。
★分析运算符,它包括:
1
。
SEG
:其加在标号或者变量名前面,将得到变量名或标号的段基址。
2
。
OFFSET:加在变量名或标号前面,将得到变量名或标号的偏移量。
3
。
TYPE:加在变量名或标号前面,返回结果是数值,其值为变量名或标号的类
型值,例如:
1
(字节),
2
(字),
4
(双字),
-1
(
NEAR:
其定义的标号表示段内
近跳转,近调用的地址),-2(FAR:其定义的标号表示段间远跳转,远调用的地
址)。
4
。
LENGTH
:加在变量名前面,运算结果为变量元素的基本单元的个数。若用
DUP(汇编程序变量或缓冲区定义的重复伪指令,如 BUF DB 4 DUP(9),
定义了 4 个字节的 9,就是等同于 BUF DB 09H,09H,09H,09H)说明符则为外
层值为返回值。
5
。
SIZE
:加在变量名前,返回的数为变量总字节数。
为更好地理解上述分析运算符,我们对应地举例子: