sp;BE1RET
169: CALL BE01
170: SUB DI,BX
171: BE1RET:
172: RET
…
190: BE01:
191:? MOV AL,1
192: CMP [SI+1],AL
193: JNZ BE011
194: INC BYTE PTR [SI+1]
195: RET
…
200: BE141:
…
全部程式并不大,不过一百多条指令,但是稍加改进,却可以省却廿多条指令,速度也会加快。重点在于106 到113 的分支错误,以致于多出BE10 BE20 BE3 BE01等段程式出来。
照理,BE1 BE3 BE01都不该另设子程式,BE14也应改写,如此,整个程式就完全不同了。
原来由 105为:
105: MOV AX,BP ;★无必要
106: SHL AX,1 ;★无必要
107: DEC AX ;★无必要
108: JL BE10
109: BE2:
110: CALL BE1 ;★合并后,无需调用
111: JC BEG00 ;★另作分支
112: CALL BE3 ;★也无必要调用
113: JMP BEG00
现改为:
107: BE1: ;原为DEC AX分支处理
108: INC DX ;原161子程式作主流程
109: ADD CX,DX
110: ADD CX,DX
111: INC CX
112: ADD DI,BUFX
113: CMP DI,BX
114: JLE BE11
115: ; CALL BE01 ;本子程式重写如下:
116: CMP BYTE PTR[SI+1],1
117: JNE BE1A
118: INC BYTE PTR[SI+1]
119: BE1A:
120: SUB DI,BX
121: JC BEG00 ;原111
122: … ;原BE3 程式
…
又 125条三个指令也是分支错误,白白浪费。
120: BE14:
121: LODSW
122: CMP AH,1FH
123: JGE BE141
124: LOOP BE14
125: POP DI ;★可以省略
126: POP CX ;★可以省略
127: MOV SI,DI ;★可以省略
128: JMP BE142 ;★可以省略
129: BE141:
130: POP DI
131: POP CX
132: MOV SI,DI ;127移到此
133: JNZ BE142 ;128移到此
134: …
第四节 定案包装
一、手册:
手册写作本来与程式写作无关,但由于一般程式师都不知道手册的重要性,往往程式写得极佳,而市场口碑却不良,以致惨遭滑铁泸之败。
上一页 [1] [2] [3] [4] [5] 下一页 |