汇编运算符和表达式
运算符:
汇编语言由表达式和运算符组成,运算符分为数值运算符和属性运算符。属性运算符面向变量或标号。
数值运算符:
算术运算符:
运算符类型
✓
+(
正号
)
、
-(
负号
)
✓
+(
加
)
、
-(
减
)
、
*(
乘
)
、
/(
除
)
、
MOD(
取模
)
➢
算术运算符与
立即数
、
常量
、
括号
等构成数值表达式。
✓
变量
不能参与算术运算构成
数值表达式
。
关系运算符:
运算符类型
✓
EQ(
等于
)
、
NE(
不等
)
、
LT(
小于
)
、
GT(
大于
)
、
LE(
小于等
于
)
、
GE(
大于等于
)
✓
可与
立即数
、
常量
、
变量
、
括号
等构成数值表达式。
➢
关系运算只能有
0
(假)
和
0FFH
(真)
两个返回值。
✓
返回值以二进制补码形式表示,位数由目的操作数决定;
逻辑运算符:
➢
运算符类型
✓
AND(
与
)
、
OR(
或
)
、
NOT(
非
)
、
XOR(
异或
)
✓
SHL(
左移
)
、
SHR(
右移
)
➢
逻辑运算符可与
立即数
、
常量
、
括号
等构成数值表达式。
✓
变量
不能参与逻辑运算。
属性运算符:
段属性操作符SEG
格式:
SEG <标识符>
➢
功能
✓
返回标识符所在段的段地址;
➢
例如:
MOV AX ,
SEG NEXT
MOV BX ,
SEG DATA
➢
若存储器如上所示,则以上指令执行后
(AX) = 1000H
,
(BX) = 2000H
偏移量属性操作符OFFSET
➢
格式:
OFFSET <
标识符
>
➢
功能
✓
返回该标识符的段内偏移地址;
➢
例如:数据段定义如下:
X1
DW
12H , 100H
X2
DD
0
X3 DB
? , ‘A’
➢
若执行指令:
MOV AX ,
OFFSET X1
MOV BX ,
OFFSET X3
(AX) = 0000H
,
(BX) = 0008H
类型操作符TYPE:
➢
格式
✓
TYPE <
标识符
>
➢
功能
✓
返回变量和标号的类型值;
➢
类型值
✓
变量:每个变量所占的字节数;
✓
标号:标号的
NEAR
、
FAR
类型;
长度属性操作符LENGTHOF:
➢
格式
✓
LENGTHOF <
变量名
>
◼
只能应用于变量;
➢
功能
✓
返回
变量
所定义的数据个数;
➢
例如
✓
变量定义为:
ARRAY1 DW 2 DUP(0,1) , 1
✓
则指令
MOV AL ,
LENGTHOF ARRAY1
后,
(AL)=5 ;
容量属性操作符SIZEOF:
➢
格式:
✓
SIZEOF <
变量名
>
◼
只能应用于变量;
➢
功能:
✓
返回
变量
的所占存储单元的数目;(一个字节为一个存储单元);
运算符的优先顺序:
表达式:
数值表达式:
由立即数、常量、字符或字符串与数值运算符构成;
由变量、标号与属性操作符构成;
由两个符号地址相减构成两者间的距离表达式。
地址表达式:
由变量、标号、运算符、地址计数器$构成;
地址计数器引用符号$:
格式:¥[+-Imm]
其值表示当前偏移量计数器的值+-Imm的立即数;