汇编语言程序设计电子稿第五章ppt课件_第1页
汇编语言程序设计电子稿第五章ppt课件_第2页
汇编语言程序设计电子稿第五章ppt课件_第3页
汇编语言程序设计电子稿第五章ppt课件_第4页
汇编语言程序设计电子稿第五章ppt课件_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第五章第五章 汇编言语程序设计汇编言语程序设计第五章第五章 汇编言语程序设计汇编言语程序设计5.1 5.1 源程序的根本构造源程序的根本构造 汇编言语源程序的组成部分有:模块、段、子程序和汇编言语源程序的组成部分有:模块、段、子程序和宏等。一个模块对应一个目的文件,当开发较大型的宏等。一个模块对应一个目的文件,当开发较大型的运用程序时,该程序能够由假设干个目的文件或库结运用程序时,该程序能够由假设干个目的文件或库结合而成的。有关子程序的知识和宏将在后续章节引见,合而成的。有关子程序的知识和宏将在后续章节引见,本章将引见程序段及程序构造。本章将引见程序段及程序构造。1 1 段的定义段的定义微机系

2、统的内存是分段管理的,为了与之相对应,汇编微机系统的内存是分段管理的,为了与之相对应,汇编言语源程序也分假设干个段来构成。言语源程序也分假设干个段来构成。8086CPU8086CPU有四个段有四个段存放器,在该系统环境下运转的程序在某个时辰最多存放器,在该系统环境下运转的程序在某个时辰最多可访问四个段,而可访问四个段,而8038680386及其以后的及其以后的CPUCPU都含有六个段都含有六个段存放器,于是,在这些系统环境下开发的运转程序在存放器,于是,在这些系统环境下开发的运转程序在某个时辰最多可访问六个段。某个时辰最多可访问六个段。5.1 5.1 源程序的根本构造源程序的根本构造 1 1

3、段的定义段的定义不论程序在某个时辰最多能访问多少个段,在编程序时,不论程序在某个时辰最多能访问多少个段,在编程序时,程序员都可以定义比该段数更多的段。在通常情况下,程序员都可以定义比该段数更多的段。在通常情况下,一个段的长度不能超越一个段的长度不能超越64K64K,在,在8038680386及其以后系统的及其以后系统的维护方式下,段基地址是维护方式下,段基地址是3232位,段的最大长度可达位,段的最大长度可达4G4G。段的长度是指该段所占的字节数:段的长度是指该段所占的字节数:假设段是数据段,那么其长度是其一切变量所占字节数假设段是数据段,那么其长度是其一切变量所占字节数的总和;的总和;假设段

4、是代码段,那么其长度是其一切指令所占字节数假设段是代码段,那么其长度是其一切指令所占字节数的总和。的总和。在定义段时,每个段都有一个段名。在取段名时,要取在定义段时,每个段都有一个段名。在取段名时,要取一个具有一定含义的段名。一个具有一定含义的段名。5.1 5.1 源程序的根本构造源程序的根本构造 1 1 段的定义段的定义段定义的普通格式如下:段定义的普通格式如下:段名段名 SEGMENTSEGMENT 对齐类型对齐类型 组合类型组合类型 类别类别 ; ;段内的详细内容段内的详细内容段名段名 ENDSENDS5.1 5.1 源程序的根本构造源程序的根本构造 2 2 段存放器的阐明语句段存放器的

5、阐明语句在汇编言语源程序中可以定义多个段,每个段都要与一在汇编言语源程序中可以定义多个段,每个段都要与一个段存放器建立一种对应关系。建立这种对应关系的个段存放器建立一种对应关系。建立这种对应关系的阐明语句格式如下:阐明语句格式如下:ASSUMEASSUME 段存放器名段存放器名: :段名段名, , 段存放器名段存放器名: :段名段名, , 其中:段存放器是其中:段存放器是CSCS、DSDS、ESES、SSSS、FSFS和和GSGS,段名是在,段名是在段定义语句阐明时的段名。段定义语句阐明时的段名。在一条在一条ASSUMEASSUME语句中可建立多组段存放器与段之间的关语句中可建立多组段存放器与

