常数、变量和标号
1、常数
(1)二进制数:以字母B结尾的由一串 ‘0’ 和 ‘1’ 组成的序列。
(2)八进制数:以字母o或Q结尾,由若干个0到7的数字组成的序列
(3)十进制数:由若干0到9的数字组成的序列,可以以字母D结尾,也可以省略字母D。
(4)十六进制数:以字母H结尾。且必须以数字开头。例如:0B3FH
(5)字符串常数:用引号括起来的一个或多个字符。这些字符以ASCII码形式存在内存中。
2、变量(偏移量的标号)
变量的三个属性:
(1)段属性(SEGMENT):表示变量所在段的段首地址
(2)偏移属性(OFFSET):表示变量的偏移地址
(3)类型属性(TYPE):表示变量占用存储单元的字节数。类型:字节,字,双字等。
3、标号
表示一条指令所在的地址,也是指令语句的地址符号,常用作转移指令的操作数,即目的地址、
通常由字母数字串组成,但第一个字符必须为字母。最多允许使用31个字符,且可以使用下划线。
运算符和表达式
1、算数运算符:+、-、*、/、MOD(求余)、SHL(左移)、SHR(右移)
2、逻辑运算符:AND、OR、XOR、NOT。只适用于对常熟操作。
3、关系运算符
包括:EQ(相等)、NE(不相等)、LT(小于)、GT(大于)
LE(小于或等于)、GE(大于或等于)
结果:若关系为假(不成立),结果为0;
若关系为真(成立),结果为0FFH或0FFFFH
4、分析操作符(数值返回运算符)
(1)取地址的偏移量
格式:OFFSET 变量名或标号
功能:取变量名或标号所在段的段内偏移量
(2)取段基址
格式:SEG 变量名或标号
功能:取变量名或标号所在段的段首地址。
(3) 求变量名或标号的类型值
格式:TYPE 变量名或标号
功能:返回一个数字值。若TYPE加在变量名前,则返回该变量的类型属性;若加在标号前,返回该变量的距离属性。
(4)求长度
格式:LENGTH 变量名
功能:返回一个变量名所占存储单元(字节、字或双字)的数目。若变量是用重复定义子句说明的,则返回DUP前面的数值;其余返回1.
(5)求大小
格式:SEZE 变量名
功能:返回变量名所占存储单元的字节数,它等于LENGTH和TYPE两个运算返回值的乘积。
5、综合运算符
(1)PTR运算符
格式:类型 PTR 表达式
功能:用于指出变量、标号或地址表达式的类型属性,新的类型只在当前指令内有效。
eg: MOV BYTE PTR [DI],4; 指明目的操作数为字节类型。
(2)THIS运算符
格式:THIS 类型
功能:把它后面指定的类型或距离属性赋给当前的变量、标号或地址表达式。
6、其他运算符
(1)HIGH和LOW运算符
格式:HIGH 表达式
LOW 表达式
功能:从运算对象中分离出高字节或低字节。
(2)SHORT运算符
格式:SHORT 标号
功能:当转移的目标地址与本转移指令的下一条指令之间的字节距离在-128~127范围时,可以用SHORT运算符进行说明。