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