6、段之间的关系,每种对应关系要用逗号分隔。系,每种对应关系要用逗号分隔。例如,例如,ASSUMEASSUME CS:CODE1, DS:DATA1 CS:CODE1, DS:DATA15.1 5.1 源程序的根本构造源程序的根本构造 2 2 段存放器的阐明语句段存放器的阐明语句上面的语句阐明了:上面的语句阐明了:CSCS对应于代码段对应于代码段CODE1CODE1,DSDS对应于数对应于数据段据段DATA1DATA1。在在ASSUMEASSUME语句中,还可以用关键字语句中,还可以用关键字NOTHINGNOTHING来阐明某个段来阐明某个段存放器不与任何段相对应。下面语句阐明了段存放器存放器不与

7、任何段相对应。下面语句阐明了段存放器ESES不与某段相对应。不与某段相对应。ASSUMEASSUME ES:NOTHING ES:NOTHING在通常情况下,代码段的第一条语句就是用在通常情况下,代码段的第一条语句就是用ASSUMEASSUME语句语句来阐明段存放器与段之间的对应关系。在代码段的其来阐明段存放器与段之间的对应关系。在代码段的其它位置,还可以用另一个它位置,还可以用另一个ASSUMEASSUME语句来改动前面语句来改动前面ASSUMEASSUME语句所阐明的对应关系,这样,代码段中的指语句所阐明的对应关系,这样,代码段中的指令就用最近的令就用最近的ASSUMEASSUME语句所建

8、立的对应关系来确定指语句所建立的对应关系来确定指令中的有关信息。令中的有关信息。5.1 5.1 源程序的根本构造源程序的根本构造 3 3 堆栈段的阐明堆栈段的阐明堆栈段是一个特殊的段,在程序中可以定义它,也可以堆栈段是一个特殊的段,在程序中可以定义它,也可以不定义。除了要生成不定义。除了要生成COMCOM型执行文件的源程序外,一个型执行文件的源程序外,一个完好的源程序普通最好定义堆栈段。假设在程序中不完好的源程序普通最好定义堆栈段。假设在程序中不定义堆栈段,那么,操作系统在装入该执行程序时将定义堆栈段,那么,操作系统在装入该执行程序时将自动为其指定一个自动为其指定一个64K64K字节的堆栈段。

9、字节的堆栈段。5.1 5.1 源程序的根本构造源程序的根本构造3 3 堆栈段的阐明堆栈段的阐明在源程序中,可用以下方法来定义堆栈段。在源程序中,可用以下方法来定义堆栈段。方法方法1 1:STACK1 SEGMENTSTACK1 SEGMENTDB 256 DUP(?) ;256DB 256 DUP(?) ;256是堆栈的长度,可根据是堆栈的长度,可根据需求进展改动需求进展改动TOP LABEL WORDTOP LABEL WORDSTACK1 ENDSSTACK1 ENDS在源程序的代码段中,还要添加如下程序段,才干把段在源程序的代码段中,还要添加如下程序段,才干把段STACK1STACK1当

10、作堆栈段来运用。当作堆栈段来运用。ASSUMEASSUMESS:STACK1SS:STACK1 ; ;可在代码段的段指定语句可在代码段的段指定语句中一同阐明中一同阐明CLICLI ; ;制止呼应可屏蔽中断制止呼应可屏蔽中断MOVMOVAX, STACK1AX, STACK1MOVMOVSS, AXSS, AXMOVMOVSP, OFFSET TOPSP, OFFSET TOP ; ;给堆栈段的栈顶存放器给堆栈段的栈顶存放器SPSP赋初赋初值值STISTI; ;恢复呼应可屏蔽中断恢复呼应可屏蔽中断5.1 5.1 源程序的根本构造源程序的根本构造 3 3 堆栈段的阐明堆栈段的阐明方法方法2 2:S

