微机原理及接口技术 教学课件 ppt 作者 王惠中 王强 第5章 汇编语言程序设计

上传人:E**** 文档编号:89495978 上传时间:2019-05-25 格式:PPT 页数:144 大小:1.36MB
返回 下载 相关 举报
微机原理及接口技术 教学课件 ppt 作者 王惠中 王强 第5章 汇编语言程序设计_第1页
第1页 / 共144页
微机原理及接口技术 教学课件 ppt 作者 王惠中 王强 第5章 汇编语言程序设计_第2页
第2页 / 共144页
微机原理及接口技术 教学课件 ppt 作者 王惠中 王强 第5章 汇编语言程序设计_第3页
第3页 / 共144页
微机原理及接口技术 教学课件 ppt 作者 王惠中 王强 第5章 汇编语言程序设计_第4页
第4页 / 共144页
微机原理及接口技术 教学课件 ppt 作者 王惠中 王强 第5章 汇编语言程序设计_第5页
第5页 / 共144页
点击查看更多>>
资源描述

《微机原理及接口技术 教学课件 ppt 作者 王惠中 王强 第5章 汇编语言程序设计》由会员分享,可在线阅读,更多相关《微机原理及接口技术 教学课件 ppt 作者 王惠中 王强 第5章 汇编语言程序设计(144页珍藏版)》请在金锄头文库上搜索。

1、第五章 汇编语言程序设计,5.1 汇编语言语句的类型和组成 5.2 伪操作命令 5.3 DOS系统功能调用和BIOS中断调用 5.4 汇编语言程序设计,第五章 汇编语言程序设计,5.1 汇编语言语句的类型和组成,5.1.1 汇编语言语句的类型,在汇编语言中我们不仅要知道指令系统,而且还必须了解汇编语言语句的组成和类型,了解汇编语言中的编写程序的格式以及格式中各个部分的意义,以便我们能够编写出正确的源程序。,汇编语言有自身的语法规则,汇编语言源程序中有3种基本语句:,指令性语句(由CPU指令组成); 指示性语句(伪指令语句)和宏指令语句。 指令性语句和指示性语句是最基本的语句,也是最常用的语句。

2、,指令性指令是给CPU的命令,它是由汇编程序翻译成机器语言指令,在程序运行时由CPU来执行,每条指令都对应CPU一种特定的操作,例如:算术运算、逻辑运算、串操作等;而伪指令是给汇编程序的命令,伪指令不汇编成机器语言,仅仅在汇编过程中告诉汇编程序应如何汇编。在汇编中由汇编程序进行处理,例如:定义数据分配,定义过程等。 指令性指令汇编以后,每条指令都产生其对应的机器代码;而伪指令则不产生与之对应的机器代码。 宏指令是使用者利用上述基本语句自己定义的新的指令。,二者的区别是:,例:5个连续字节单元的累加 DATA SEGMENT ;定义数据段 D1 DB 5 DUP(?) ;连续的字节单元 CC E

3、QU $D1 ;对单元计数 SUM DW 0 ;为结果保留一个字 DATA ENDS ;数据段定义结束 STACK SEGMENT PARA STACK STACK ;定义堆栈段 DB 100 DUP (?) ;100字节的栈空间 STACK ENDS ;堆栈段定义结束 CODE SEGMENT ;定义代码段 ASSUME DS:DATA,SS:STACK,CS:CODE ;对各段进行说明 BEGIN:MOV AX,DATA ;DS初始化为DATA MOV DS,AX LEA SI,D1 ;预置源数据的指针,汇编语言程序结构特点,MOV CX,CC+1 ;预置次数 CLD ; (DF)=0,串

4、指针自动增量 LODS BYTE PTR SI ;取一个数并修改指针 DEC CX ;修改次数 MOV AH,0 ;清AX的高字节 CLC ;清CF位 AGAN:ADC SUM,AX ;累加 LODS BYTE PTR SI ;再取数并修改指针 LOOP AGAN ;控制循环 MOV AH,4CH ;完成,返回DOS INT 21H CODE ENDS ;代码段结束 END BEGIN ;整个程序结束,源程序的一般格式,代码段是必需的。每段必须有且仅有一个名字,以SEGMENT定义段的起始,以ENDS定义段的结束,整个程序结束后需以END收尾。源程序的一般格式为: 段名1 SEGMENT 语句

