第4节 操作数字段
常数
1.数值常数
12ABH
2376Q
01011100B
4567D , 4567
2.字符串常数
‘A’
‘AbCd’
3.符号常数
(1)符号常数名 EQU 表达式
(2)符号常数名 = 表达式
DATA1 EQU 88
NEW-CX EQU CX
DATA2 EQU DATA1+2
DATA1 = 88
DATA1 = DATA1+99
表达式
把常数、寄存器、标号、变量与运算符组合。
数字表达式、地址表达式
1.运算符
(1)算术运算符:+ - * / MOD
2+5 ,17/7 ,17 MOD 7
(2)逻辑运算符:AND OR XOR NOT
(3)移位运算符:SHL SHR
MOV AL, BL SHR 3
MOV CL,BL SHL 6
(4)关系运算符:(true=0FFFFH,false=0)
> > = < <= = =
GT GE LT LE EQ NE
(5)返回值运算符:
1) SEG 变量/标号
2) OFFSET 变量/标号
3) TYPE 变量/标号
对变量:返回变量的字节数,DB为1,DW为2,DD为4,DF为6,DQ为8,DT为10.
对标号:返回地址的类型,NEAR为-1 ,FAR为-2.
4) LENGTH 变量
变量中无DUP时,返回1;有DUP时返回由类型所定的单元数。
5) SIZE 变量
返回变量的字节数(LENGTH*TYPE)
(6)属性运算符:
1)类型 PTR 变量/标号
对变量: 类型为BYTE, WORD,DWORD, FWORD,QWORD,TBYTE.
对标号:类型为 NEAR ,FAR.
DATA1 DW 1234H,5678H
DATA2 DB 99H,88H,77H,66H
DATA3 EQU BYTE PTR DATA1
MOV AX, WORD PTR DATA2 ;8899H
MOV BL, BYTE PTR DATA1 ;34H
MOV DX, DATA1+2 ;5678H
MOV [BX], 8
MOV BYTE PTR [BX], 8
MOV WORD PTR [BX], 8
2) 变量/标号 EQU THIS 类型
对变量: 指定变量类型为BYTE, WORD,DWORD, FWORD,QWORD,TBYTE.
对标号:指定标号类型为 NEAR ,FAR.
为声明一个变量/标号,但不分配存储区。
3) 变量/标号 LABEL 类型
对变量: 定义变量类型为BYTE, WORD,DWORD, FWORD,QWORD,TBYTE.
对标号:定义标号类型为 NEAR ,FAR。与PTR相同。
1.数值常数
12ABH
2376Q
01011100B
4567D , 4567
2.字符串常数
‘A’
‘AbCd’
3.符号常数
(1)符号常数名 EQU 表达式
(2)符号常数名 = 表达式
DATA1 EQU 88
NEW-CX EQU CX
DATA2 EQU DATA1+2
DATA1 = 88
DATA1 = DATA1+99
表达式
把常数、寄存器、标号、变量与运算符组合。
数字表达式、地址表达式
1.运算符
(1)算术运算符:+ - * / MOD
2+5 ,17/7 ,17 MOD 7
(2)逻辑运算符:AND OR XOR NOT
(3)移位运算符:SHL SHR
MOV AL, BL SHR 3
MOV CL,BL SHL 6
(4)关系运算符:(true=0FFFFH,false=0)
> > = < <= = =
GT GE LT LE EQ NE
(5)返回值运算符:
1) SEG 变量/标号
2) OFFSET 变量/标号
3) TYPE 变量/标号
对变量:返回变量的字节数,DB为1,DW为2,DD为4,DF为6,DQ为8,DT为10.
对标号:返回地址的类型,NEAR为-1 ,FAR为-2.
4) LENGTH 变量
变量中无DUP时,返回1;有DUP时返回由类型所定的单元数。
5) SIZE 变量
返回变量的字节数(LENGTH*TYPE)
(6)属性运算符:
1)类型 PTR 变量/标号
对变量: 类型为BYTE, WORD,DWORD, FWORD,QWORD,TBYTE.
对标号:类型为 NEAR ,FAR.
DATA1 DW 1234H,5678H
DATA2 DB 99H,88H,77H,66H
DATA3 EQU BYTE PTR DATA1
MOV AX, WORD PTR DATA2 ;8899H
MOV BL, BYTE PTR DATA1 ;34H
MOV DX, DATA1+2 ;5678H
MOV [BX], 8
MOV BYTE PTR [BX], 8
MOV WORD PTR [BX], 8
2) 变量/标号 EQU THIS 类型
对变量: 指定变量类型为BYTE, WORD,DWORD, FWORD,QWORD,TBYTE.
对标号:指定标号类型为 NEAR ,FAR.
为声明一个变量/标号,但不分配存储区。

3) 变量/标号 LABEL 类型
对变量: 定义变量类型为BYTE, WORD,DWORD, FWORD,QWORD,TBYTE.
对标号:定义标号类型为 NEAR ,FAR。与PTR相同。

2. 数字表达式
把常数、标号、变量与运算符组合。运算符可以是算术运算符、逻辑运算符、移位运算符、关系运算符、返回值运算符,但结果必须是常数。
AAA1 EQU X
DATA1 DB 12H, 34H, 56H, 78H
AAA2: MOV AX, LENGTH DATA1 ; mov ax,1
MOV BX, TYPE AAA2 ;-1 near
MOV DX, (AAA1 LT 3 AND 10H OR AAA1 GE 3 AND 0AFH )SHL 2
;40H,0BCH
3. 标号
指令存放单元的符号地址。在代码段中定义,标号后一定要有:。
标号属性:段、偏移、类型。
4.变量
数据存放单元的符号地址。数据段或附加段中定义。
变量属性:段、偏移、类型、单元数、字节数。
5. 地址表达式
(1)变量/标号 +/- 数据表达式 ,只改变地址偏移量
(2)变量-变量
标号-标号
结果为相对位移
(3)[寄存器 +/- 数据表达式]可以
[寄存器 +/- 变量/标号] 不可以
MOV AX, [BX+SI+8]
MOV AX, [BX+SI]8
MOV AX, 8[BX+SI]
MOV AX, [BX][SI]8