11、TACK1STACK1SEGMENTSEGMENTSTACKSTACK ; ;定义一个堆栈段,其段名定义一个堆栈段,其段名为为STACK1STACK1DBDB256 DUP(?)256 DUP(?)STACK1STACK1ENDSENDS上述段定义阐明了该段是堆栈段,系统会自动把段存放上述段定义阐明了该段是堆栈段,系统会自动把段存放器器SSSS和栈顶存放器和栈顶存放器SPSP与该堆栈段之间建立相应的关系,与该堆栈段之间建立相应的关系,并设置其初值,而不用在代码段对它们进展赋值。并设置其初值,而不用在代码段对它们进展赋值。5.1 5.1 源程序的根本构造源程序的根本构造 4. 4. 段的根本属性

12、段的根本属性在第一小节中,我们曾经引见了段定义的格式,如今对在第一小节中,我们曾经引见了段定义的格式,如今对段定义中另外的一些属性段定义中另外的一些属性 “ “对齐类型、对齐类型、“组合类型组合类型和和“类别作以阐明,这些可选项可根据需求选择类别作以阐明,这些可选项可根据需求选择书写。假设源程序中不指定某个属性,那么,汇编程书写。假设源程序中不指定某个属性,那么,汇编程序将运用该属性的缺省值。序将运用该属性的缺省值。(1) (1) 对齐类型对齐类型(ALIGN)(ALIGN)对齐类型表示当前段对起始地址的要求,衔接程序对齐类型表示当前段对起始地址的要求,衔接程序(LINK.EXE)(LINK.

13、EXE)按表按表6.16.1的地址格式来定位段的起始地址。的地址格式来定位段的起始地址。在进展段定位时,会根据其定位类型进展定位的,所在进展段定位时,会根据其定位类型进展定位的,所以,各段之间就有能够出现一些空闲字节,即能够浪以,各段之间就有能够出现一些空闲字节,即能够浪费几个字节单元。费几个字节单元。段对齐类型与段起始地址之间的对应关系段对齐类型与段起始地址之间的对应关系对齐类型起始地址(二进制)功能阐明最多的空闲字节数BYTExxxx xxxx xxxx xxxx xxxx下一个字节地址0WORDxxxx xxxx xxxx xxxx xxx0下一个字地址1DWORDxxxx xxxx x

14、xxx xxxx xx00下一个双字地址3PARAxxxx xxxx xxxx xxxx 0000下一个节地址15PAGExxxx xxxx xxxx 0000 0000下一个页地址1275.1 5.1 源程序的根本构造源程序的根本构造 4. 4. 段的根本属性段的根本属性(2) (2) 组合类型组合类型(COMBINE)(COMBINE) 组合类型是通知衔接程序如何把不同模块中段名一样组合类型是通知衔接程序如何把不同模块中段名一样的段合并在一同。详细的组合类型如下:的段合并在一同。详细的组合类型如下:NONE表示当前段在逻辑上独立于其它模块,并有其本人的基地址。NONE是缺省的组合类型。PU

15、BLIC表示当前段与其它模块中同段名的PUBLIC类型段组合成一个段。组合的先后次序取决于LINK程序中目的模块陈列的次序。在组合时,后续段的起始地址要按其对齐类型进展定位,所以,同名段之间能够有间隔。COMMON表示当前段与其它模块中同名段重叠,也就是说,它们的起始地址一样。最终段的长度是同名段的最大长度。由于段覆盖,所以,前一同名段中的初始化数据被后续段的初始数据覆盖掉。STACK组合类型STACK表示当前段是堆栈栈,其组合情况与PUBLIC一样。AT 数值表达式该数值表达式是当前段所指定的绝对起始地址的段地址。5.1 5.1 源程序的根本构造源程序的根本构造 4. 4. 段的根本属性段的

16、根本属性(3) (3) 类别类别(CLASS)(CLASS)类别是一个由程序员指定的用单引号括起来的字符串。类别是一个由程序员指定的用单引号括起来的字符串。假设一个段没有给出类别,那么,这个段的类别就为假设一个段没有给出类别,那么,这个段的类别就为空。类别是用于段的分类,衔接程序利用该类别来调空。类别是用于段的分类,衔接程序利用该类别来调整同名、同类别的段,并使它们相邻。典型的类别是整同名、同类别的段,并使它们相邻。典型的类别是DataData和和CodeCode。假设指定某段的类别是。假设指定某段的类别是CodeCode,那,那么,该段最好是代码段,这样,有的调试程序么,该段最好是代码段,这

