最新-第4章汇编语言程序设计-课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《最新-第4章汇编语言程序设计-课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新 汇编语言 程序设计 课件
- 资源描述:
-
1、第第4章章 汇编语言程序设计汇编语言程序设计 本章要点:本章要点:p 汇编语言程序设计基础汇编语言程序设计基础p 源程序的汇编、连接与调试源程序的汇编、连接与调试p 分支程序设计技术分支程序设计技术p 循环程序设计技术循环程序设计技术p 子程序设计技术子程序设计技术p 综合程序设计示例综合程序设计示例本教案内容本教案内容第第4 4章章 汇编语言程序设计汇编语言程序设计n汇编语言程序设计基础汇编语言程序设计基础n源程序的汇编、连接与调试源程序的汇编、连接与调试n分支程序设计技术分支程序设计技术n循环程序设计技术循环程序设计技术n子程序设计技术子程序设计技术n综合程序设计示例综合程序设计示例汇编语
2、言程序设计汇编语言程序设计算法算法 所谓算法,简单地说就是计算机能所谓算法,简单地说就是计算机能够实现的有限的解题步骤。我们知道,够实现的有限的解题步骤。我们知道,计算机只能进行最基本的算术运算和逻计算机只能进行最基本的算术运算和逻辑运算,要完成较为复杂的运算和控制辑运算,要完成较为复杂的运算和控制操作,必须选择合适的算法,这是正确操作,必须选择合适的算法,这是正确编程的基础。编程的基础。若题目涉及到某种运算,则必须写若题目涉及到某种运算,则必须写出适合程序设计的正确算法,若题目要出适合程序设计的正确算法,若题目要完成的功能未涉及到运算,也要写出编完成的功能未涉及到运算,也要写出编程思想。程思
3、想。汇编语言程序设计汇编语言程序设计设计流程设计流程 将提出的算法或编程思想用将提出的算法或编程思想用流程图的方式画出来。图流程图的方式画出来。图4.14.1给给出了流程图中较为通用的几种符出了流程图中较为通用的几种符号。号。汇编语言程序设计汇编语言程序设计起始和终止框起始和终止框执行框执行框判断框判断框连接框连接框汇编语言程序设计汇编语言程序设计图图4.1 4.1 流程图符号流程图符号根据流程图编写程序根据流程图编写程序 编写程序是采用程序设计语言编写程序是采用程序设计语言来实现上面已确定的算法,此过程来实现上面已确定的算法,此过程有些书上称为编码。本书所介绍的有些书上称为编码。本书所介绍的
4、是采用汇编语言编写程序。采用汇是采用汇编语言编写程序。采用汇编语言编写程序应注意以下几个问编语言编写程序应注意以下几个问题:题:汇编语言程序设计汇编语言程序设计(1 1)必须详细了解必须详细了解CPUCPU的编程模型、指令系统、的编程模型、指令系统、寻址方式及相关伪指令;寻址方式及相关伪指令;(2 2)必须进行存储空间和工作单元的合理分配;)必须进行存储空间和工作单元的合理分配;(3 3)多次使用的程序段可采用子程序或宏指令;)多次使用的程序段可采用子程序或宏指令;(4 4)尽可能用标号或变量来代替绝对地址和常数;)尽可能用标号或变量来代替绝对地址和常数;汇编语言程序设计汇编语言程序设计程序的
5、检验程序的检验 程序编写好以后,必须经过书程序编写好以后,必须经过书面检查和上机调试,以便说明程序面检查和上机调试,以便说明程序是否正确。检验时,应预先选择典是否正确。检验时,应预先选择典型数据,检查是否可以得到预期结型数据,检查是否可以得到预期结果。果。汇编语言程序设计汇编语言程序设计编写说明文件编写说明文件 一个完整的软件应有相应的说明文一个完整的软件应有相应的说明文件,这不仅便于用户使用,也便于对程件,这不仅便于用户使用,也便于对程序的维护和扩充。说明文件主要应包括序的维护和扩充。说明文件主要应包括程序的功能和使用方法,程序的基本结程序的功能和使用方法,程序的基本结构和所采用的主要算法以
6、及程序必要说构和所采用的主要算法以及程序必要说明和注意事项等。明和注意事项等。汇编语言程序设计汇编语言程序设计 我们知道,我们知道,8086/8088 CPU8086/8088 CPU的地址空间是分段的地址空间是分段结构的,程序中出现的数据与代码以及程序中用到结构的,程序中出现的数据与代码以及程序中用到的堆栈都必须纳入某个段中。那么,如何告诉汇编的堆栈都必须纳入某个段中。那么,如何告诉汇编程序,源程序中的哪些内容属于数据段,哪些属于程序,源程序中的哪些内容属于数据段,哪些属于代码段呢?这自然是由汇编系统中提供的伪指令来代码段呢?这自然是由汇编系统中提供的伪指令来实现的。下面我们首先介绍构成完整
7、程序的有关伪实现的。下面我们首先介绍构成完整程序的有关伪指令。指令。汇编语言程序设计基础汇编语言程序设计基础汇编语言源程序的完整结构汇编语言源程序的完整结构 STACK SEGMENT STACK STACK SEGMENT STACK DB 256 DUP(?)DB 256 DUP(?)TOP LABEL WORD TOP LABEL WORD STACK ENDS STACK ENDS DATA1 SEGMENT DATA1 SEGMENT DATA1 ENDS DATA1 ENDS用用DBDB、DWDW等伪指令定义的段的实体等伪指令定义的段的实体汇编语言程序设计基础汇编语言程序设计基础
8、DATA2 SEGMENT DATA2 SEGMENT DATA2 ENDS DATA2 ENDS CODE SEGMENT CODE SEGMENT ASSUME CS:CODE,DS:DATA1 ASSUME CS:CODE,DS:DATA1 ASSUME ES:DATA2,SS:STACK ASSUME ES:DATA2,SS:STACK START:MOV AX,DATA1 START:MOV AX,DATA1 MOV DS,AX MOV DS,AX ;DSDS初始化初始化 MOV AX,DATA2MOV AX,DATA2 MOV ES,AX MOV ES,AX ;ESES初始化初始化
9、用用DBDB、DWDW等伪指令定义的段的实体等伪指令定义的段的实体汇编语言程序设计基础汇编语言程序设计基础 MOV AX,STACK MOV AX,STACK MOV SS,AX MOV SS,AX ;SSSS初始化初始化 MOV SP,OFFSET TOPMOV SP,OFFSET TOP MOV AH,4CH MOV AH,4CH INT 21H INT 21H ;程序结束,返回;程序结束,返回DOSDOS操作系统操作系统 CODE ENDS CODE ENDS ;代码段定义结束;代码段定义结束 END START END START ;整个程序结束;整个程序结束.用指令语句编写的完成某一
10、功能的用指令语句编写的完成某一功能的程序体。程序体。汇编语言程序设计基础汇编语言程序设计基础1.1.段定义伪指令段定义伪指令格式:格式:段名段名 SEGMENT SEGMENT 定位类型定位类型组合类型组合类型类型类型 ;段定义开始伪指令段定义开始伪指令 指令语句或伪指令语句组成的段的实体指令语句或伪指令语句组成的段的实体段名段名 ENDS ;ENDS ;段定义结束伪指令段定义结束伪指令汇编语言程序设计基础汇编语言程序设计基础段名:段名:段名是所定义的段的名称,其构段名是所定义的段的名称,其构 成规则与语句的名称一样。成规则与语句的名称一样。段名一但定义,就具备了以下段名一但定义,就具备了以下
11、5 5个属性。个属性。段地址段地址段内偏移地址段内偏移地址定位类型定位类型组合类型组合类型类别类别汇编语言程序设计基础汇编语言程序设计基础 其中,格式中的定位类型、其中,格式中的定位类型、组合类型和类别外面的方括号不组合类型和类别外面的方括号不是语法符号,它表示该项是可以是语法符号,它表示该项是可以省略的。省略的。汇编语言程序设计基础汇编语言程序设计基础在段定义时,在段定义时,SEGMENTSEGMENT与与ENDSENDS必必须成对出现。须成对出现。SEGMENTSEGMENT与与ENDSENDS左边的段名必左边的段名必须一致。须一致。汇编语言程序设计基础汇编语言程序设计基础定位类型:定位类
12、型:告诉汇编程序(告诉汇编程序(MASM.EXEMASM.EXE)对)对该段汇编时,该段的起始边界的要该段汇编时,该段的起始边界的要求。其类型有求。其类型有PAGEPAGE、PARAPARA、WORDWORD、BYTEBYTE四种。这四种类型的边界地址四种。这四种类型的边界地址的要求如下:的要求如下:汇编语言程序设计基础汇编语言程序设计基础PAGE=XXXX XXXX XXXX 0000 0000PAGE=XXXX XXXX XXXX 0000 0000PARA=XXXX XXXX XXXX XXXX 0000 PARA=XXXX XXXX XXXX XXXX 0000(缺省型缺省型)WORD
13、=XXXX XXXX XXXX XXXX XXX0WORD=XXXX XXXX XXXX XXXX XXX0BYTE=XXXX XXXX XXXX XXXX XXXXBYTE=XXXX XXXX XXXX XXXX XXXX 即它们的边界地址(即它们的边界地址(2020位地址)应分位地址)应分别可以被别可以被256256、1616、2 2、1 1除尽,分别称为以除尽,分别称为以页、节、字、字节为边界。页、节、字、字节为边界。汇编语言程序设计基础汇编语言程序设计基础 在实际应用中,每个段的定位类型在实际应用中,每个段的定位类型常选常选PARAPARA(节)型。(节)型。因为若选因为若选PAGEP
14、AGE(页)(页)型,将会使相邻的段间有较大空间的浪型,将会使相邻的段间有较大空间的浪费;而选费;而选WORDWORD或或BYTEBYTE型,又很难做到使型,又很难做到使一个段的偏移地址从一个段的偏移地址从0000H0000H开始。开始。汇编语言程序设计基础汇编语言程序设计基础组合类型:组合类型:告诉连接程序(告诉连接程序(LINK.EXELINK.EXE)在进行多模)在进行多模块目标程序连接时,该段与其它段连接的有块目标程序连接时,该段与其它段连接的有关信息,如本段与其它段是否组合为同一段;关信息,如本段与其它段是否组合为同一段;组合后,本段信息与其他段信息的关系如何组合后,本段信息与其他段
15、信息的关系如何等。组合类型有以下等。组合类型有以下6 6种不同的类型:种不同的类型:汇编语言程序设计基础汇编语言程序设计基础NONENONE型:型:表示本段与不同模块中的其它段表示本段与不同模块中的其它段在逻辑上不发生关系。连接后各模块中的在逻辑上不发生关系。连接后各模块中的各段都有自己的段地址(也称基地址)。各段都有自己的段地址(也称基地址)。STACKSTACK型:型:组合后的这个段用作堆栈。当组合后的这个段用作堆栈。当段定义中指明了段定义中指明了STACKSTACK类型后,说明堆栈类型后,说明堆栈段已经确定,所以,在可执行文件装入内段已经确定,所以,在可执行文件装入内存后段寄存器存后段寄
16、存器SSSS中已是该段的段地址,堆中已是该段的段地址,堆栈指针栈指针SPSP已指向堆栈底。已指向堆栈底。汇编语言程序设计基础汇编语言程序设计基础PUBLICPUBLIC型型 COMMONCOMMON型型 ATAT表达式型表达式型 MEMORYMEMORY型型汇编语言程序设计基础汇编语言程序设计基础类别:类别:类别可以使任何一个合法的名称,类别可以使任何一个合法的名称,但必须用单引号括起来。在多模块程序但必须用单引号括起来。在多模块程序设计中,连接时,将把不同模块中相同设计中,连接时,将把不同模块中相同类别类别的各段在物理上相邻地连接在的各段在物理上相邻地连接在一起,其顺序亦与一起,其顺序亦与L
17、INKLINK时提供的各模块时提供的各模块顺序一致。当类别相同的各段的段名不顺序一致。当类别相同的各段的段名不同时,它们连接后虽在同一物理段内,同时,它们连接后虽在同一物理段内,但但汇编语言程序设计基础汇编语言程序设计基础它们仍不属于同一段,也就是它们的段基址它们仍不属于同一段,也就是它们的段基址不相同。这样做的一个好处是便于程序的固不相同。这样做的一个好处是便于程序的固化。在编程时,它们都是独立的代码段,各化。在编程时,它们都是独立的代码段,各段有各自的段基址,但连接后,他们却在同段有各自的段基址,但连接后,他们却在同一物理段,从而可以固化在一起。一物理段,从而可以固化在一起。在单模块程序设
展开阅读全文