汇编语言---程式设计 (3)



汇编语言---程式设计 (3):第 4节程式规划

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

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

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

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

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

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

、程式性质

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

2、使用频率

对程式执行效率而言占用空间和处理时间经常需要作些取舍如果程式太大空间不敷应用则在规划时先行统计各个程式使用频率


不常用到程式不表示并不重要但若占用了空间则于效率有损
这种程式最好独立成个模组以便随时可以因应空间条件再作打算
因此在程式规划时对空间安排应该优先考虑使用频率也就是说要设法将使
3、程式流程

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

4、流程图

流程步是画流程图根据流程图再作细部流程然后根据细部流程去瞭解或编写程式
以上面例子先制作流程图如下:
\" width=\"271\" height=\"153\">
请注意上图并没有出口这是模组特色的当码=0时就进入结束程式本子模组工作便是要安排好资料再回到来处
上面说过每个码是根据组码定义而来每次取码后立即根据码预设条件作图(见第、任务)这样不仅速度快空间也精简
当然各码都有其子流程图由于太简单几句话便交待完毕不必再作图了:首先确定位置、宽度、长度即可画直线或横线如此而已

5、细部流程

细部流程最重要是要确定暂存器功能另外需要缓冲器辅助也应在此详细介绍说明至于要详细到什么程度则须根据程式复杂性及写作程式师而定
如果写作流程及程式为同且无留供他人参考必要时细部流程甚至可以免掉但若是集体制作而且需要保留档案则不仅有必要更须写得明确让他人能够目瞭然不论任何人都能接手才是
由于前面所举例子太简单如果要写细部流程不待写完程式早写好了所以有时也不必过分拘泥形式在下节指令应用中仅以附注方式介绍说明细部流程和程式相对照反而更有效率

6、工作进度

工作进度最重要意义不在于增加制作速度而是培养种敬业精神以及对工作判断能力
工作进度掌握靠进度表而制作进度表需要对全部工作有相当认识所以进度相当于全面地、有系统地研究工作细节对程式师工作能力提高有极大帮助
当然进度能有效地督促工作每当进度如期完成对程式师而言即是种成就感在制作大型程式时时间往往拖得很久如果没有进度作参考人往往会有种迷失在汪洋不知身在何处失落感
能力强经常能正确判断工作所需时间;反的不知道工作需要多久或者所预定进度和事实相差太远都表示着程式师能力有限或不足


不过写作程式完全要符合进度也是不正确观念前文讨论过写程式是种艺术而非流水作业式生产创造性强艺术工作是不可能用进度来加以控制
进度制作方式没有定则只要记下工作项目预计完成时间实际完成时间即可只是制作是回事执行又是另回事唯有认真负责执行才会有实用价值
执行方式不外每天或定期查阅进度如果发现进度不符合应该立刻分析原因并做修正调整至于所分析结果最好能记载下来以作下次改进参考
如此这般养成了习惯自然而然就有了自动分析判断能力而且还会增进规划和设计理念
Tags: 

延伸阅读

最新评论

发表评论