第5章汇编语言程序设计

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

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

1、第5章 汇编语言程序设计(本章授课学时:12H),5.1 汇编语言的基本概念5.1.1 汇编语言源程序的格式 5.1.2 汇编语言程序的上机过程 5.2 伪指令语句 5.3 宏指令语句 5.4 常用系统功能调用和BIOS中断调用5.5 汇编语言程序设计的基本方法,教学内容,本章以Microsoft公司的宏汇编程序MASM为背景,介绍面向80x86的汇编语言程序设计方法。包括汇编语言源程序的格式、伪指令、宏指令以及顺序结构、分支结构、循环结构、过程调用等汇编语言程序设计方法。具体内容如下:1、汇编语言源程序的格式及汇编语言上机过程2、伪指令3、宏指令4、汇编语言程序设计的基本方法(包括顺序程序、

2、分支程序、 循环程序、子程序),学习要求,汇编语言程序设计是“微型计算机原理”课程非常重要的内容之一。通过本章学习,应该达到如下要求:1、熟练掌握汇编语言格式及调试方法。2、掌握子程序和宏指令的概念、定义及其调用方法。3、掌握DOS调用和BIOS调用的方法。4、熟练掌握顺序程序、分支程序、循环程序设计的基本方法 和一般技巧。,在学习了计算机和微处理器的组成以及指令系统后,就具备用汇编语言进行程序设计的能力了。汇编语言是一种面向机器的程序设计语言,其基本特征是用一组字母、数字和符号来代替二进制编码的机器指令和数据。,5.1 汇编语言的基本概念,5.1 汇编语言的基本概念,程序设计语言是专门为计算

3、机编程所配置的语言。它们按照形式与功能的不同可分为三种,即机器语言、汇编语言和高级语言。1. 机器语言机器语言(Machine Language)是由0和1二进制代码书写和存储的指令与数据。它的特点是能被机器直接识别与执行;程序所占内存空间较少。其缺点是难认、难记、难编、易错。,2. 汇编语言汇编语言(Assembly Language)使用指令的助记符、符号地址、标号等书写程序的语言,简称符号语言。它的特点是易读、易写、易记。其缺点是不能为机器所直接识别。3. 高级语言高级语言(High Level Language)是脱离具体机器(即独立于机器)的通用语言,不依赖于特定计算机的结构与指令系

4、统。,为什么要用汇编语言编写程序,凡是学过一种程序设计高级语言的人,都会有高级语言“易学易用”的感觉,这是因为高级语言的语句是面向数学语言和自然语言的,因此容易接受、掌握。相对来说汇编语言编制程序比高级语言要困难些。既然如此,为什么还要学习和使用汇编语言呢?主要有以下几点:汇编语言是机器语言的符号表示语言,因此,程序设计人员可以充分利用机器硬件的全部功能,发挥机器的长处。,现在的微机系统中,底层的一些功能仍然靠汇编语言程序来实现。例如机器的自检、系统初始化、实际的输入输出操作,至今仍然是用汇编语言编制的程序来完成。汇编语言程序的效率通常高于高级语言程序。所以在节省内存空间和提高程序运行速度的重

5、要场合,如实时控制,常常使用汇编语言来编制的。鉴于以上理由,现在许多高级语言都设置有与汇编语言程序接口的功能,以便于提高高级语言程序的效率。,5.1.1 汇编语言源程序的格式,例5.1 要求将两个5字节十六进制数相加,可以编写出以下汇编语言源程序。,DATASEGMENT DATA1 DB 0F8H, 60H, 0ACH, 74H, 3BH DATA2 DB 0C1H, 36H, 9EH, 0D5H, 20H DATAENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,START:MOV AX, DATAMOV DS, AX MOV CX, 5 MOV SI, 0

6、 CLC LOOPER:MOV AL, DATA2SI ADC DATA1SI,AL ;与被加数相加INC SI DEC CX JNZ LOOPER MOV AH, 4CH INT 21HCODE ENDS END START ;源程序结束,5.2.1 分段结构 由上面的例子可以看出,汇编语言源程序的结构是分段结构形式,一个汇编语言源程序由若干段(SEGMENT)组成,每个段以SEGMENT语句开始,以ENDS语句结束。整个源程序的结尾是END语句。 这里所说的汇编语言源程序中的段与前面讨论的CPU管理的存储器的段,既有联系,又在概念上有所区别。我们已经知道,微处理器对存储器的管理是分段的,因

7、此,在汇编语言程序中也要求分段组织指令、数据和堆栈,以便将源程序汇编成为目标程序后,可以分别装入存储器的相应段中。,在上面的简单源程序中只有两个逻辑段,一个逻辑段的名字是DATA,其中存放着与程序有关的数据,称为逻辑数据段;另一个逻辑段的名字是CODE,其中包含着程序的指令,称为逻辑代码段。每个段内均有若干行语句(STATEMENT),因此,可以说一个汇编源程序是由一行一行的语句组成的。下面我们来讨论汇编语言语句的类型和组成。,5.2.2 汇编语言语句的类型和格式 1语句的类型 汇编语言源程序中的语句可以分为两种类型:指令语句,伪指令语句。(1) 指令语句:它是能产生目标代码,CPU 可以执行

