顺序结构程序设计

上传人:平*** 文档编号:47514143 上传时间:2018-07-02 格式:PPT 页数:24 大小:255.52KB
返回 下载 相关 举报
顺序结构程序设计_第1页
第1页 / 共24页
顺序结构程序设计_第2页
第2页 / 共24页
顺序结构程序设计_第3页
第3页 / 共24页
顺序结构程序设计_第4页
第4页 / 共24页
顺序结构程序设计_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《顺序结构程序设计》由会员分享,可在线阅读,更多相关《顺序结构程序设计(24页珍藏版)》请在金锄头文库上搜索。

1、 第8章 顺序结构程序设计 8.1 汇编语言程序设计的基本方法 8.2 顺序结构程序设计 第8章 顺序结构程序设 8.1 汇编语言程序设计的基本方法 程序的设计重在“语法”和“算法”,语法有错得不到可执行程序,算法出错其 结果不正确。所以掌握“语法”和“算法”是缺一不可的,一个好的程序应该满 足设计的要求。在实现正常运行和预定的功能以外,还应该充分考虑:(1)程序要结构化,简明、可读性好和易调试;(2)执行速度快;(3)占用存储空间小。在早期的计算机中,由于存储设备昂贵,容量很有限,一般应尽可能少 占用存储空间,8086CPU只有20根地址线,对内存寻址才1MB空间,所以 内存空间就显得很珍贵

2、。随着科学技术和生产技术的发展,半导体存储器 的芯片容量不断增大;磁盘的密度不断提高,而其相应的价格也在逐渐下 降,因此,有时候也就不那么特别注重程序是否多占用了一些存储空间, 而偏重于程序的可读性强等方面的问题。但对计算机的某些应用场合,如 智能化的仪器仪表,电脑化的家用电器等设备中的监控程序,通常采用汇 编语言编写的程序,所以要求它的功能要强,程序要短,维护方便等,存 储容量不能太大,才能达到微型化及价格低的目的。程序执行速度问题,在某些实时控制系统,跟踪等程序中就显得特别 突出。例如,在生产过程中,需要对一些对象中的某些参数进行实时控制 ,如果参数变化速度特快,程序执行速度又太慢,就可能

3、发生失控现象。 对处理其它问题时,因目前主频永远高于原先计算机的主频,速度越来越 快。所以速度与占用内存已不是主要矛盾,编程者要把主要精力放在“程序 要结构化,简明、可读性好和易调试”的方面。需要说明,本书后面讲到的汇编语言程序设计都只在实模式下进行的 ,从80286开始系统已经为用户提供了实模式和保护模式;而从80386开始 ,又有虚86模式,这模式可在一台计算机上可以同时运行几个8086程序。 就编程者而言,面对的是实模式和保护模式两种工作方式,这两种方式并 无本质的区别,只是所处环境和实现恢复存在一些差别,只要掌握在实模 式下的汇编语言编程的基本方法,再了解保护模式的编程环境,则在保护

4、模式下编程也并非难事。随着计算机应用领域的扩展和计算机技术的迅速发展,程序将日趋庞 大和复杂。尤其是一些系统程序,不断增强功能和更换版本,一般要求后 面的版本往前是兼容的。因此目前的程序都形成模块化结构。 8.1.1 汇编语言程序设计的基本过程 汇编语言程序设计的基本过程,大体上可以分为以下几个步骤:1分析问题,明确要求 分析问题就是按给定的课题进行认真而深入研究,对所要解决的问题进行全面了解 和分析。一个实际的问题由于环境条件等原因,往往都是比较复杂的,只有在 深入分析问题的基础上,善于抓住主要矛盾,剔除次要矛盾,才能抽取问题的 本质,显露解决问题的思路或解题的大体方案。 所谓明确要求就是明

5、确用户的要求,依据给出的条件和数据,应该需要进行哪些处 理,输出什么样的结果,针对实际需求进行可行性分析。 建立数学模型在分析问题和明确要求的基础上,要建立面向实际问题的数学模型,将一个物理过 程或工作状态,用数学形式表达出来,这个形式可能是一些公式、表格等等。 确定算法和处理方案数学模型建立后,必须研究和确定算法,以便选择较好的方案。所谓算法是指解 决某些问题的计算方法,不同类型的问题有不同的计算方法。根据问题的特点 ,对计算方法进行优化。如果没有现成的方法可以选用,必须通过实践探索, 并总结出算法思想和规律性。有了好的正确的算法,才能得到正确的结果,这 才是我们工作的方向和目标。 编制程序