17、样,有的调试程序( (如:如:CodeView)CodeView)就可以顺序任务。就可以顺序任务。例如:例如:DATA1DATA1SEGMENT WORD PUBLIC DataSEGMENT WORD PUBLIC DataDATA1DATA1ENDSENDS上述段定义阐明了该段的起始地址是下一个字地址、组上述段定义阐明了该段的起始地址是下一个字地址、组合类型为合类型为PUBLICPUBLIC、段类别是、段类别是DataData。5.1 5.1 源程序的根本构造源程序的根本构造 4. 4. 段的根本属性段的根本属性(4) (4) 段组段组(GROUP)(GROUP) 段组伪指令段组伪指令GR

18、OUPGROUP是用于把源程序模块中假设干个段结是用于把源程序模块中假设干个段结合成一个组,并对该段组定义一个段组名。段组伪指合成一个组,并对该段组定义一个段组名。段组伪指令的格式如下:令的格式如下: 段组名段组名 GROUP GROUP 段名段名, , 段名段名, , 其中:段名之间要用逗号间隔,段名也可以用表达式其中:段名之间要用逗号间隔,段名也可以用表达式“SEG “SEG 变量或变量或“SEG “SEG 标号。标号。第五章第五章 汇编言语程序设计汇编言语程序设计5.2 5.2 汇编言语程序设计的根本方法和步骤汇编言语程序设计的根本方法和步骤1 1 汇编言语程序设计根本步骤汇编言语程序设

19、计根本步骤 普通来说,编制一个汇编言语程序的步骤如下:普通来说,编制一个汇编言语程序的步骤如下:分析题意,确定算法或算法思想。分析题意,确定算法或算法思想。根据算法画出流程图,简单的情况也可不画。根据算法画出流程图,简单的情况也可不画。分配存储空间和任务单元,合理地运用存放器。分配存储空间和任务单元,合理地运用存放器。根据流程图编写程序。根据流程图编写程序。上机调试运转程序。上机调试运转程序。编写阐明文件编写阐明文件第五章第五章 汇编言语程序设计汇编言语程序设计5.2 5.2 汇编言语程序设计的根本方法和步骤汇编言语程序设计的根本方法和步骤2 2 构造化程序的概念构造化程序的概念构造化程序设计

20、由迪克斯特拉构造化程序设计由迪克斯特拉(E.W.dijkstra)(E.W.dijkstra)在在19691969年年提出,是以模块化设计为中心,将待开发的软件系统提出,是以模块化设计为中心,将待开发的软件系统划分为假设干个相互独立的模块,这样使完成每一个划分为假设干个相互独立的模块,这样使完成每一个模块的任务变单纯而明确,为设计一些较大的软件打模块的任务变单纯而明确,为设计一些较大的软件打下了良好的根底。下了良好的根底。 由于模块相互独立,因此在设计其中一个模块时,不会由于模块相互独立,因此在设计其中一个模块时,不会遭到其它模块的牵连,因此可将原来较为复杂的问题遭到其它模块的牵连,因此可将原

21、来较为复杂的问题化简为一系列简单模块的设计。模块的独立性还为扩化简为一系列简单模块的设计。模块的独立性还为扩展已有的系统、建立新系统带来了不少的方便,由于展已有的系统、建立新系统带来了不少的方便,由于我们可以充分利用现有的模块作积木式的扩展。我们可以充分利用现有的模块作积木式的扩展。 第五章第五章 汇编言语程序设计汇编言语程序设计5.2 5.2 汇编言语程序设计的根本方法和步骤汇编言语程序设计的根本方法和步骤2 2 构造化程序的概念构造化程序的概念按照构造化程序设计的观念,任何算法功能都可以经过按照构造化程序设计的观念,任何算法功能都可以经过由程序模块组成的三种根本程序构造的组合由程序模块组成

