汇编语言运算符
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第8章 汇编语言基础
8.4.1 符号定义语句(续) 2. 等号语句 格式: 符号 = 表达式 CONT=5 NUM=10H NUM=NUM+20H COUNT=VAR ;COUNT是变量VAR的 别名 COUNT=NUM ;COUNT是常数NUM的别 名 表达式形式同上,但可多次重新定义同一符号。
第8章 汇编语言基础
8.4.2 数据定义语句 格式: 变量名 DB/DW/DD 表达式1,表达式2,...
保留存储空间,并可以完成数据的初始化。
字节
BYTE 1
DB
字
双字
WORD
DWORD
2
4
DW
DD
DQ DT
四字
十字节
QWORD
TBYTE
8
10
第8章 汇编语言基础
例15:
DATA
DA1
SEGMENT
4.数值返回运算符
格式:<运算符> <地址表达式>
运算对象是存储器操作数,由变量名或标号组成地 址表达式
SEG: 返回变量所在的段值
OFFSET: 返回变量所在偏移量
TYPE: 返回变量的类型 LENGTH: 返回数组变量的元素个数 SIZE: 返回数组变量所占的总字节数
SIZE= TYPE* LENGTH
第8章 汇编语言基础
例10:假设DATA的段基值是7A4EH
DATA SEGMENT ORG 30H DB 20H DUP(12H) DW DA1 ... ENDS ... MOV MOV AX , SEG DA1 MOV MOV BX , SEG DA2 MOV MOV SI , OFFSET DA1 MOV MOV CX , DA2 MOV MOV DI , OFFSET DA2 MOV DX , OFFSET DA1+4 MOV
DA1 DA2
DATA
AX , 7A4EH BX , 7A4EH SI , 30H CX , 7A9EH DI , 50H DX , 34H
第8章 汇编语言基础
4.数值返回运算符(续)
TYPE 运算符
类型属性 变量 BYTE WORD DWORD 运算结果
1 2 4 -1 -2
标号
NEAR FAR
DB DD 9AH 12345678H
DA2
DA3 DATA
DW 5678H
ENDS
变量的属性: 段属性 偏移属性 类型属性
第8章 汇编语言基础
8.4.2 数据定义语句(续) 格式: 变量名 DB/DW/DD 表达式1,表达式2,... 表达式:数值 DA_BYTE1 DB 50H
DA_BYTE2
第8章 汇编语言基础
5. 属性运算符 PTR: 类型 PTR 地址表达式 类型可以是:BYTE ,WORD,DWORD 或NEAR,FAR 仅在当前语句中有效,是一种临时设置。
DA_BYTE DB 20H DUP(0) DA_WORD DW 10H DUP(0) … MOV WORD PTR DA_BYTE [10H], AX ADD BYTE PTR DA_WORD [DI], BL INC BYTE PTR [SI] SUB WORD PTR [BX],30H JMP FAR PTR SUB1
DA_WORD1
DB
10H,20H,30H,40H
DW 0A34H
DA_WORD2
DA_DWORD
DW 1234H,5678H,9ABCH
DD 12345678H,9ABCDEFH
第8章 汇编语言基础
8.4.2 数据定义语句(续) 格式: 变量名 DB/DW/DD 表达式1,表达式2,... 表达式:字符/字符串
DA_VAR1 DW NUM2+DA_BYTE GT NUM1+DA_WORD
DA_VAR2 DB NUM1 LE NUM2 DATA ENDS ... MOV AX , NUM1 LT NUM2 MOV BL , NUM1 GE NUM2 MOV CX , DA_WORD GT DA_BYTE
第8章 汇编语言基础
第8章 汇编语言基础
3. 关系运算符
运算符 EQ NE LT LE GT GE 运算格式 表达式1 EQ 表达式2 表达式1 NE 表达式2 表达式1 LT 表达式2 表达式1 LE 表达式2 表达式1 GT 表达式2 表达式1 GE 表达式2 运算功能 两个表达式相等为真 两个表达式不相等为真 表达式1 < 表达式2为真 表达式1 <= 表达式2为真 表达式1 > 表达式2为真 表达式1 >= 表达式2为真
字符串必须用引号括起来 DB时一个字符串可以连续书写小于255个字;
DW、DD时每一个字符串表达式由1-2个字符构成;
STRING1 DB STRING3 DD
‘STRING’ ‘ST’,‘RI’,‘NG’
STRING2 DW ‘ST’,‘RI’,‘NG’
第8章 汇编语言基础
例16:
STRING1
用数字形式表示变量和标号的类型属性
第8章 汇编语言基础
例11: DA_BYTE DB DA_WORD DW DA_DWORD DD ... MOV AL , TYPE MOV BL , TYPE MOV CL , TYPE ... MOV AL , 1 MOV BL , 2 MOV CL , 4 12H 3456H 789AH DA_BYTE DA_WORD DA_DWORD
STRING1 DB‘STRING’ STRING2 DW‘ST’,‘RI’,‘NG’ STRING3 DD ‘ST’,‘RI’,‘NG’ STRING2 STRING3 54 53 53 54 49 52 52 49 47 4E 4E 47
54 53 00 00 49 52 00 00 47 4E 00 00
注:若真设为全1,假设为全0。 比较时,若为常数按无符号数比较,如果是变 量按偏移量比较。
第8章 汇编语言基础
例 8: MOV AX , 0FH EQ 1111B MOV DX , 05H GE 1111B 等价于: MOV AX, 0FFFFH MOV DX, 0
第8章 汇编语言基础
例9:DATA SEGMENT ORG 10H NUM1=1234 NUM2=1234H DA_BYTE DB 10H DUP(0) DA_WORD DW 10H DUP(0)
第8章 汇编语言基础
8.4.2 数据定义语句(续) 格式: 变量名 DB/DW/DD 表达式1,表达式2,... 表达式:?表达式:分配相应数量的存储单元,但不初 始化。 DA_BYTE3 DA_WORD3 DB ?,?
DW ?,?
第8章 汇编语言基础
8.4.2 数据定义语句(续) 格式: 变量名 DB/DW/DD 表达式1,表达式2,... 表达式:带DUP的表达式 DA_B1 DA_B2 DB DB 10H DUP(?) 20H DUP(‘ABCD’)
第8章 汇编语言基础
4.数值返回运算符(续)
LENGTH与SIZE运算符 LENGTH运算符 返回数组变量的元素个数。 如果变量用DUP定义,Length为外层DUP的 值。 如果没有DUP定义,结果为1。 SIZE运算符 数组变量所占的总字节数。
例12: DATA VAR1 VAR2 VAR3 VAR4 DATA
CONST DATA1 DATA2 DATA
MOV MOV MOV MOV MOV
AH , 0ABH AL , 0CDH BH , 0 BL , 30H CL , 68H
DATA1) DATA2) SHL 3)
第8章 汇编语言基础
7.运算符的优先级
优先级别 (最Baidu Nhomakorabea) 1 2 3 4 5 6 7 8 9 (最低) 10 运算符 LENGTH , SIZE PTR , OFFSET, SEG , TYPE , THIS HIGH , LOW +, – (单项运算符) * , / , MOD , SHR , SHL +, – EQ , NE , LT , LE , GT , GE NOT AND OR , XOR
第8章 汇编语言基础
5. 属性运算符(续)
THIS:THIS 类型
THIS常与等值语句EQU一起用,形成新变量名 或标号,使它们具有THIS后所指的类型,而段基 值和偏移量与紧接的变量名或标号相同。
例14: DATA _BYTE DATA _WORD JUMP_FAR JUMP_NEAR : EQU THIS BYTE DW 20H DUP(0) EQU THIS FAR XOR AX, AX
第8章 汇编语言基础
8.4.1 符号定义语句 1.等值语句
8.4 伪指令语句
格式: 符号 EQU 表达式 表达式:常数或数值表达式 地址表达式 变量或标号 CONST EQU 10 ADR1 EQU DS:[BP+14H] ADR2 EQU CONST +10 COUN EQU VAR 为变量名VAR另定义一个别名 同一符号不能用EQU重新定义。 汇编时,作为替代符号用,不产生目标代码,不占 有存储单元。
第8章 汇编语言基础
SEGMENT DB 10H DUP(0) DB 10H, 20H, 30H, 40H DW 10H DUP(‘A’, 4 DUP(3)) DB ‘COMPUTER’ ENDS ... MOV AL , LENGTH VAR1 ; MOV AH , SIZE VAR1 ; MOV BL , LENGTH VAR2 ; MOV BH , SIZE VAR2 ; MOV CL , LENGTH VAR3 ; MOV CH , SIZE VAR3 ; MOV DL , LENGTH VAR4 ; MOV DH , SIZE VAR4 ;
DA_W1
DA_W2
DW 10
DW 10
DUP(4)
DUP(-1,1)
操作符DUP可以嵌套使用: DA_B3 DB 10H DUP(4 DUP(3),8)
第8章 汇编语言基础
作业:
1、定义一个数组,类型为字节,其中存放 “ABCDEFGH”。 2、定义一个字节区域,第一个字节为10,其 后连续存放10各初值为0的连续字节。
(AL)=10H (AH)=10H (BL)=1 (BH)=1 (CL)=10H (CH)=20H (DL)=1 (DH)=1
例13:
第8章 汇编语言基础
求数组ARRAY的各数据项的累加和,从数组最后一 个数据项开始进行累加。 ARRAY DW 06H DUP(4) ... XOR AX , AX MOVSI , OFFSET ARRAY ADD SI , SIZE ARRAY - TYPE ARRAY MOVCX , LENGTH ARRAY LOP: ADD AX , [SI] SUB SI , TYPE ARRAY LOOP LOP
第8章 汇编语言基础
6.分离字节运算符
HIGH LOW 表达式 表达式
分离运算对象的高字节和低字节部分。 表达式必须具有常量值,如常数、地址表达式, 不能是存储器操作数或寄存器内容。
第8章 汇编语言基础
例14: DATA SEGMENT ORG 20H EQU 0ABCDH DB 10H DUP(?) DW 20H DUP(?) ... ENDS ... MOV AH , HIGH CONST MOV AL , LOW CONST MOV BH , HIGH (OFFSET MOV BL , LOW (OFFSET MOV CL , LOW (CONST