8、的能完成特定功能的语句。 (2) 伪指令语句:它是一种不产生目标代码的语句,它仅仅在汇编过程中告诉汇编程序应如何汇编。例如,告诉汇编程序已写出的汇编语言源程序有几个段,段的名字是什么;定义变量,定义过程,给变量分配存储单元,给数字或表达式命名等。显然,伪指令语句是汇编程序在汇编时使用的。,2. 语句的格式 指令语句与伪指令语句的格式是类似的。一般情况下,汇编语言的语句可以由部分构成: 名字 助记符 操作数 ;注释其中带方括号的部分表示任选项,既可以有,也可以没有。例5.1中有如下语句: LOOPER: MOV AL,DATA2SI ;取一个字节加数 DATA1 DB 0F8H,60H,0ACH

9、,74H,3BH;被加数第一条语句是指令语句,其中“LOOPER:”是名字,“MOV”是指令助记符,“AL,DATA2SI”是操作数,“;”后面是注释部分;第二条语句是伪指令语句,其中“DATA1”是名字,“DB”是伪指令定义符,“0F8H,60H,0ACH,74H,3BH”是操作数,“;”后面是注释部分。,1) 名字 汇编语言语句的第一个组成部分是名字(Name)。在指令语句中,这个名字是一个标号。指令语句中的标号实质上是指令的符号地址。并非每条指令语句必须有标号,但如果一条指令前面有一标号,则程序中其它地方就可以引用这个标号。在例5.1中,START、LOOPER就是标号。标号后面有一个冒

10、号。 标号有三种属性:段、偏移量和类型。 标号的段属性是定义标号在程序段的段地址,当程序中引用一个标号时,该标号的段值应在CS寄存器中。 标号的偏移量属性表示标号所在段的起始地址到定义该标号的地址之间的字节数。偏移量是一个16位无符号数。 标号的类型属性有两种:NEAR和FAR。前一种标号可以在段内被引用;后一种标号可以在其它段被引用。如果定义一个标号时后跟冒号,则汇编程序确认其类型为NEAR。,伪指令语句中的名字可以是变量名、段名、过程名。与指令语句中的标号不同,这些伪指令语句中的名字并不总是任选的,有些伪指令规定前面必须有名字,有些则不允许有名字,也有一些伪指令的名字是任选的。即不同的伪指

11、令对于是否有名字有不同的规定。伪指令语句的名字后面通常不跟冒号,这是它和标号的一个明显区别。 很多情况下伪指令语句中的名字是变量名,变量名代表存储器中一个数据区的名字,例如例5.1中的DATA1、DATA2就是变量名。,变量也有三种属性:段、偏移量和类型。 变量的段属性是变量所代表的数据区所在段的段地址。由于数据区一般在存储器的数据段中,因此变量的段地址常常在DS和ES寄存器中。 变量的偏移量属性是该变量所在段的起始地址与变量的地址之间的字节数。 变量的类型属性有BYTE(字节)、WORD(字)、 DWORD (双字)、 QWORD (四字)、TBYTE(十字)等,表示数据区中存取操作对象的大

12、小。,2) 助记符 汇编语言语句中的第二个组成部分是助记符(Memonic)。 在指令语句中的第二部分是CPU指令系统中指令的助记符,例如:MOV ADC等等。助记符约有90多种,在第四章中已经进行了详细的讨论。 在伪指令语句中的第二部分是伪指令的定义符,例如:DB、SEGMENT、 ENDS 、 END等都是伪指令定义符。它们在程序中的作用是定义变量的类型、定义段以及告诉汇编程序结束汇编等。,3) 操作数 汇编语言语句中的第三个组成部分是操作数。在指令语句中是指令的操作数,可能有单操作数或双操作数,也可能无操作数;而在伪指令中可能有更多个操作数。当操作数不止一个时,相互之间应该用逗号隔开。

13、可以作为操作数的有:常数、寄存器、标号、变量和表达式等。,(1)常数指令中出现的固定值,常数值的第一位必须是数字二进制:最后加字母B,例如:01000111B十进制:最后加字母D,D可以省略,例如:1996或1996D八进制:最后加字母Q,例如:256Q十六进制:最后加字母H,如果以字母“AF”开头前面加0,例如:0AH,0A324H,(2) 寄存器 80868088CPU的寄存器可以作为指令的操作数。 (3) 标号 由于标号代表一条指令的符号地址,因此可以作为转移(无条件转移或条件转移)、过程调用CALL以及循环控制LOOP指令的操作数。 (4) 变量 因为变量是存储器中某个数据区的名字,因

14、此在指令中可以作为存储器操作数。 (5) 表达式 汇编语言语句中的表达式,按其性质可分为两种:数值表达式和地址表达式。数值表达式产生一个数值结果,只有大小,没有属性。地址表达式的结果不是一个单纯的数值,而是一个表示存储器地址的变量或标号,它有三种属性:段、偏移量和类型。,表达式是由操作数和运算符组成。即用一个运算符可以对一个或几个操作数进行运算,构成一个表达式。表达式中常用的运算符有以下几种: 算术运算符 逻辑运算符 关系运算符 分析运算符 合成运算符,运算符,(1)算术运算符+ - * / MOD SHL SHR可以对数据进行运算,运算结果仍然为数据,但对地址不能进行乘除运算。如:20A1H+1040H21H SHL 2 (=84H),(2)逻辑运算符AND OR NOT XOR只能对常数进行运算,得到的结果也是常数既可以是指令助记符,又可以作汇编语言的运算符指令助记符是在程序执行时运算的,运算符是在汇编过程进行例如:AND DX,PORT AND 0FEH如果PORT值为90H,则相当于AND DX,90H如果PORT值为81H,则相当于AND DX,80H,

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

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

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