; 383: MOV AL,18H
384: INC DX
385: OUT DX,AL
386: RET
…
490: MOV DX,3CEH
491: MOV AL,3
492: OUT DX,AL
493: MOV DX,3CFH
494: MOV AL,0H
495: OUT DX,AL
496: RET
…
589: CROSS PROC NEAR
590: MOV DX,3C4H
591: MOV AL,2
592: OUT DX,AL
593: INC DX
594: MOV AL,0FH
595: OUT DX,AL
596: RET
597: CROSS ENDP
…
这样的段落有十多处,看来每个都略有不同,似乎不能合并。然而仔细分析,显然是程式师训练不够,把一个非常有规则的程式,安排得非常紊乱,以致到这个地步。 我们先归纳问题,决定如何合并。第一,上述各段程式,应该统一作为子程式;第二,全部变数只有四个,其中两个是传送值,两个是输出入埠。后者有连续关系,等于只有一个。因此,在调用此子程式前,应先令DX为输出入埠,再将变数装入AX中,一次调用即可。此子程式如下:
300: SUB:
301: OUT DX,AL
302: INC DX
303: MOV AL,AH
304: OUT DX,AL
305: RET
这样简短的子程式,有无必要,端视时空的效益而定。不论怎样整理,都远比原来的要好。
另外有种情况,更为可怕,就是在键盘输入后,用流程方式,一一比较输入码,再一一分别处理。&n
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] ... 下一页 >>