大「表」的对应值,再改为「总表」的方式,一次即可查到。且由第20行改起,并力求指令的精简,如:
20: MOV DX,OFFSET BYTETB
21: MVDB:
22: LODSB
23: SUB AH,AH
24: SHL AX,1 ; 一字元须变为二字元
25: ADD AX,DX ; 之位置以查表
26: MOV BX,AX ; BX可供间接定址用
27: MOV AX,[BX] ; 以一字元查表值
28: STOSW ; 查妥存入第一行
29: MOV [DI+4],AX ; 上下再重复一行
30: LODSB
31: SUB AH,AH ; 处
32: SHL AX,1 ; 理
33: ADD AX,DX
34: MOV BX,AX ; 第
35: MOV AX,[BX] ; 二
36: STOSW ; 列
37: MOV [DI+4],AX ;
38: LODSB ;
39: SUB AH,AH ; 处
40: SHL AX,1 ; 理
41: ADD AX,DX
42: MOV BX,AX ; 第
43: MOV AX,[BX] ; 三
44: STOSW ; 列
45: MOV [DI+4],AX ;
46: ADD DI,6 ; 再处理下一行
47: LOOP MVDB ; 共24次
48: DEC BP ; 做10,000次
49: JNZ S3 ; 完成
50: MOV AX,4C00H
51: INT 21H
52: RET
程式到此为止,下面还有一转换总表,可供各程式共用。
1:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2:; 转 换 表 ;
3:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
4: BYTETB LABEL WORD
5: DB 000H,000H,000H,003H,000H,00CH,000H,00FH
6: DB 000H,030H,000H,033H,000H,03CH,000H,03FH
7: DB 000H,0C0H,000H,0C3H,000H,0CCH,000H,0CFH
8: DB 000H,0F0H,000H,0F3H,000H,0FCH,000H,0FFH
9: DB 003H,000H,003H,003H,003H,00CH,003H,00FH
10: DB 003H,030H,003H,033H,003H,03CH,003H,03FH
11: DB 003H,0C0H,003H,0C3H,003H,0CCH,003H,0CFH
12: DB 003H,0F0H,003H,0F3H,003H,0FCH,003H,0FFH
13: DB 00CH,000H,00CH,003H,00CH,00CH,00CH,00FH
14: DB 00CH,030H,00CH,033H,00CH,03CH,00CH,03FH
15: DB 00CH,0C0H,00CH,0C3H,00CH,0CCH,00CH,0CFH
16: DB 上一页 [1] [2] [3] [4] 下一页 |