22、的三种根本程序构造的组合: : 顺序构顺序构造、选择构造和循环构造来实现。造、选择构造和循环构造来实现。构造化程序设计的根本思想是采用构造化程序设计的根本思想是采用 自顶向下,逐渐求精自顶向下,逐渐求精 的程序设计方法和的程序设计方法和 单入口单出口单入口单出口 的控制构造。自顶的控制构造。自顶向下、逐渐求精的程序设计方法从问题本身开场,经向下、逐渐求精的程序设计方法从问题本身开场,经过逐渐细化,将处理问题的步骤分解为由根本程序构过逐渐细化,将处理问题的步骤分解为由根本程序构造模块组成的构造化程序框图;造模块组成的构造化程序框图; 单入口单出口单入口单出口 的思的思想以为一个复杂的程序,假设它

23、仅是由顺序、选择和想以为一个复杂的程序,假设它仅是由顺序、选择和循环三种根本程序构造经过组合、嵌套构成,那么这循环三种根本程序构造经过组合、嵌套构成,那么这个新构造的程序一定是一个单入口单出口的程序。据个新构造的程序一定是一个单入口单出口的程序。据此就很容易编写出构造良好、易于调试的程序来。此就很容易编写出构造良好、易于调试的程序来。第五章第五章 汇编言语程序设计汇编言语程序设计3 流程图画法规定流程图画法规定程序流程图是程序分析中最根本、最重要的分析技术,程序流程图是程序分析中最根本、最重要的分析技术,它是进展流程程序分析过程中最根本的工具。是由特它是进展流程程序分析过程中最根本的工具。是由

24、特定的几何图形、指向线、文字阐明来表示数据处置的定的几何图形、指向线、文字阐明来表示数据处置的步骤,笼统描画逻辑控制构造以及数据流程的表示图。步骤,笼统描画逻辑控制构造以及数据流程的表示图。 (1) 符号用法符号用法第五章第五章 汇编言语程序设计汇编言语程序设计3 流程图画法规定流程图画法规定 (2) 运用商定运用商定图的规划图的规划 流程图中所用的符号应该均心地分布,连线坚持合理的流程图中所用的符号应该均心地分布,连线坚持合理的长度,并尽量少运用长线。长度,并尽量少运用长线。符号的外形符号的外形 流程图中多数符号内的空白供标注阐明性文字。运用各流程图中多数符号内的空白供标注阐明性文字。运用各

25、种符号应留意符号的外形和各符号大小的一致,防止种符号应留意符号的外形和各符号大小的一致,防止使符号变形或各符号大小比例不一。使符号变形或各符号大小比例不一。符号内的阐明文字符号内的阐明文字 应使符号内的阐明文字尽能够简明。通常按从左向右和应使符号内的阐明文字尽能够简明。通常按从左向右和从上向下方式书写,并与流向无关。假设阐明文字较从上向下方式书写,并与流向无关。假设阐明文字较多,符号内写不完,可运用注解符。假设注解符干扰多,符号内写不完,可运用注解符。假设注解符干扰或影响到图形的流程,应将正文写在另外一页上,并或影响到图形的流程,应将正文写在另外一页上,并注明援用符号。注明援用符号。第五章第五

26、章 汇编言语程序设计汇编言语程序设计3 流程图画法规定流程图画法规定符号标识符符号标识符 为符号规定标识符是为了便于其它文件援用该符号。为符号规定标识符是为了便于其它文件援用该符号。便如,程序清单中援用到流程图中的特定符号。符号便如,程序清单中援用到流程图中的特定符号。符号标识符普通写在符号的左上角标识符普通写在符号的左上角. 符号描画符符号描画符 为便于进一步了解符号的功能,可标注符号描画符。为便于进一步了解符号的功能,可标注符号描画符。通常描画符写在符号的右上角通常描画符写在符号的右上角.详细表示详细表示 在处置符号或数据符号中画一横线,阐明该符号在同在处置符号或数据符号中画一横线,阐明该

27、符号在同一文件集中的其它地言有更为详细的表示。横线在符一文件集中的其它地言有更为详细的表示。横线在符号内接近项端,详细表示的标识符写在符号内横线之号内接近项端,详细表示的标识符写在符号内横线之上。端点符用作详细表示的开场符号和终了符号,在上。端点符用作详细表示的开场符号和终了符号,在此符号中应给出加横线符号中的标识符。此符号中应给出加横线符号中的标识符。第五章第五章 汇编言语程序设计汇编言语程序设计5.2 5.2 汇编言语程序设计的根本方法和步骤汇编言语程序设计的根本方法和步骤流线流线规范流向与箭头的运用规范流向与箭头的运用流线的交叉流线的交叉流线的聚集流线的聚集符号流线进出符号流线进出衔接符

