例7.3 大小写字母互换
(1)设计要求:设内存数据区有大小写混合英文ASCII码字母。将其转换成全部大写和全部小写,并在屏幕显示这3种字母。字母显示用DOS功能9号调用。
(2)程序算法:字母A~Z的ASCII码是41H~5AH,字母a~z的ASCII是61H~7AH。两种字母转换只需加减20H即可。
(3)程序清单
1: TITLE EX3
2: PAGE 50,70
3: ;..................................
4: DAT SEGMENT PARA 'DAT'
5: D0 DB 0DH,0AH
6: D1 DB 'dfdsjfhjsDHDSFHJSDHSJ','$'
7: DAT ENDS
8:;…………………………
9: STAC SEGMENT
10: STA1 DW 100 DUP(?)
11: STAC ENDS
12: ;…………………………………
13: CODE SEGMENT PARA 'CODE'
14: ASSUME CS:CODE,DS:DAT
15: ASSUME SS:STAC,ES:DAT
16: STAR PROC FAR
17: PUSH DS
18: XOR AX,AX
19: PUSH AX
20: MOV AX,DAT
21: MOV DS,AX
22: MOV ES,AX
23: ;………………………………………
24: CALL TT
25: LEA DI,D1
26: CALL TT1
27: CALL TT
28: LEA DI,D1
29: CALL TT2
30: CALL TT
31: RET
32: STAR ENDP
33: ;……………………………………
34: TT1 PROC
35: GO: MOV AL,[DI]
36: CMP AL,'$'
37: JZ GO2
38: CMP AL,'A'
39: JB GO1
40: CMP AL,'Z'
41: JA GO1
42: ADD BYTE PTR [DI],20H
43: GO1: INC DI
44: JMP GO
45: GO2: RET
46: TT1 ENDP
47: ;………………………………
48: TT2 PROC
49: GQ: MOV AL,[DI]
50: CMP AL,'$'
51: JZ GQ2
52: CMP AL,'a'
53: JB GQ1
54: CMP AL,'z'
55: JA GQ1
56: SUB BYTE PTR [DI],20H
57: GQ1: INC DI
58: JMP GQ
59: GQ2: RET
60: TT2 ENDP
61: ;……………………………
62: TT PROC
63: LEA DX,D1
64: MOV AH,9
65: INT 21H
66: RET
67: TT ENDP
68: CODE ENDS
69: END STAR
例7.3 大小写字母互换
(1)设计要求:设内存数据区有大小写混合英文ASCII码字母。将其转换成全部大写和全部小写,并在屏幕显示这3种字母。字母显示用DOS功能9号调用。
(2)程序算法:字母A~Z的ASCII码是41H~5AH,字母a~z的ASCII是61H~7AH。两种字母转换只需加减20H即可。
(3)程序清单
1: TITLE EX3
2: PAGE 50,70
3: ;..................................
4: DAT SEGMENT PARA 'DAT'
5: D0 DB 0DH,0AH
6: D1 DB 'dfdsjfhjsDHDSFHJSDHSJ','$'
7: DAT ENDS
8:;…………………………
9: STAC SEGMENT
10: STA1 DW 100 DUP(?)
11: STAC ENDS
12: ;…………………………………
13: CODE SEGMENT PARA 'CODE'
14: ASSUME CS:CODE,DS:DAT
15: ASSUME SS:STAC,ES:DAT
16: STAR PROC FAR
17: PUSH DS
18: XOR AX,AX
19: PUSH AX
20: MOV AX,DAT
21: MOV DS,AX
22: MOV ES,AX
23: ;………………………………………
24: CALL TT
25: LEA DI,D1
26: CALL TT1
27: CALL TT
28: LEA DI,D1
29: CALL TT2
30: CALL TT
31: RET
32: STAR ENDP
33: ;……………………………………
34: TT1 PROC
35: GO: MOV AL,[DI]
36: CMP AL,'$'
37: JZ GO2
38: CMP AL,'A'
39: JB GO1
40: CMP AL,'Z'
41: JA GO1
42: ADD BYTE PTR [DI],20H
43: GO1: INC DI
44: JMP GO
45: GO2: RET
46: TT1 ENDP
47: ;………………………………
48: TT2 PROC
49: GQ: MOV AL,[DI]
50: CMP AL,'$'
51: JZ GQ2
52: CMP AL,'a'
53: JB GQ1
54: CMP AL,'z'
55: JA GQ1
56: SUB BYTE PTR [DI],20H
57: GQ1: INC DI
58: JMP GQ
59: GQ2: RET
60: TT2 ENDP
61: ;……………………………
62: TT PROC
63: LEA DX,D1
64: MOV AH,9
65: INT 21H
66: RET
67: TT ENDP
68: CODE ENDS
69: END STAR