汇编语言的艺术之二:准备工作
第四节 统一格式
一、格式统一之优点
不论采用何种程式语言,凡是共同工作、须相互研讨,或者在同一部门中,分担成败责任者,应该有统一的程式写作方式。这样不仅便于沟通,提高程式的品质,且可避免因某一程式师之离职或出缺所造成的后遗症。
良好的程式,应如一篇美妙的文学作品,其中有技巧,有意境。其功能不仅表现在执行的效率上,也可以作为同行间学习、欣赏的媒介,这些都必须透过统一的格式达成。
尤其是把组合程式写作当作一种艺术创作,就必须经常相互观摩,如果没有共通的格式规定,则这样的程式和「天书」可以说没有多大的分别。不论注释写得再好,一般程式师自己都怕看自己的程式,更何况参阅他人的? 但若有统一的格式,养成习惯后,不仅易看易懂,而且寻找、修改方便,写作也轻松省事。
二、规格
1,统一用大写字母,以利于阅读。
2,空格处应采用 TAB,齐头等距,一目瞭然。
3,标题之后立即改行输入,以便阅读。
4,每行不得超过70个字母,以免长度不等,画面紊乱。
5,注记位于指令后,在第五个 TAB的起点,空间不足时,可换行,但位置齐一。
6,所有缓冲器统一定义在程式之前,不可夹杂在程式中间。
7,除了需要作超过程式段的FAR CALL使用‘PROC FAR’外,切勿使用‘PROC NEAR ’形式,因这种写法毫无意义。
8,程式开始时,应有注记说明使用要点。
以下举例说明统一格式:
1: PAGE 60,132
2: TITLE [程式名],[程式师代号],[编号],[功能说明]
3:
4: DG SEGMENT PUBLIC
5: extrn bwsca1:word,..
6: DG ENDS
7:
8: ..
9: ..
10: ..
11:
12: CG SEGMENT PUBLIC
13: extrn mmmm:near,..
14: ..
15: public xxxx,yyyy,..
16: ASSUME CS:CG,DS:DG,ES:DG
17: ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
18: ; REM ………… ;
19: ; …………………. ;
20: ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
21: START:
22: CLD
23: MOV AX,DG
24: MOV DS,AX
25: ..
26: ..
27: ..
28:
29:CG ENDS
30: END START
第一条的 PAGE 是供列印用的「保留指令」,表示每页所印的行数及列数。其后之 60,132 即为60行, 132个字符。
第二条的 TITLE 为供查阅之「保留指令」。
前述REM 注记栏中,应说明该段程式的功能、应用条件,以便其他程式师共同使用。
三、注记
注记的目的在于日后自己或他人能很容易地做程式修改、维护。因此所做描述当力求详尽。不幸的是,不论多么精彩的文句,总有不足之处。因此,注记时需把握重点,大体说来,程式需加以说明的,不外:
1,功能:做什么工作,需要何种先决条件。
2,参数:设些什么数据,以供本段程式处理。
3,缓冲器:用什么缓冲器,其工作特性如何。
4,结果:执行后所产生的结果。
5,子程式调用:在本段程式中,所需调用的子程式名。
6,重要声明:如暂存器是否被破坏,或其他注意的事项。
如:
【功能】:读键盘缓冲区输入码,依性质返回ASCII+扫
瞄码或中文内码
【参数】: AH = 00H
【返回】: 11AL< 80H,AH = 扫瞄码,AL = ASCII
12AL≧80H,AL = 四字元中文内码之一
【破坏暂存器】:AX
【备注】:以本功能取中文内码,须连取4次,依序得
到一中文4字元内码。
当然,如果时间充足,最好能有程式的全部说明,以及制作、修改的细部记录。
问题在于任何程式发展之初,一定乏善可陈。再加上不断的修改、增补,其间变化复杂无比。程式师又要全神贯注,解决问题,又要考虑如何注记,一心两用,必然谈不到效率。
那么怎样做才对呢?我建议先让程式师自由发挥,在初期有无注记无关紧要。待程式完成了,大致上没有错误,这时,就应该停下来,从头到尾,将程式彻底整理一番。
这样不仅加注记容易,而且程式师有机会重新「欣赏」自己的心血结晶,该改的改,该合并的合并,该删的删。最后,程式师经过反思,研究,技术将会大幅度进步,程式更精简,注记也正确无误,工作也达到最高效率。