6、流程图把解题的方法、步骤用框图(流程图)形式表示。如果要解决的问题比较复杂, 那么可以自上而下逐步求精,直到每一个框都能很容易用指令或程序段表示为 止。 流程图是程序算法的图形描述,它以图形方式把要解决的问题先后次序和程序的逻 辑结构直观、形象地描述出来,使得解题的思路更加清晰,有利于理解、阅读 和编制程序,还有利于调试、修改程序和减少错误等。 (1)处理框:如图81(a)所示。在处理框内可以写明某一段程序或某一模块的 功能或某一条指令所完成的功能。其特点是有一个入口,一个出口。(2)判断框:见图81(b)所示。可用菱形或尖角形框表示。框内写明比较、 判断的条件。条件较长时,用尖角框表示较合适

7、。它可有一个入口和安排两个出口 ,在每个出口处都要写明条件判断的结果。若条件成立,一般写“是”或“Y”,也有写 明具体条件的内容,如判开关的状态,如果判断框内写的是:“开关处于开通状态否 ?”,若条件成立可写为“开”或“Y”;若条件不成立,则写成“否”或“N”等均可,因为 它是写给人看的,明白其意就可以。它们表达的意思是为编程方便或提供给阅读的 人看的图形。 (3)起止框:如图81(C)所示。表示一个程序或一个程序模块的开始和结束 。起始框内通常用模块名(如过程名)、标号或“开始”字符表示,它仅有一个出口 。终止框内通常用“结束”、“暂停”或“返回”等文字表示,它仅有一个入口。(4)连接框:如

8、图81(d)所示。当一个程序框图比较复杂,需要分布在几张 纸上,或者虽然在一张纸上就能给出一个程序框图,但在流程图中连线较多且常常 纵横交错,这时可用连接框表示两根流向线的连接关系。所以连接框内常用字母或 数字来表示。框内有相同字母或数字就表示它们有连线关系。它只有一个出口或入 口。(5)指向线:如图81(e)所示。指向线是由带箭头的线段表示的,它表示程序的 流向以及程序执行的顺序和去向,如程序的流向是从上往下或从左往右等。当然,对于那些简单的较小的程序,它的流程并不复杂,一般也可以不需要画 出流程图。但对于一个比较复杂的问题,程序比较大,先着手画出解决问 题思路和编程方向的流程图,很有意义。

9、从流程图上可以直观地检查出程 序的总体结构是否正确合理,再根据流程图来编制程序,可以说方向明确 ,心中有数,不会陷入盲目性。这样,可编写出比较良好的程序。流程图 的确定,可以说任务已经完成了大半,因为,只要熟悉指令系统,编程就 比较快捷了。流程图在调试程序的过程中,对检查程序功能或流程方面存 在的错误,也较为方便,方便于确定在何处设置断点。 合理分配存储空间和寄存器汇编语言程序直接面向的资源之一是存储器。程序运行时,程序目标代码、 大量数据都是从指定的存储单元中取出,而中间结果或最后结果要送入指 定存储单元,因此,为了充分利用存储空间,根据需要分别定义数据段, 堆栈段,代码段以及附加段。工作单

10、元可设置在数据段或附加段中的某些 存储单元。寄存器也是汇编语言程序直接面向的资源,在程序中,无论是对数据进行操 作或传送,还是从存储器中寻找操作数,8086CPU常使用寄存器,而且有 的操作要求使用特定的寄存器,如堆栈操作就要求使用SS或SP,循环指令 LOOP必与CX寄存器配合等等。CPU中寄存器的数量有限,编程中必须合理分配各寄存器的用途。 6编制程序:根据程序流程图编制源程序。正确使用指令、宏指令、伪指令 编写汇编语言程序,这个阶段就是与写文章一样,体现出自己的编程风格。 7调试程序:以上步骤仅仅是完成了源程序的编写,对于一个程序设计人员,尤 其是程序设计的初学者,很难做到所编制的程序能