28、衔接符多出口判别的两种表示方法多出口判别的两种表示方法直接从判别符号引出多条流线直接从判别符号引出多条流线从判别符号引出一条流线,再从它引出多条流线从判别符号引出一条流线,再从它引出多条流线第五章第五章 汇编言语程序设计汇编言语程序设计5.3 5.3 顺序程序设计顺序程序设计顺序程序设计是完全按照指令的书写顺序而执行每一条顺序程序设计是完全按照指令的书写顺序而执行每一条指令,它没有分支、循环和转移。是指令中最简单,指令,它没有分支、循环和转移。是指令中最简单,最常见的程序构造,它的特点是构造简单,易于了解,最常见的程序构造,它的特点是构造简单,易于了解,但只适宜于处置简单问题的场所。实践运用中

29、,完全但只适宜于处置简单问题的场所。实践运用中,完全采用顺序构造的程序并不多。顺序构造程序流程图如采用顺序构造的程序并不多。顺序构造程序流程图如下:下:S1S2S3第五章第五章 汇编言语程序设计汇编言语程序设计5.3 5.3 顺序程序设计顺序程序设计1.1.顺序程序设计举例顺序程序设计举例【例【例1 1】试编写一程序计算以下表达式的值。】试编写一程序计算以下表达式的值。= =v-v-* *+ +-540-540/x/x式中式中x x、v v均为有符号均为有符号字数据。字数据。【例【例2 2】知某班学生的英语成果按学号从】知某班学生的英语成果按学号从1 1开场从小开场从小到大的顺序陈列在到大的顺

30、序陈列在TABTAB表中,假定要查询的学生的学号表中,假定要查询的学生的学号放在变量放在变量NONO中,请将查得的结果放在变量中,请将查得的结果放在变量ENGLISHENGLISH中。中。试编写程序。试编写程序。【例【例3 3】 假设有二个字变量假设有二个字变量word1word1和和word2word2,编写程序段,编写程序段实现交换其值的功能。实现交换其值的功能。【例【例4 4】 试编写一个程序,把紧缩存放的试编写一个程序,把紧缩存放的BCDBCD码,转换为码,转换为其对应十进制数字的其对应十进制数字的ASCIIASCII码。码。第五章第五章 汇编言语程序设计汇编言语程序设计5.3 5.3

31、 顺序程序设计顺序程序设计2.2.用简单查表法实现代码转换用简单查表法实现代码转换在汇编言语程序设计中,代码转换是经常的事。上面的在汇编言语程序设计中,代码转换是经常的事。上面的把把BCDBCD码转换成码转换成ASCIIASCII码就是一例。对于各种不同代码码就是一例。对于各种不同代码之间的转换,往往要采用各种不同的方法,以便获得之间的转换,往往要采用各种不同的方法,以便获得最正确效率。查表是实现代码转换的方法之一,下面最正确效率。查表是实现代码转换的方法之一,下面引见的简单查表法是一种计算查表方法,适用于代码引见的简单查表法是一种计算查表方法,适用于代码集合较小且转换关系复杂的场所。集合较小

32、且转换关系复杂的场所。第五章第五章 汇编言语程序设计汇编言语程序设计5.3 5.3 顺序程序设计顺序程序设计2.2.用简单查表法实现代码转换用简单查表法实现代码转换【例】编写一个把【例】编写一个把1616进制数字码转换为对应七段代码的进制数字码转换为对应七段代码的程序。程序。七段显示数码管表示图如下:七段显示数码管表示图如下:0123456第五章第五章 汇编言语程序设计汇编言语程序设计5.3 5.3 顺序程序设计顺序程序设计2.2.用简单查表法实现代码转换用简单查表法实现代码转换利用上图所示的七段显示数码管,能较好地显示利用上图所示的七段显示数码管,能较好地显示1616进制进制数字数字0 0,

