nbsp;.obj,.lst和 .crf三个档,而且不必显示在萤幕上。
汇编完成后,再用 cref.exe 生成 abcd.ref 如下:
C:>CREF ABCD;
这时,将 abcd.lst 及 abcd.ref 印出,相互对照,先将程式精简、整理,再行分割。
1,在 abcd.ref 档中,每个「标题」都来自 abcd.lst 档,标题之后,有若干组数字,其中带#者,表示标题出处,余者为调用之处。若仅有来处,而无调用处,则此标题可删除。再如标题前之指令为 jmp 或 ret ,则此标题所代表的程式毫无用处,亦应删除之。
2,如 abcd.lst 档中有 nop指令,除非是有意安排者,否则亦应删除。如在 jmp xxxx 之后,可将之改为 jmp short xxxx 。
若 XXXX 之前无连接的程式,亦可将之合并。此外,凡指令 CALL 所调用的子程式,如仅调用一次,最好将此段子程式合并在程式内,或附属于其后,以便于分辨。
3,程式精简及合并后,再行检查各段程式,凡功能独立者,应先分割。分割后,再检查其中是否调用其他子程式,如有,应先记录下来,此段程式即可视为「功能模组」。
4,凡前述功能模组中调用的子程式,如仅供该模组调用,则可附在该模组后,否则应置于「共用模组」中。
5,但凡程式之「主流程」,大多属「应用模组」。此类应用模组极难分割,也无分割的必要。
6,分割完毕后,应详细注记,以便备用。
五、模组特性
所谓模组特性,是指各个模组在设计或分割之初所考虑的因素。特性包括了功能,效率的特别要求以及使用时应行注意的重点等有关模组的细节。
不论模组设计的目标为何,既然有了模组,就应该高度发挥其应有的效率。各个模组之分割,皆有其必然因素,不论是为了功能,或是为了制作方便,目的都在追求效率。而每个模组皆有其特性,要达到效率要求,应先瞭解模组的特性。
下面以前节所举的中文系统为例,将其中各个模组的特性一一详细分析如下:
【模组一】:中文处理的系统模组-功能模组
1,键盘中断:因为人输入的速度远逊于电脑处理速度,所以,本中断程式应该以节省空间为主。此外,键盘的应用,以灵活达变为重点,宜多采用「建表」法,便于修改、变更。
2,显示中断:显示速度非常重要,本模组应牺牲空间以争取时效。此外,显示的弹性要大,凡字符的大小、位置、属性等,都应该一次考虑清楚。
目前显示器的规格很多,彼此互不相容,一般多在程式载入前,先作安排。在本模组中,尤其应该注意不同的显示程式,如何兼顾速度的运行。
3,列印中断:列印也面临不同的机种介面问题,但因不涉及速度,其技巧完全属于设定及载入方面。
4,通讯中断:通讯所需考虑的,是如何保证在
资料传输过程中的安全、正确及保密。
【模组二】:中文内码模组-辅助模组
因为仓颉码可以组出既有的,以及排列组合上可能产生的中文字,照理应该不受内码的限制。但是仓颉输入码之长度不定,为了电脑的处理效率,我们采用了四字元内码,每一字元的最高位元设置为1 ,以