微机汇编语言程序设计.ppt
《微机汇编语言程序设计.ppt》由会员分享,可在线阅读,更多相关《微机汇编语言程序设计.ppt(164页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第4章章 8086/8088汇编语言程序设计汇编语言程序设计 汇编语言程序设计是开发微机系统软件的基本汇编语言程序设计是开发微机系统软件的基本汇编语言程序设计是开发微机系统软件的基本汇编语言程序设计是开发微机系统软件的基本功功功功,在程序设计中占有十分重要的地位。在程序设计中占有十分重要的地位。在程序设计中占有十分重要的地位。在程序设计中占有十分重要的地位。由于汇编语言具有执行速度快和易于实现对硬件的控由于汇编语言具有执行速度快和易于实现对硬件的控由于汇编语言具有执行速度快和易于实现对硬件的控由于汇编语言具有执行速度快和易于实现对硬件的控制等独特的优点制等独特的优点制等独特的优点制等独特的优
2、点,所以至今它仍然是用户使用得较多的程所以至今它仍然是用户使用得较多的程所以至今它仍然是用户使用得较多的程所以至今它仍然是用户使用得较多的程序设计语言。特别是在对于程序的空间和时间要求很高的序设计语言。特别是在对于程序的空间和时间要求很高的序设计语言。特别是在对于程序的空间和时间要求很高的序设计语言。特别是在对于程序的空间和时间要求很高的场合场合场合场合,以及需要直接控制设备的应用场合以及需要直接控制设备的应用场合以及需要直接控制设备的应用场合以及需要直接控制设备的应用场合,汇编语言更是必汇编语言更是必汇编语言更是必汇编语言更是必不可少了。不可少了。不可少了。不可少了。由于汇编语言本身的特点由
3、于汇编语言本身的特点由于汇编语言本身的特点由于汇编语言本身的特点,本章将选择目前国内广泛本章将选择目前国内广泛本章将选择目前国内广泛本章将选择目前国内广泛使用的使用的使用的使用的IBM PCIBM PC机作为基础机型机作为基础机型机作为基础机型机作为基础机型,着重讨论着重讨论着重讨论着重讨论8086/80888086/8088汇编汇编汇编汇编语言的基本语法规则和程序设计的基本方法语言的基本语法规则和程序设计的基本方法语言的基本语法规则和程序设计的基本方法语言的基本语法规则和程序设计的基本方法,以掌握一般以掌握一般以掌握一般以掌握一般汇编语言程序设计的初步技术。汇编语言程序设计的初步技术。汇编语
4、言程序设计的初步技术。汇编语言程序设计的初步技术。4.1 程序设计语言概述4.2 8086/8088汇编语言的基本语法4.3 汇编语言程序设计基本方法4.4 软件调试技术目目录录4.1 程序设计语言概述程序设计语言概述程序设计语言是专门为计算机编程所配程序设计语言是专门为计算机编程所配程序设计语言是专门为计算机编程所配程序设计语言是专门为计算机编程所配置的语言。它们按照形式与功能的不同可分置的语言。它们按照形式与功能的不同可分置的语言。它们按照形式与功能的不同可分置的语言。它们按照形式与功能的不同可分为为为为3 3 3 3种种种种,即即即即:机器语言机器语言机器语言机器语言汇编语言汇编语言汇编
5、语言汇编语言高级语言高级语言高级语言高级语言目录目录一、机器语言一、机器语言(Machine Language)机器语言是由机器语言是由机器语言是由机器语言是由0 0 0 0、1 1 1 1二进制代码书写和存储的二进制代码书写和存储的二进制代码书写和存储的二进制代码书写和存储的指令与数据。指令与数据。指令与数据。指令与数据。特点特点特点特点:能为机器直接识别与执行;程序所占内能为机器直接识别与执行;程序所占内能为机器直接识别与执行;程序所占内能为机器直接识别与执行;程序所占内存空间较少。存空间较少。存空间较少。存空间较少。缺点缺点缺点缺点:难认、难记、难编写、易出错。难认、难记、难编写、易出错
6、。难认、难记、难编写、易出错。难认、难记、难编写、易出错。二、汇编语言二、汇编语言(Assembly Language)汇编语言是用指令的助记符、符号地址、标号等汇编语言是用指令的助记符、符号地址、标号等汇编语言是用指令的助记符、符号地址、标号等汇编语言是用指令的助记符、符号地址、标号等书写程序的语言书写程序的语言书写程序的语言书写程序的语言,简称符号语言。简称符号语言。简称符号语言。简称符号语言。特点特点特点特点:易读、易写、易记。易读、易写、易记。易读、易写、易记。易读、易写、易记。缺点缺点缺点缺点:不能像机器语言那样为计算机所直接识别,也不能像机器语言那样为计算机所直接识别,也不能像机器
7、语言那样为计算机所直接识别,也不能像机器语言那样为计算机所直接识别,也不如高级语言那样具有很好的通用性和可移植性。不如高级语言那样具有很好的通用性和可移植性。不如高级语言那样具有很好的通用性和可移植性。不如高级语言那样具有很好的通用性和可移植性。三、高级语言三、高级语言(High Level Language)高级语言是脱离具体机器高级语言是脱离具体机器高级语言是脱离具体机器高级语言是脱离具体机器(即独立于机器即独立于机器即独立于机器即独立于机器),),面向用户面向用户面向用户面向用户的通用语言的通用语言的通用语言的通用语言,不依赖于特定计算机的结构与指令系统。不依赖于特定计算机的结构与指令系
8、统。不依赖于特定计算机的结构与指令系统。不依赖于特定计算机的结构与指令系统。用同一种高级语言编写的源程序用同一种高级语言编写的源程序用同一种高级语言编写的源程序用同一种高级语言编写的源程序,一般可以在不同计一般可以在不同计一般可以在不同计一般可以在不同计算机上运行而获得同一结果。算机上运行而获得同一结果。算机上运行而获得同一结果。算机上运行而获得同一结果。由于高级语言的通用性特点,对于高级语言程序员来由于高级语言的通用性特点,对于高级语言程序员来由于高级语言的通用性特点,对于高级语言程序员来由于高级语言的通用性特点,对于高级语言程序员来说,不必熟悉计算机内部具体结构和机器指令,而只需要说,不必
9、熟悉计算机内部具体结构和机器指令,而只需要说,不必熟悉计算机内部具体结构和机器指令,而只需要说,不必熟悉计算机内部具体结构和机器指令,而只需要把主要精力放在程序结构和算法描述上面。把主要精力放在程序结构和算法描述上面。把主要精力放在程序结构和算法描述上面。把主要精力放在程序结构和算法描述上面。所以,高级语言具有更广泛的领域。所以,高级语言具有更广泛的领域。所以,高级语言具有更广泛的领域。所以,高级语言具有更广泛的领域。汇编语言程序的上机与处理过程汇编语言程序的上机与处理过程 图中图中图中图中,椭圆表示系统软件及其操作椭圆表示系统软件及其操作椭圆表示系统软件及其操作椭圆表示系统软件及其操作,方框
10、表示磁盘文件。方框表示磁盘文件。方框表示磁盘文件。方框表示磁盘文件。椭圆中横线上部是系统软件的名称椭圆中横线上部是系统软件的名称椭圆中横线上部是系统软件的名称椭圆中横线上部是系统软件的名称,横线下部是软件所作横线下部是软件所作横线下部是软件所作横线下部是软件所作的操作。的操作。的操作。的操作。首先首先首先首先,用户编写汇编语言源文件;再经过汇编程序进用户编写汇编语言源文件;再经过汇编程序进用户编写汇编语言源文件;再经过汇编程序进用户编写汇编语言源文件;再经过汇编程序进行汇编行汇编行汇编行汇编,产生属性为产生属性为产生属性为产生属性为 OBJ OBJ OBJ OBJ的以二进制代码表示的目标程序的
11、以二进制代码表示的目标程序的以二进制代码表示的目标程序的以二进制代码表示的目标程序并存盘。并存盘。并存盘。并存盘。然后通过连接程序然后通过连接程序然后通过连接程序然后通过连接程序(LINK)(LINK)(LINK)(LINK)把目标文件与库文件以及其把目标文件与库文件以及其把目标文件与库文件以及其把目标文件与库文件以及其他目标文件连接在一起他目标文件连接在一起他目标文件连接在一起他目标文件连接在一起,形成可执行文件形成可执行文件形成可执行文件形成可执行文件,才能在才能在才能在才能在DOSDOSDOSDOS环境环境环境环境下在机器上执行之。下在机器上执行之。下在机器上执行之。下在机器上执行之。4
12、.2 8086/80884.2 8086/8088汇编语言的基本语法汇编语言的基本语法各种机器的汇编语言其语法规则不尽相各种机器的汇编语言其语法规则不尽相各种机器的汇编语言其语法规则不尽相各种机器的汇编语言其语法规则不尽相同同同同,但基本语法结构形式类似。但基本语法结构形式类似。但基本语法结构形式类似。但基本语法结构形式类似。现以现以现以现以8086/80888086/80888086/80888086/8088汇编语言汇编语言汇编语言汇编语言为例加以具体为例加以具体为例加以具体为例加以具体讨论。讨论。讨论。讨论。目录目录一、一、8086/80888086/8088汇编源程序实例汇编源程序实例
13、在具体讨论在具体讨论在具体讨论在具体讨论8086/80888086/80888086/80888086/8088汇编语言的繁琐语法规则之前汇编语言的繁琐语法规则之前汇编语言的繁琐语法规则之前汇编语言的繁琐语法规则之前,下面先举一个具有完整段定义格式的汇编源程序(即下面先举一个具有完整段定义格式的汇编源程序(即下面先举一个具有完整段定义格式的汇编源程序(即下面先举一个具有完整段定义格式的汇编源程序(即MASMMASMMASMMASM程序)实例程序)实例程序)实例程序)实例,以便对汇编语言的有关规定和格式有个初步以便对汇编语言的有关规定和格式有个初步以便对汇编语言的有关规定和格式有个初步以便对汇编
14、语言的有关规定和格式有个初步了解。了解。了解。了解。例例例例:求从求从求从求从1 1 1 1开始连续开始连续开始连续开始连续50505050个奇数之和个奇数之和个奇数之和个奇数之和,并将结果存放在名并将结果存放在名并将结果存放在名并将结果存放在名字为字为字为字为SUMSUMSUMSUM的字存储单元中。的字存储单元中。的字存储单元中。的字存储单元中。例例例例:求从求从求从求从1 1 1 1开始连续开始连续开始连续开始连续50505050个奇数之和个奇数之和个奇数之和个奇数之和,并将结果存放在名字为并将结果存放在名字为并将结果存放在名字为并将结果存放在名字为SUMSUMSUMSUM的字存储单元中。
15、的字存储单元中。的字存储单元中。的字存储单元中。DATADATASEGMENTSEGMENT;定义数据段定义数据段定义数据段定义数据段,DATA,DATA为段名为段名为段名为段名SUMSUMDW 0DW 0;由符号由符号由符号由符号(叫变量名叫变量名叫变量名叫变量名)SUM)SUM指定的内存指定的内存指定的内存指定的内存单元类型定义为一个字单元类型定义为一个字单元类型定义为一个字单元类型定义为一个字,初初初初 值为值为值为值为0 0DATADATAENDSENDS;定义数据段结束定义数据段结束定义数据段结束定义数据段结束STACKSTACKSEGMENT STACKSEGMENT STACK;
16、定义堆栈段定义堆栈段定义堆栈段定义堆栈段,这是组合类型伪指令这是组合类型伪指令这是组合类型伪指令这是组合类型伪指令,它规它规它规它规 定在伪指令后须跟定在伪指令后须跟定在伪指令后须跟定在伪指令后须跟STACKSTACK类类类类型名型名型名型名DB 200 DUP(0)DB 200 DUP(0);定义堆栈段为定义堆栈段为定义堆栈段为定义堆栈段为200200个字节的连续存个字节的连续存个字节的连续存个字节的连续存储区储区储区储区,且每个字节的值为且每个字节的值为且每个字节的值为且每个字节的值为0 0STACKSTACKENDSENDS;定义堆栈段结束定义堆栈段结束定义堆栈段结束定义堆栈段结束COD
17、ECODESEGMENTSEGMENT;定义代码段定义代码段定义代码段定义代码段ASSUMEASSUMEDS:DATA,SS:STACK,CS:CODEDS:DATA,SS:STACK,CS:CODE;由由由由ASSUMASSUM伪指令定义各段寄存器伪指令定义各段寄存器伪指令定义各段寄存器伪指令定义各段寄存器的内容的内容的内容的内容START:START:MOV MOV AX,DATA AX,DATA ;将将将将DSDSDSDS初始化为数据段首址初始化为数据段首址初始化为数据段首址初始化为数据段首址 MOV MOV DS,AX DS,AX的段值的段值的段值的段值DATADATADATADATA
18、 MOV MOV CX,50 CX,50 ;CX;CX;CX;CX置入循置入循置入循置入循环计环计环计环计数数数数值值值值 MOV MOV AX,0 AX,0 ;清清清清AXAXAXAX累加器累加器累加器累加器 MOV MOV BX,1 BX,1 ;BX;BX;BX;BX置常量置常量置常量置常量1 1 1 1NEXT:NEXT:ADD ADD AX,BX AX,BX ;累加奇数和累加奇数和累加奇数和累加奇数和,计计计计50505050次次次次 INC INC BX BX ;求下一个奇数求下一个奇数求下一个奇数求下一个奇数 INC INC BX BX DEC DEC CX CX ;循循循循环计环
19、计环计环计数器作减数器作减数器作减数器作减1 1 1 1计计计计数数数数 JNE JNE NEXT NEXT ;未未未未计计计计完完完完50505050次次次次时时时时,转转转转至至至至NEXTNEXTNEXTNEXT循循循循环环环环 MOV MOV SUM,AX SUM,AX ;累加和送存累加和送存累加和送存累加和送存SUMSUMSUMSUM单单单单元元元元 MOV MOV AH,4CH AH,4CH ;DOS;DOS;DOS;DOS功能调用语句功能调用语句功能调用语句功能调用语句,机器将结束本机器将结束本机器将结束本机器将结束本 INTINT 21H 21H程序的运行程序的运行程序的运行程
20、序的运行,并返回并返回并返回并返回DOSDOSDOSDOS状态状态状态状态CODECODEENDS ENDS ;代码段结束代码段结束代码段结束代码段结束 END END START START ;整个程序整个程序整个程序整个程序汇编结汇编结汇编结汇编结束束束束 段段汇编源程序一般由若干段组成汇编源程序一般由若干段组成汇编源程序一般由若干段组成汇编源程序一般由若干段组成,每个段每个段每个段每个段都有一个名字都有一个名字都有一个名字都有一个名字(叫段名叫段名叫段名叫段名),),),),以以以以SEGMENTSEGMENTSEGMENTSEGMENT作为段作为段作为段作为段的开始的开始的开始的开始,
21、以以以以ENDSENDSENDSENDS作为段的结束作为段的结束作为段的结束作为段的结束,这两者这两者这两者这两者(伪指伪指伪指伪指令令令令)前面都要冠以相同的名字。前面都要冠以相同的名字。前面都要冠以相同的名字。前面都要冠以相同的名字。段可以从性质上分为代码段、堆栈段、数据段段可以从性质上分为代码段、堆栈段、数据段段可以从性质上分为代码段、堆栈段、数据段段可以从性质上分为代码段、堆栈段、数据段和附加段和附加段和附加段和附加段4 4 4 4种种种种,但代码段与堆栈段是不可少的但代码段与堆栈段是不可少的但代码段与堆栈段是不可少的但代码段与堆栈段是不可少的,数据数据数据数据段与附加段可根据需要设置
22、。段与附加段可根据需要设置。段与附加段可根据需要设置。段与附加段可根据需要设置。在上面这个例子中在上面这个例子中在上面这个例子中在上面这个例子中,一共定义了一共定义了一共定义了一共定义了3 3 3 3个段个段个段个段:1 1 1 1个数据段个数据段个数据段个数据段1 1 1 1个堆栈段个堆栈段个堆栈段个堆栈段1 1 1 1个代码段个代码段个代码段个代码段NOTENOTE每一行只有一条语句每一行只有一条语句每一行只有一条语句每一行只有一条语句且不能超过且不能超过且不能超过且不能超过128128128128个字符(从个字符(从个字符(从个字符(从MASM 6.0MASM 6.0MASM 6.0MA
23、SM 6.0开始可以是开始可以是开始可以是开始可以是512512512512个字符)个字符)个字符)个字符)但一条语句允许有后续行但一条语句允许有后续行但一条语句允许有后续行但一条语句允许有后续行,最后均以回车作结束。最后均以回车作结束。最后均以回车作结束。最后均以回车作结束。NOTENOTE整个源程序必须以整个源程序必须以整个源程序必须以整个源程序必须以ENDENDENDEND语句来结束语句来结束语句来结束语句来结束,它通知汇编它通知汇编它通知汇编它通知汇编程序停止汇编。程序停止汇编。程序停止汇编。程序停止汇编。ENDENDENDEND后面的标号后面的标号后面的标号后面的标号STARTSTA
24、RTSTARTSTART表示该程序表示该程序表示该程序表示该程序执行时的起始地址。执行时的起始地址。执行时的起始地址。执行时的起始地址。每一条汇编语句最多由每一条汇编语句最多由每一条汇编语句最多由每一条汇编语句最多由4 4 4 4个字段组成个字段组成个字段组成个字段组成,它们均按它们均按它们均按它们均按照一定的规则分别写在一个语句的照一定的规则分别写在一个语句的照一定的规则分别写在一个语句的照一定的规则分别写在一个语句的4 4 4 4个区域内个区域内个区域内个区域内,各各各各区域之间用空格或制表符区域之间用空格或制表符区域之间用空格或制表符区域之间用空格或制表符(TAB(TAB(TAB(TAB
25、键键键键)隔开。隔开。隔开。隔开。二、二、8086/80888086/8088汇编语言语句汇编语言语句 (一一一一)汇编语言语句的种类和格式汇编语言语句的种类和格式汇编语言语句的种类和格式汇编语言语句的种类和格式1 1 1 1 语句的种类语句的种类语句的种类语句的种类 在在在在8086/80888086/80888086/80888086/8088汇编语言中汇编语言中汇编语言中汇编语言中,有有有有3 3 3 3种基本语句:种基本语句:种基本语句:种基本语句:指令语句指令语句指令语句指令语句 伪指令语句伪指令语句伪指令语句伪指令语句 宏指令语句宏指令语句宏指令语句宏指令语句 指令语句指令语句是一
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 汇编语言 程序设计
限制150内