5、 语句 段名1 ENDS 段名2 SEGMENT 语句 语句 段名2 ENDS END (标号),汇编语言源程序的结构,段名1 SEGMENT 语句行 语句行 段名1 ENDS 段名2 SEGMENT 语句行 语句行 段名2 ENDS END 标号或过程名,一个源程序由若干段组成,如数据段、代码段、堆栈段等; 各段由若干条语句行组成; 指令必须放在代码段中; 为了确保程序的执行和正确返回,必须借助堆栈段; 根据编程需要确定是否需要数据段、附加段。,5.1.2 汇编语言语句的组成,1指令性语句:即执行性语句(指令)包括四部分: 标号: 指令操作码 操作数 ;注释 例: AGAN:ADC SUM,

6、AX ;累加 2指示性语句:即说明性语句(伪指令),由四部分组成: 名字 伪指令 操作数 ;注释 例:SUM DW 0 ;为结果保留一个字,汇编语言的语句行,指令性语句 指令,与机器码一一对应。 指示性语句 伪指令,可以对源程序进行指示、说明、定义等。 注释语句 以分号开始,整行均是对程序的注解,增强可读性。本身不参与汇编,对指令代码无任何贡献。,汇编语言的语句行构成,指令性语句 指令标号: 指令助记符 操作数1,操作数2 ;注释,指示性语句伪指令 名字 伪指令助记符 参数1,参数2,参数n ;注释,汇编语言中的字符集 字符 A Z 或 a z 注:汇编源程序中,大小写字符功能一样 数字 0

7、9 注:数字不用于标识符的第一位 特殊符号 ?、/、%等 注:标识符中谨慎使用特殊符号,1、汇编语句的说明,汇编语言中的保留字,汇编源程序中标识符不能使用的字符串 寄存器名 例:AX、SP 标志符 例:CF、TF 指令助记符 例:MOV、ADD 伪指令符 例:SEGMENT、END 运算符 例:OFFSET、PTR,标识符由编程人员自行定义的、有特殊意义的字符序列。,标识符的使用 可使用字母、数字、特殊字符(? $ _) 不能使用保留字 !符合字符集要求 不用数字开头,第一个符号最好用字母 长度小于 32 个字符 标识符的作用 用作段名、过程名、结构名、宏名等的定义 用作变量名,数据段符号地址

8、的定义 用作代码段标号,标识符(标号、符号地址、变量名),标识符,数据段中的标识符 符号地址具有存储地址值和数据类型的特征 代码段中的标识符 伪指令前的标号定义变量 指令前的标号定义标号: 标识符与常量 MOV AL,F8H (AL)=(F8H),从符号地址中取数 MOV AL,0F8H (AL)=F8H,常数F8H赋值,常量,整数:必须以数字开头! 二进制数以“B” 结尾 八进制数以“O”或“Q” 结尾 十进制数不带结尾字母,或以“D” 结尾 十六进制数以“H” 结尾 字符串 连续的字节单元,每个单元均存放ASCII码。用包括在单引号中的字母表示(单引号本身不算作字符)。如ABCDEF,对应

9、的数值依次是61H66H。,常量出现在源程序中指令操作数的位置,具有固定值的数值。,变量和标号,段基址:该单元所在段的首址,用相应的段寄存器值表示(16位) 偏移量:该单元在段内的偏移量或有效地址,表示与段首地址之间的距离(16位) 类型:该单元中存放的数据长度类型,可能是字节 (Byte)、字 (Word) 或双字 (Double Word)等,对应于类型值1、2、4,变量编程人员为内存单元起的名字。有3种属性:,标号编程人员为目标地址单元起的名字,对应于该指令在代码段中的存放地址。也有3种属性,仅类型与变量不同:,类型:标号的类型共有远(Far)、近(Near)两种,类型值分别是-2、-1

10、,2 、 表达式与运算符,表达式由运算符和操作数组成的、具有确定结果的有意义的序列,可作为指令的操作数。,运算符共有5类:算术运算符、逻辑运算符、关系运算符、分析运算符、合成运算符。,操作数常量、变量和标号等均可参与运算。对于地址指针,只能进行加/减算术运算。,运算规则表达式的值由汇编程序在编译的过程中自动完成计算,所得确定的运算结果与操作码一起被编译成机器码。,汇编语言的运算符,算术运算符:+、-、*、/、MOD、SHL、SHR 逻辑运算符:AND、OR、XOR、NOT 关系运算符:EQ、NE、LT、GT、LE、GE 分析运算符:SEG、OFFSET、TYPE、SIZE、LENGTH 综合运

