第5章-汇编语言程序设计

上传人:小** 文档编号:45891233 上传时间:2018-06-20 格式:PPT 页数:120 大小:1.36MB
返回 下载 相关 举报
第5章-汇编语言程序设计_第1页
第1页 / 共120页
第5章-汇编语言程序设计_第2页
第2页 / 共120页
第5章-汇编语言程序设计_第3页
第3页 / 共120页
第5章-汇编语言程序设计_第4页
第4页 / 共120页
第5章-汇编语言程序设计_第5页
第5页 / 共120页
点击查看更多>>
资源描述

《第5章-汇编语言程序设计》由会员分享,可在线阅读,更多相关《第5章-汇编语言程序设计(120页珍藏版)》请在金锄头文库上搜索。

1、第五章 汇编语言程序设计u 5.1 汇编语言语句的类型和组成u 5.2 伪操作命令u 5.3 DOS系统功能调用和BIOS中断调用 u 5.4 汇编语言程序设计第五章 汇编语言程序设计5.1 汇编语言语句的类型和组成 5.1.1 5.1.1 汇编语言语句的类型汇编语言语句的类型在汇编语言中我们不仅要知道指令系统,而且在汇编语言中我们不仅要知道指令系统,而且还必须了解汇编语言语句的组成和类型,了解汇编还必须了解汇编语言语句的组成和类型,了解汇编语言中的编写程序的格式以及格式中各个部分的意语言中的编写程序的格式以及格式中各个部分的意义,以便我们能够编写出正确的源程序。义,以便我们能够编写出正确的源

2、程序。汇编语言有自身的语法规则,汇编语言源程序中汇编语言有自身的语法规则,汇编语言源程序中有有3 3种基本语句:种基本语句:指令性语句(由指令性语句(由CPUCPU指令组成);指令组成);指示性语句(伪指令语句)和宏指令语句。指示性语句(伪指令语句)和宏指令语句。指令性语句和指示性语句是最基本的语句,也是最常用的语句指令性语句和指示性语句是最基本的语句,也是最常用的语句。 指令性指令是给指令性指令是给CPUCPU的命令,它是由汇编程序翻译成机器语的命令,它是由汇编程序翻译成机器语言指令,在程序运行时由言指令,在程序运行时由CPUCPU来执行,每条指令都对应来执行,每条指令都对应CPUCPU一种

3、一种特定的操作,特定的操作,例如:算术运算、逻辑运算、串操作等例如:算术运算、逻辑运算、串操作等;而伪指;而伪指令是给汇编程序的命令,伪指令不汇编成机器语言,仅仅在汇令是给汇编程序的命令,伪指令不汇编成机器语言,仅仅在汇编过程中告诉汇编程序应如何汇编。在汇编中由汇编程序进行编过程中告诉汇编程序应如何汇编。在汇编中由汇编程序进行处理,处理,例如:定义数据分配,定义过程等。例如:定义数据分配,定义过程等。 指令性指令汇编以后,每条指令都产生其对应的机器代码;指令性指令汇编以后,每条指令都产生其对应的机器代码;而伪指令则不产生与之对应的机器代码。而伪指令则不产生与之对应的机器代码。宏指令是使用者利用

4、上述基本语句自己定义的新的指令。宏指令是使用者利用上述基本语句自己定义的新的指令。二者的区别是:二者的区别是:u 例:5个连续字节单元的累加DATA SEGMENT;定义数据段D1DB 5 DUP(?);连续的字节单元CCEQU $D1;对单元计数SUMDW 0;为结果保留一个字DATA ENDS;数据段定义结束STACK SEGMENT PARA STACK STACK;定义堆栈段DB 100 DUP (?);100字节的栈空间STACKENDS;堆栈段定义结束CODE SEGMENT;定义代码段ASSUME DS:DATA,SS:STACK,CS:CODE;对各段进行说明BEGIN:MOV

5、 AX,DATA;DS初始化为DATAMOV DS,AXLEA SI,D1;预置源数据的指针汇编语言程序结构特点定义存储单元 的数据伪指令定义堆栈段定义语句段定义语句作堆栈用的 存储单元指令MOV CX,CC+1;预置次数CLD ; (DF)=0,串指针自动增量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;完成,返回DOSINT 21HCODE ENDS;代码段结束ENDBEGIN

6、;整个程序结束段定义汇编程 序结束源程序的一般格式u代码段是必需的。每段必须有且仅有一个名字,以 SEGMENT定义段的起始,以ENDS定义段的结束,整个程序 结束后需以END收尾。源程序的一般格式为: 段名1SEGMENT 语句 语句 段名1ENDS 段名2SEGMENT 语句 语句 段名2ENDS END(标号)汇编语言源程序的结构段名1 SEGMENT语句行语句行 段名1 ENDS 段名2 SEGMENT语句行语句行 段名2 ENDSEND 标号或过程名 一个源程序由若干段组成,一个源程序由若干段组成, 如数据段、代码段、堆栈段等如数据段、代码段、堆栈段等 ; 各段由若干条语句行组成;各

7、段由若干条语句行组成; 指令必须放在代码段中;指令必须放在代码段中; 为了确保程序的执行和正确为了确保程序的执行和正确 返回,必须借助堆栈段;返回,必须借助堆栈段; 根据编程需要确定是否需要根据编程需要确定是否需要 数据段、附加段。数据段、附加段。5.1.2 汇编语言语句的组成1指令性语句:即执行性语句(指令)包括四部分: 标号: 指令操作码 操作数 ;注释 例: AGAN:ADC SUM,AX;累加2指示性语句:即说明性语句(伪指令),由四部分组 成: 名字 伪指令 操作数 ;注释 例:SUM DW 0;为结果保留一个字汇编语言的语句行 指令性语句指令性语句 指令,与机器码一一对应。指令,与