11、够一次成功,而没有一点 错误。若有错误,问题在哪里呢?如何修改?这一切都可以在计算机上运行 调试来完成。也只有在计算机上执行结果正确的程序,才能算是通过的程序 。特别是对于复杂的问题,往往要分解成若干个子模块,分别由几个人编写 ,而形成若干个程序模块,把它们连接在一起,才能形成总体程序。一般来 说,总会有这样或那样的错误存在,在调试程序过程中这些错误都可以被发 现,然后进行修改,再调试,再修改,直到所有的错误纠正为止。 试运行和分析结果试运行和分析结果是为了检验程序是否达到了设计要求,是否满足用户提出的 需求,所确定的方案是否可行。若没有达到事先的设计要求,不满足用户的 需求,就必须从分析问题

12、开始检查并修正原有的设计方案,直到符合设计要 求和满足用户需求为止。 整理资料,投入运行 在试运行满足各种需求之后,应当系统地整理材料,有关资料要及时归档或提交 给用户,以便正常投入运行。以上8与9两项是面向科研设计人员的问题。 8.1.2 程序结构化的概念 在计算机发展的初期,由于计算机硬件贵,内存容量小和运算速度慢,当时衡量 程序质量好坏的主要标准看其占用内存的大小和运算时间的长短。为达到此目的 ,编程者挖空心思寻找技巧,这种程序往往使人难以理解和消化,造成人力和时 间的严重浪费,而且使程序设计没有统一的规范。随着计算机的迅速发展,特别是大规模和超大规模集成电路技术的兴起,使计 算机硬件价

13、格大大下降,内存容量不断扩大,如从8086的1MB的内存,现在内存 最大可以设置为4GB=4096MB,由于主频的不断提高,使运算速度也大幅度加快 。因此,要求运行时间短和节省内存已不是主要矛盾,而应使程序具有良好的结 构,清晰的层次,容易阅读和理解,容易修改和查错,这是对以前的传统设计方 法提出了挑战,从而产生了结构化程序设计方法。 结构化程序设计是1969年由荷兰学者EWDijkstra等人提出的。这种新的程序设 计方法包括以下三个方面的内容:1程序由一些基本结构组成:包括顺序结构、选择(分支)结构和循环结构, 由这些基本结构组成一个结构化程序。2一个大型的复杂程序应按其功能分解成若干个功

14、能模块,并把这些模块按层 次关系进行组装。每个模块内的执行步骤都应该很清楚,整个程序的算法和每个 模块算法,都用标准的结构来表示。每个结构内还可以包含有和自己同样形式的 结构或是其它形式的结构,而且每个结构只有一个入口点和一个出口点,以结构 化的方式编写的程序容易理解,也容易修改错误。3在程序设计时,应采用“自顶而下,逐步求精”的实施方法,又称为“系统化程 序设计”方法。采用此法,首先要把一个大型程序分解成几个主要的模块。其中 主模块用来说明这些主要模块之间的关系以及它们的功能,而每个主要模块可再 分解几个较小的模块,然后继续分解成更小的模块,直到每个模块内的操作步骤 都很清楚,很容易理解为止

15、,最后把一个模块或几个模块分配给不同的编程人员 进行编写。 与“自顶而下”的程序设计方法相对应,还有“自下而上”的程序设计方法,此法是 程序员先开始编写低层次的模块并且期望这些模块最后能组成在一起。如果组合 完成了,那么和“自顶向下”的设计方法产生相同结果。目前许多程序设计都是混 合使用这两种方法,由上而下开始设计,然后由最小的模块开始编写,测试连接 ,再一直往上做,直到最终完成为止。 程序结构化的首要问题是程序的模块化。一个大型复杂的程序可以划分为若干个 功能模块,其中有一个为主模块,由它选择和调用其它各个功能模块,被调用的 各个模块称为子模块。这种将一个复杂的大型程序按其功能划分为若干个相

16、对独 立的模块进行程序设计的方法称为程序的模块化。 按结构化程序设计方法编写出的程序,具有风格优美、结构优良、层次分明、可 读性强、易于理解、便于修改等优点。在汇编语言程序设计中,程序模块通常是利用编写子程序(或过程)的手段来 实现。DATA SEGMENT DATB DB 63H,74H,5AH,79H,6AH,7CH,86H,3FH DATA ENDS STAK SEGMENT STACKDW 20H DUP(?) STAK ENDS CODE SEGMENTASSUME CS:CODE,DS:DATA START: MOV AX,DATAMOV DS,AXLEA SI,DATBMOV AX,SI ;寄存器间址类型随同AXADD SI,2 ;地址调整,因是字操作则加2MOV BX,SIADD SI,2MOV CX,SIADD SI,2MOV

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 教学课件

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