11、算符:PTR、DS:、THIS、SHORT、HIGH、LOW,算术运算符,数值表达式中可使用所有算术运算符 地址表达式仅使用+、-算术运算符 算术运算符不影响标志位 例:完成80H+90H 解:MOV AL,80H+90H;使用数值表达式 ;(AL)=10H、CF=不变 MOV AL,80H ADD AL,90H ;使用加法指令 ;(AL) =10H、CF = 1,算术运算符的使用,若以算术运算表达式作为源操作数,则整个表达相当于立即数;运算结果(返回值)的长度由目操作数决定 乘、除运算不带符号 除法运算的返回值为整数商 表达式的运算不影响标志位 例:MOV AL,80H + 90H 相当于

12、MOV AL,10H 80H + 90H=10H由汇编程序完成; 指令执行后(AL)=10H,各标志位不变。,逻辑运算符,AND、OR、XOR、NOT,逻辑指令助记符与逻辑运算符形同意不同 逻辑指令助记符出现在指令语句的开始 AND CX,00FFH AND 10AEH 逻辑运算符出现在指令语句的操作数段 AND CX,00FFH AND 10AEH 注:等价指令 AND CX,00AEH,逻辑运算符的使用,若以逻辑运算表达式作为源操作数,则整个表达相当于立即数;运算结果(返回值)的长度由目操作数决定 除NOT之外,均为双目运算符 表达式的运算不影响标志位 例:AND CX,1F03H AND

13、 72B6H 相当于 AND CX,1202H 1F03H 72B6H = 1202H由汇编程序完成,各标志位不变;CX 1202H在执行过程中完成。,关系运算符,EQ 相等关系 NE 不等关系 LT 小于关系 GT 大于关系 LE 小于等于关系 GE 大于等于关系,进行关系判断时,表达式中所有的数均视为无符号数,关系运算符,EQ、NE、LT、GT、LE、GE,两性质相同的操作数的比较 若关系正确为真(T), 有全 1 操作数 若关系错误为假(F), 有全 0 操作数 例:MOV BL,(PORT LT 5)AND 20H 若PORT=2,(PORT LT 5)=0FFH,为真 原式为 MOV

14、 BL,20H 若PORT=7,(PORT LT 5)=00H,为假 原式为 MOV BL,00H,关系运算符的使用,关系运算的返回值 若关系成立,即为真,返回全1(1个字) 若关系不成立,即为假,返回全0 (1个字) 例:MOV BX ,(PORT LT 5)AND 20H 若 PORT = 2,(PORT LT 5)= 0FFFFH,为真 原式相当于 MOV BX,0020H 若 PORT = 7,(PORT LT 5)= 0000H,为假 原式相当于 MOV BX,0000H,分析运算符,分析运算符(数值返回运算符)的功能,SEG 符号地址段值属性返回符 OFFSET 符号地址偏移量值属

15、性返回符 TYPE 符号地址中数据类型属性返回符 LENGTH DUP重复次数返回符 SIZE 变量总字节数返回符,分析运算符,SEG 取变量/标号的段基值 OFFSET 取变量/标号的段内偏移量 TYPE 取变量/标号的类型值 LENGTH 取以DUP定义的变量的重复次数 SIZE 取以DUP定义的变量的总字节数,分析运算符,例:定义数据段 DATA 如下: 从实际地 02000H 开始存数据,即段地址为 0200H,段内偏移地址从 0000H 开始 DATA SEGMENT VAR1 DB 20,30 VAR2 DW 2000H,3000H VAR3 DD 22003300H DATA ENDS,段地址 = 0200H,0000H,0002H,0006H,VAR1,VAR2,VAR3,分析运算符,SEG 和 OFFSET 应用,MOV BX,SEG VAR1 ;(BX)= 0200H MOV BX,SEG VAR2 ;(BX)= 0200H MOV BX,SEG VAR3 ;(BX)= 0200H MOV BX,OFFSET VAR1 ;(BX)= 0000H MOV BX,OFFSET V

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号