8、机器码一一对应。 指示性语句指示性语句 伪指令,可以对源程序进行指示、说明、定义等。伪指令,可以对源程序进行指示、说明、定义等。 注释语句注释语句 以分号开始,整行均是对程序的注解,增强可读性以分号开始,整行均是对程序的注解,增强可读性 。本身不参与汇编,对指令代码无任何贡献。本身不参与汇编,对指令代码无任何贡献。汇编语言的语句行构成 指令性语句 指令标号指令标号: : 指令助记符指令助记符 操作数操作数1,1,操作数操作数2 ;2 ;注释注释 指示性语句伪指令 名字名字 伪指令助记符伪指令助记符 参数参数1,1,参数参数2,2,参数参数n ;n ;注释注释汇编语言中的字符集字符 A Z 或

9、a z注:汇编源程序中,大小写字符功能一样数字 0 9注:数字不用于标识符的第一位特殊符号?、/、%等注:标识符中谨慎使用特殊符号1、汇编语句的说明汇编语言中的保留字u汇编源程序中标识符不能使用的字符串寄存器名 例:AX、SP 标志符 例:CF、TF 指令助记符 例:MOV、ADD 伪指令符 例:SEGMENT、END 运算符 例:OFFSET、PTR 标识符由编程人员自行定义的、有特殊意义 的字符序列。 标识符的使用标识符的使用 可使用字母、数字、特殊字符(可使用字母、数字、特殊字符(? $ _? $ _) 不能使用保留字不能使用保留字 !符合字符集要求!符合字符集要求 不用数字开头,第一个

10、符号最好用字母不用数字开头,第一个符号最好用字母 长度小于长度小于 32 32 个字符个字符 标识符的作用标识符的作用 用作段名、过程名、结构名、宏名等的定义用作段名、过程名、结构名、宏名等的定义 用作用作变量变量名,数据段符号地址的定义名,数据段符号地址的定义 用作代码段用作代码段标号标号 标识符(标号、符号地址、变量名)标识符u数据段中的标识符符号地址具有存储地址值和数据类型的特 征u代码段中的标识符伪指令前的标号定义变量指令前的标号定义标号:u标识符与常量MOV AL,F8H (AL)=(F8H),从符号地址中取数MOV AL,0F8H (AL)=F8H,常数F8H赋值常量 整数整数:必

11、须以数字开头!:必须以数字开头!二进制数二进制数以以“ “B” B” 结尾结尾八进制数八进制数以以“ “O”O”或或“ “Q” Q” 结尾结尾十进制数十进制数不带结尾字母,或以不带结尾字母,或以“ “D” D” 结尾结尾十六进制数十六进制数以以“ “H” H” 结尾结尾 字符串字符串连续的字节单元,每个单元均存放连续的字节单元,每个单元均存放ASCIIASCII码。用包码。用包 括在单引号中的字母表示(单引号本身不算作字符)。括在单引号中的字母表示(单引号本身不算作字符)。 如如 ABCDEFABCDEF,对应的数值依次是对应的数值依次是61H66H61H66H。常量出现在源程序中指令操作数的

12、位置,具有 固定值的数值。变量和标号 段基址:段基址:该单元所在段的首址,用相应的段寄存器值表示该单元所在段的首址,用相应的段寄存器值表示 (1616位)位) 偏移量:偏移量:该单元在段内的偏移量或有效地址,表示与段首地该单元在段内的偏移量或有效地址,表示与段首地 址之间的距离(址之间的距离(1616位)位) 类型:类型:该单元中存放的数据长度类型,可能是字节该单元中存放的数据长度类型,可能是字节 (Byte)(Byte)、 字字 (Word) (Word) 或双字或双字 (Double Word)(Double Word)等,对应于类型值等,对应于类型值1 1、2 2、4 4u变量编程人员为

13、内存单元起的名字。有3种属性:uu标号标号编程人员为目标地址单元起的名字,对应于该编程人员为目标地址单元起的名字,对应于该 指令在代码段中的存放地址。也有指令在代码段中的存放地址。也有3 3种属性,仅种属性,仅类型类型与变量与变量 不同:不同: 类型:类型:标号的类型共有远标号的类型共有远(Far)(Far)、近近(Near)(Near)两种,类型值分两种,类型值分 别是别是-2-2、-1-12 、 表达式与运算符u表达式由运算符和操作数组成的、具有确定 结果的有意义的序列,可作为指令的操作数。uu运算符运算符共有共有5 5类:算术运算符、逻辑运算符、关系运类:算术运算符、逻辑运算符、关系运

14、算符、分析运算符、合成运算符。算符、分析运算符、合成运算符。uu操作数操作数常量、变量和标号等均可参与运算。对于地常量、变量和标号等均可参与运算。对于地 址指针,只能进行加址指针,只能进行加/ /减算术运算。减算术运算。uu运算规则运算规则表达式的值由汇编程序在编译的过程中自表达式的值由汇编程序在编译的过程中自 动完成计算,所得确定的运算结果与操作码一起被编译成动完成计算,所得确定的运算结果与操作码一起被编译成 机器码。机器码。汇编语言的运算符u算术运算符:+、-、*、/、MOD、SHL、 SHRu逻辑运算符:AND、OR、XOR、NOTu关系运算符:EQ、NE、LT、GT、LE、 GEu分析

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

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

当前位置:首页 > 商业/管理/HR > 其它文档

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