33、1 1,。,。9 9,A A,B B,C C,D D,E E,F F。七段数。七段数码管的每一段对应一个二进制位,假设我们设码管的每一段对应一个二进制位,假设我们设0 0表示对表示对应段亮,应段亮,1 1表示对应段暗,那么数字码表示对应段暗,那么数字码0 0对应以二进制对应以二进制方式表示的代码方式表示的代码10000001000000,数字码,数字码1 1对应以二进制方式对应以二进制方式表示的代码表示的代码11110011111001,如此,数字码,如此,数字码F F对应以二进制方对应以二进制方式表示的代码式表示的代码00011100001110。这种用于表示七段数码管亮暗。这种用于表示七段

34、数码管亮暗的代码称为七段代码。的代码称为七段代码。显然,显然,1616进制数字码与七段代码间的关系难以表示成一进制数字码与七段代码间的关系难以表示成一个简单的算术表达式,所以,利用表的方法实现代码个简单的算术表达式,所以,利用表的方法实现代码转换较适宜。转换较适宜。第五章第五章 汇编言语程序设计汇编言语程序设计5.3 5.3 顺序程序设计顺序程序设计3. 3. 查表法求函数值查表法求函数值有许多数学函数的求值计算用汇编言语实现较为困难,有许多数学函数的求值计算用汇编言语实现较为困难,除非利用数学协处置器。然而,上述这种表的组织方除非利用数学协处置器。然而,上述这种表的组织方式和查表的方法,可以

35、适用于直接获得某些数学函数式和查表的方法,可以适用于直接获得某些数学函数的值。的值。【例】设【例】设X X是一个是一个1-101-10之间的整数,写一个求函数之间的整数,写一个求函数Y=LOGY=LOGX X值的程序。值的程序。把把1-101-10这这1010个数的对数值组织成一张表,那么程序运转个数的对数值组织成一张表,那么程序运转时的计算任务就大大减缓了,甚至可以说没有详细的时的计算任务就大大减缓了,甚至可以说没有详细的计算。由于计算。由于1-101-10的以的以1010为底的对数在为底的对数在0-10-1的范围之间,的范围之间,为了表示的方便和思索一定的精度,所以把这些对数为了表示的方便

36、和思索一定的精度,所以把这些对数值放大值放大1000010000倍,这样每个对数值就用一个字表示。倍,这样每个对数值就用一个字表示。第五章第五章 汇编言语程序设计汇编言语程序设计5.3 5.3 顺序程序设计顺序程序设计3. 3. 查表法求函数值查表法求函数值运用查表法求函数值有两个优点:运用查表法求函数值有两个优点:1 1程序比较容易;程序比较容易;2 2可以得到十进制或十六进制或任何其它格式的可以得到十进制或十六进制或任何其它格式的高精度函数值。高精度函数值。其缺陷也许不那么明显:其缺陷也许不那么明显:1 1函数值必需事先安排好,因此有许多限制;函数值必需事先安排好,因此有许多限制;2 2函

37、数值的精度和准确性由程序员控制,而不是由数函数值的精度和准确性由程序员控制,而不是由数学函数决议,当数据表的项较多时,难免有误差。学函数决议,当数据表的项较多时,难免有误差。第五章第五章 汇编言语程序设计汇编言语程序设计5.4 5.4 分支程序设计分支程序设计分支程序构造可以有两种方式,它们分别相当于高级言分支程序构造可以有两种方式,它们分别相当于高级言语中语中IF-THEN-ELSEIF-THEN-ELSE语句和语句和CASECASE语句,适用于要求根据语句,适用于要求根据不同条件作不同处置的情况。不同条件作不同处置的情况。IF-THEN-ELSEIF-THEN-ELSE语句可以语句可以引出

38、两个分支。引出两个分支。CASECASE语句那么可以引出多个分支。不语句那么可以引出多个分支。不论哪一种方式,它们的共同特点就是:运转方向是向论哪一种方式,它们的共同特点就是:运转方向是向前的,在某一种特定条件下,只能执行多个分支中的前的,在某一种特定条件下,只能执行多个分支中的一个分支。一个分支。第五章第五章 汇编言语程序设计汇编言语程序设计5.4 5.4 分支程序设计分支程序设计IF-THEN-ELSE语句构造条件判别程序段1程序段2第五章第五章 汇编言语程序设计汇编言语程序设计5.4 5.4 分支程序设计分支程序设计CASE语句构造程序段1程序段2程序段N条件判别第五章第五章 汇编言语程

