大小写转换

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
assume cs:code,ds:data,ss:stack


stack segment

db 128 dup('?')

stack ends


data segment

db 8 dup('abcdABCD')

big db 64 dup('?')

small db 64 dup('?')

data ends


code segment

sta:

mov ax,data

mov ds,ax

mov ax,stack

mov ss,ax

mov ax,0b800h

mov es,ax

call toBig

call toSmall

xor di,di

push di

xor si,si

call dis_play

lea si,big

mov di,160

call dis_play

lea si,small

mov di,320

call dis_play

mov ah,4ch

int 21h

toBig:

mov cx,64

lea di,big

xor si,si

again_1:

mov al,[si]

and al,0dfh

mov [di],al

inc si

inc di

loop again_1

ret

toSmall:

mov cx,64

lea di,small

xor si,si

again_3:

mov al,[si]

or al,20h

mov [di],al

inc si

inc di

loop again_3

ret

dis_play:

mov cx,64

again:

mov al,[si]

mov es:[di],al

add di,2

inc si

loop again

ret

code ends

end sta