WEB开发网
开发学院软件开发汇编语言 汇编语言程序设计(三) 阅读

汇编语言程序设计(三)

 2007-04-25 09:30:02 来源:WEB开发网   
核心提示:第四节 程式规划 程式规划是指在整体设计的观念上,事先对全部程式周详地、有系统地分析,汇编语言程序设计(三),再定出一个明晰的架构,以便于制作,根据流程图再作细部流程,然后根据细部流程去瞭解或编写程式, 最理想的方式,是从使用者的角度

第四节 程式规划

程式规划是指在整体设计的观念上,事先对全部程式周详地、有系统地分析,再定出一个明晰的架构,以便于制作。
最理想的方式,是从使用者的角度,先决定应用功能、用键、输入形式、空间结构及模组划分等。
这些都确定了,才能按图索骥,根据蓝图写程式。也就是说,规划即先把目标介定妥当,以便按步就班,循序执行。
1,工作的认识:程式的规划,相当于设计建筑篮图,首先要明确认识工作性质、特征、条件,选择取适当的方式,以求得到最理想的结果。

2,程式的结构:结构要事先定案,是采用流程抑或模组?全部或部份采用组合语言?是依工作人员的素质分工,或者是用生产线统一制作?程式段、资料段及堆栈段的空间分配,每个程式联接次序的安排,暂存器的定义,缓冲器的设置等,都应该慎重地考虑清楚,并记录下来,以供工作之依据。

3,参数的设定:参数是程式的处理对象,必须合情合理地安排,且要有扩充的余地。因为参数与功能分类及程式的效率息息相关,对程式师而言,参数即相当于程式的处理对象;对应用程式的人,则等于工作的分类标准。其安排的结果,影响功能价值甚钜。

4,效率的要求:在第一章第三节中,我们特别强调了效率的法则,使用电脑的目的,就在于效率的追求。故在规划之初,就应该规定每一段程式的效率要求。
另外,参数的运用,也应考虑其使用的频率,凡能在事先一次准备妥当的,切不可等到运用时再临时计算。

5,测试的标准:测试就是品质管理,程式所应达到的指标,可由测试求证之。一般程式师只对程式的正确性负责。其实正确性与指标无关,乃是程式师最起码的责任。
组合语言程式的品质,应该包括原程式的写作规格及时限;程式的思路、理念;执行时的时效;程式空间的大小及安排;应用的方便与否;指令运用是否恰当等等。
执行程式的品管,则可以透过测试程式完成之。这种测试程式,也应该在规划之初,一并考虑。

6,制作的进度:程式制作的进度很难控制,而正因为其难以控制,更要加倍小心,事先规划。其方法是先按照工作性质,设定工作「难度值」。再对工作的程式师评估其「能力值」,依此设定一个「合理」的进度。最后,根据实际的工作进度调整之。一般说来,程式师需要三年以上的写作经验,才能养成进度的观念。
由于程式本身占有空间,所以其结构的好坏,对程式制作及执行效率影响极大。良好的结构应根据程式的性质、使用的频率、处理的先后过程等,在效率的立场,作全面的考虑。

一、程式性质

前文曾介绍过程式的种类,在规划时,要更进一步瞭解程式的性质。因为所谓的效率,一是指程式的制作、维护,一是指程式的执行及调用。这两者必须根据程式的性质,作适当的安排。
大体说来,程式的性质只有两种,一种是主动的,使用者可以直接控制执行;另一种是被动的、公用的,为其他程式所调用。
前者也可以说是应用程式,而后者比较类似系统程式。只是在这里强调的是其性质,以及如何根据其性质进行规划。
主动程式最好能放在同一模组中,当程式太大,必须分割时,也要设法联接在一起。但若在功能不同,所调用的模组亦无交集的情况下,为了避免跨越段与段时的效率损失,则无须考虑是否安置在同一模组内。
由于主动程式涉及使用人的习惯和设计者的理念,经常需要修改调整,变动极大。正因为这种因素,其「再利用」价值不高,对效率的要求也较低。
规划时,主动程式一定要与被动程式分开,而在制作时,则应注意其所占用的空间,与各段的关系。
被动程式既然是公用的,必然具备一些基本的功能。所谓被动是表示该程式仅在某种条件下,才被调用。由于其「再利用」的特色,应该设计成为精简的子程式。再依情况需要,或者为了节省空间,放在磁盘中,随时以覆盖其他子程式方式调用,或者为了效率,直接联接备用。

二、使用频率

对程式执行的效率而言,占用空间与处理时间,经常需要作些取舍。如果程式太大,空间不敷应用,则在规划时,先行统计各个程式的使用频率。
不常用到的程式,不表示并不重要,但若占用了空间,则于效率有损。
这种程式最好独立成一个模组,以便随时可以因应空间的条件,再作打算。
因此在程式规划时,对空间的安排,应该优先考虑使用频率。

三、程式流程

程式有一定的运行规律,称为「流程」,意即在执行时,依照预先安排的顺序,一一流经的过程。
传统的程式写作法,流程非常重要,因为人需要根据一种理念,以逐步检验并付诸实现。但自从模组受到重视后,每个模组代表一种完整的功能,而功能的集合所能实现的效果,远非流程可以表达。这一来,流程的重要性减低了,其地位降到只属于结构中的一部份而已。
因为模组是可组合的,模组越多,主流程便越短。虽然每一个模组也都各有其流程,结构良好的模组,又可再细分为若干子模组,以此类推。因此,流程远不如模组灵活,观念上也显得呆板。
不过,即使在模组设计过程中,有时也有必要藉着流程逐步推理,以瞭解细部的结构。在这种立场,流程的应用原无可厚非。可是一旦反客为主,程式师不用流程即无从思考,就大谬不然了。
流程属于单线思考,人虽然经常使用这种流程推理,但更重要的能力却来自「抽象思考」。抽象思考是指人在许多错综复杂、相互纠结的现象中,能立即掌握重点,针对目的,解决问题。
在程式上,这种抽象思考相当于对所有模组的全面认知,而非仅仅是流程的推理。有了全面的认知,灵活地加以调用,程式的功能就更上层楼,大大的提高了。
如果程式师祇知道根据流程写程式,习惯养成后,不仅程式笨拙不堪,连人的思考方式都连带受到影响。一般所谓的「匠气」、「呆滞」,就是这种机械式训练的结果。
因此,我不赞成利用流程来规划程式,但在解释或说明某种过程时,并不排除流程的方便性。

四、流程图

流程的第一步是画流程图,根据流程图再作细部流程,然后根据细部流程去瞭解或编写程式。
以上面例子,先制作流程图如下: 

┌─────┐
┌>───┤表格码输入│
│ └──┬──┘
│ ┌──┴──┐
│ │取 一 码│
│ └──┬──┘

1 2  下一页

Tags:汇编语言 程序设计

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接