39、序设计汇编言语程序设计5.4 5.4 分支程序设计分支程序设计1.1.分支程序举例分支程序举例【例【例1 1】设有三个单字节无符号数存放在】设有三个单字节无符号数存放在BUFFERBUFFER开场的缓开场的缓冲区中,写一个能将它们按大到小重新陈列的程序。冲区中,写一个能将它们按大到小重新陈列的程序。【例【例2 2】 知字节变量知字节变量CHAR1CHAR1,编写一程序段,把它由小写,编写一程序段,把它由小写字母变成大写字母。字母变成大写字母。【例【例3 3】编写一程序段,计算以下函数值。其中:变量】编写一程序段,计算以下函数值。其中:变量X X和和Y Y是有符号字变量。是有符号字变量。第五章第

40、五章 汇编言语程序设计汇编言语程序设计5.4 5.4 分支程序设计分支程序设计2. 2. 利用地址表实现多向分支利用地址表实现多向分支当要根据某个变量的值,进展多种不同处置时,就产生当要根据某个变量的值,进展多种不同处置时,就产生了多向分支。多向分支的构造图了多向分支。多向分支的构造图5.175.17所示。在高级言所示。在高级言语中,常用语中,常用SWITCHSWITCH语句等实现多向分支。在汇编言语语句等实现多向分支。在汇编言语中,如何实现多向分支呢?中,如何实现多向分支呢?第五章第五章 汇编言语程序设计汇编言语程序设计5.4 5.4 分支程序设计分支程序设计2. 2. 利用地址表实现多向分

41、支利用地址表实现多向分支【例】任何复杂的多向分支总可分解成多个简单分支。【例】任何复杂的多向分支总可分解成多个简单分支。以下图给出了根据以下图给出了根据X X的值能否为的值能否为1-41-4,而进展,而进展5 5中不同处中不同处置的流程图片段。置的流程图片段。N条件1满足?Y处置语句1N条件2满足?Y处置语句2N条件3满足?Y处置语句3N条件4满足?Y处置语句4处置语句5第五章第五章 汇编言语程序设计汇编言语程序设计5.5 5.5 循环程序设计循环程序设计在程序设计中我们有时会需求能按一定规律,多次反复在程序设计中我们有时会需求能按一定规律,多次反复执行的一串语句,这类程序叫循环程序,在本章节

42、中,执行的一串语句,这类程序叫循环程序,在本章节中,我们将对循环程序设计作以引见。我们将对循环程序设计作以引见。循环程序普通由四个部分组成:循环程序普通由四个部分组成: 1 1 置循环初值部分:这是为了保证循环程序能正常进置循环初值部分:这是为了保证循环程序能正常进展循环操作而必需做的预备任务。循环初值分两类:展循环操作而必需做的预备任务。循环初值分两类:一类是循环任务部分的初值,另一类是控制循环终了一类是循环任务部分的初值,另一类是控制循环终了条件的初值。条件的初值。 2 2 任务部分:即需求反复执行的程序段。这是循环的任务部分:即需求反复执行的程序段。这是循环的中心,称之为循环体。中心,称之为循环体。 3 3 修正部分:按一定规律修正操作数地址及控制变量,修正部分:按一定规律修正操作数地址及控制变量,以便每次执行循环体时得到新的数据。以便每次执行循环体时得到新的数据。 4 4 控制部分:用来保证循环程序按规定的次数或特定控制部分:用来保证循环程序按规定的次数或特定条件正常循环。条件正常循环。第五章第五章 汇编言语程序设计汇编言语程序设计5.5 5.5 循环程序设计循环程序设计在程序设计中,常见的循环构造有两种:一种是先执行在程序设计中,常见的循环构造有两种:一种是先执行循环体,然后判别循环能否继续进展;另一种是先判循环体,然后判别循环能否继续进展;另一种是先判别能

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论