- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
关系运算 相等(EQ),不等(NE),小于(LT),大于(GT), 相等(EQ),不等(NE),小于(LT),大于(GT), 小于等于(LE),大于等于(GE) 小于等于(LE),大于等于(GE) 运算结果:关系不成立,结果为0 关系成立,结果为– 运算结果:关系不成立,结果为0;关系成立,结果为–1
DATA SEGMENT USE16 NUMBER EQU 4 COUNT ┇ MOV AX,NUMBER AX, MOV SI, COUNT SI, MOV DX, TAB COUNT = 10 MOV BX, COUNT[ECX] MOV CX, TAB[ECX] ● 符号常量特点: 符号常量特点: ① 在汇编期间被代换成相应等价的数据; 在汇编期间被代换成相应等价的数据; ② 提高程序的可读性; 提高程序的可读性; ③ 便于随时修改程序中的参数 ; 注意这两条指令的区别 = 35 TAB DW 70,80H,-5,NUMBER 70,80H,
数值常量:二进制,八进制,十进制,十六进制 字符常量:用单引号括起来,如:'12' 字符常量:用单引号括起来,如:'12' 符号常量
3.1.1 常量与数值表达式
符号常量
使用等价伪指令 EQU 或 等号伪指令 = 定义
使用:定义后直接引用符号名 注意:
符号常量不分配存储单元,只建立等价代换关系, 符号常量不分配存储单元,只建立等价代换关系, 可出 现在任何段 用EQU语句定义的符号常量在该程序中不能再重新赋 EQU语句定义的符号常量在该程序中不能再重新赋 值,而用"="定义的符号常量可多次重新赋值,使用时, 值,而用"="定义的符号常量可多次重新赋值,使用时, 以最后一次定义的值为准
MARK = 100H
3.1.2 变量,标号与地址表达式 变量,
标号是机器指令存放地址的符号,标号也可以是 标号是机器指令存放地址的符号,标号也可以是 子程序名,表示子程序的入口地址 标号也有3个属性:段,EA,类型(NEAR, 标号也有3个属性:段,EA,类型(NEAR,FAR)
NEAR——定义近标号,在段内使用 NEAR——定义近标号,在段内使用 FAR ——定义远标号,在段间使用 ——定义远标号,在段间使用
80X86 汇编语言程序设计
华中科技大学计算机学院 2010年 2010年6月
第三章 宏汇编语言
本章的学习内容:
宏汇编语言的基本语法 常用的机器指令语句 伪指令语句 常用的系统功能调用
第三章 宏汇编语言
本章的学习重点:
宏汇编语言中的表达式:符号常量, 宏汇编语言中的表达式:符号常量,变量 ,地址表达 式,属性定义算符,属性分离算符 属性定义算符, 常用的机器指令语句:数据传送指令,算术运算指令, 常用的机器指令语句:数据传送指令,算术运算指令, 位操作指令 常用的伪指令 常用的DOS系统功能调用:1 常用的DOS系统功能调用:1,2,9,10 号
第三章 宏汇编语言
本章的学习难点:
变量,地址表达式的使用 常用的机器指令的记忆,各指令的特殊要求 汇编地址计数器$ 汇编地址计数器$和假定伪指令 正确理解DOS系统功能调用,注意特殊字符的显示效 正确理解DOS系统功能调用,注意特殊字符的显示效 果
3.1 表达式
每种计算机语言都规定了自己的字符 , 基本词汇, 每种计算机语言都规定了自己的 字符, 基本词汇 , 典型语句和 典型语句和语法规则 汇编语言:
(1) 数据定义伪指令:DB,DW,DD,DQ,DT指定 数据定义伪指令:DB,DW,DD,DQ,DT指定 变量的类型
.BYTE (字节) (字节 字节) .WORD (字) (字 .DWORD (双字) (双字 双字) .FWORD (3个字) (3个字 个字) .QWORD (4个字) (4个字 个字) .TBYTE (10个字节) (10个字节 个字节) 例: BUF TT ARR DW 10,-60,189 10, 60, DD 0A57BD36H DB DW DD DF DQ DT ; ARR的类型为字 ARR的类型为字 ; TT的类型为双字 TT的类型为双字
例:
DB 3 DUP('A', 12H) 'A', 12H, 'A', 12H, 'A', 12H
DB 2 DUP('A', 2 DUP(3), 'B') 'A', 3, 3, 'B', 'A', 3, 3, 'B'
例:数据段定义如下: 数据段定义如下: DATA SEGMENT USE16 A BUF CON B D M DATA ENDS 先看M的存放顺序: 先看M的存放顺序:1,1,2,'B',2,'B','1','2','3',1, B', B', 1', 2', 3', 2, 3 不管M是什么, 只占2字节.同样, 不管M是什么,A只占2字节.同样,D占4字节 注意:伪指令EQU及 ="都不分配存储单元 注意:伪指令EQU及"="都不分配存储单元 DW DB EQU DW DD DB M 'AB', 0DH, 0AH 500H 0FFAAH BUF 2 DUP(1), 2 DUP(2, 'B'), '123', 1, 2, 3
3.1 表达式
汇编程序的语句及程序格式都比较固定,语句中 除正确选择操作符之外,主要问题在于正确表示 操作数地址,这涉及到寻址方式,可以归结到地 操作数地址,这涉及到寻址方式,可以归结到地 址表达式的使用 汇编语言中,表达式是由常量,寄存器,标号, 汇编语言中,表达式是由常量,寄存器,标号, 变量加上运算符构成的式子
例:
LOOP1: MOV AL, 3 SUB1 PROC FAR SUB2 PROC NEAR ; 定义近标号 ; SUB1为远标号(段间) SUB1为远标号(段间) ; SUB2为近标号(段内) SUB2为近标号(段内)
3.1.2 变量,标号与地址表达式 变量,
地址表达式由变量,标号,常量,寄存器的内容加 地址表达式由变量,标号,常量,寄存器的内容加 上运算符构成 简单的地址表达式:直接寻址,间接寻址,变址, 基址加变址等 地址表达式具有段,EA,类型等三个属性 地址表达式具有段,EA,类型等三个属性 在地址表达式中,还可使用特殊运算符
取段地址算符 SEG
功能:分离出标号,变量的段首址 如:MOV 如:MOV AX, SEG BUF
属性定义符:PTR, 属性定义符:PTR,:,THIS 属性分离符:OFFSET,SEG, 属性分离符:OFFSET,SEG,TYPE
3.1.2 变量,标号与地址表达式 变量,
类型运算符 属性定义符 跨段前缀符 定义类型算符 取偏移地址 特殊运算符 属性分离符 取段地址 取类型 取变量所含数据 其他算符 个数 取变量所含存储 单元大小 PTR : THIS OFFSET SEG TYPE LENGTH SIZE
3.1.2 变量,标号与地址表达式 变量,
变量的定义:
格式:[变量名] 格式:[变量名] 数据定义伪指令 表达式[,…] 表达式[ 数据定义伪指令:DB,DW,DD,DQ,DT等 数据定义伪指令:DB,DW,DD,DQ,DT等 表达式可以是:数值表达式,ASCII字符串,地址表 表达式可以是:数值表达式,ASCII字符串,地址表 达式,?不确定,n DUP(表达式) 达式,?不确定,n DUP(表达式) 功能: 功能: 定义了一变量,并开辟了由变量属性所决定的一 片连续存储区,其存储区所占字节数=表达式个数* 片连续存储区,其存储区所占字节数=表达式个数*变量 的类型. 变量的类型:存储单元的大小,由数据定义伪指令定义
字符 ASCII字符 ASCII字符 基本词汇 符号指令(如MOV),伪指令(如DB) 符号指令(如MOV),伪指令(如DB) 典型语句 机器指令语句: 对应机器指令的一种操作 伪指令语句:无机器语言与之对应,不生成机器指令 宏指令语句:对应多条机器指令,产生一组目标代码 语法规则 基本语法单位(常量,变量,标号,表达式)
数值表达式:是一个常量,有大小,无属性 地址表达式:表示EA,有段,EA,类型等三个属性 地址表达式:表示EA,有段,EA,类型等三个属性
3.1.1 常量与数值表达式
常量是从源程序翻译成目标程序期间已经有确定 常量是从源程序翻译成目标程序期间已经有确定 数值的量 用途:赋值,作立即数,位移量 分类:
3.1.2 变量,标号与地址表达式 变量,
变量是数据段或附加数据段中一个数据存储单元的名字, 变量是数据段或附加数据段中一个数据存储单元的名字, 是这个存储单元的地址的符号表示.可代表一批存储单元 的首址. 变量有三个属性:
段属性:定义变量所在段的段首址,当访问该变量时该段首址应 段属性:定义变量所在段的段首址,当访问该变量时该段首址应 在某一段寄存器中,即为CPU当前可访问段; 在某一段寄存器中,即为CPU当前可访问段; 偏移地址:该变量所占存储单元到所在段的段首址的字节距离; 偏移地址:该变量所占存储单元到所在段的段首址的字节距离; 类型:类型是指存取该变量中的数据所需要的字节数, 类型:类型是指存取该变量中的数据所需要的字节数, 变量的类型 由定义该变量时所使用的伪指令确定
3.1.2 变量,标号与地址表达式 变量,
类型运算符 PTR
功能:指明变量,标号或地址表达式的类型 格式:类型 PTR 地址表达式
类型包括:BYTE,WORD,DWORD,NEAR,FAR等 类型包括:BYTE,WORD,DWORD,NEAR,FAR等
例:MOV 例:MOV 例:TWO 例:TWO MOV
BYTE PTR [SI+4], 55H DW 055H; 定义一个字 AH, BYTE PTR TWO; 只读字节