Rev 3067 | Rev 3107 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 3067 | Rev 3081 | ||
---|---|---|---|
1 | //------------------------------------------------------------------------------ |
1 | //------------------------------------------------------------------------------ |
2 | // strcmp( ESI, EDI) |
2 | // strcmp( ESI, EDI) |
3 | // strlen( EDI) |
3 | // strlen( EDI) |
4 | // strcpy( EDI, ESI) |
4 | // strcpy( EDI, ESI) |
5 | // strcat( EDI, ESI) |
5 | // strcat( EDI, ESI) |
6 | // strchr( ESI,BL) |
6 | // strchr( ESI,BL) |
7 | // strrchr( ESI,BL) |
7 | // strrchr( ESI,BL) |
8 | // strstr( EBX, EDX) |
8 | // strstr( EBX, EDX) |
9 | // itoa( ESI) |
9 | // itoa( ESI) |
10 | // atoi( EAX) |
10 | // atoi( EAX) |
11 | // strupr( ESI) |
11 | // strupr( ESI) |
12 | // strlwr( ESI) ----- âîçìîæíî íå ïîääåðæèâàåò êèðèëëèöó |
12 | // strlwr( ESI) ----- âîçìîæíî íå ïîääåðæèâàåò êèðèëëèöó |
13 | // strttl( EDX) |
13 | // strttl( EDX) |
14 | // strtok( ESI) |
14 | // strtok( ESI) |
15 | //------------------------------------------------------------------------------ |
15 | //------------------------------------------------------------------------------ |
16 | 16 | ||
17 | inline fastcall signed int strcmp( ESI, EDI) |
17 | inline fastcall signed int strcmp( ESI, EDI) |
18 | { |
18 | { |
19 | loop() |
19 | loop() |
20 | { |
20 | { |
21 | IF (DSBYTE[ESI] |
21 | IF (DSBYTE[ESI] |
22 | IF (DSBYTE[ESI]>DSBYTE[EDI]) RETURN 1; |
22 | IF (DSBYTE[ESI]>DSBYTE[EDI]) RETURN 1; |
23 | IF (DSBYTE[ESI]=='\0') RETURN 0; |
23 | IF (DSBYTE[ESI]=='\0') RETURN 0; |
24 | ESI++; |
24 | ESI++; |
25 | EDI++; |
25 | EDI++; |
26 | } |
26 | } |
27 | } |
27 | } |
28 | 28 | ||
29 | 29 | ||
30 | inline fastcall signed int strncmp( ESI, EDI, ECX) |
30 | inline fastcall signed int strncmp( ESI, EDI, ECX) |
31 | { |
31 | { |
32 | asm { |
32 | asm { |
33 | MOV EBX, EDI |
33 | MOV EBX, EDI |
34 | XOR EAX, EAX |
34 | XOR EAX, EAX |
35 | MOV EDX, ECX |
35 | MOV EDX, ECX |
36 | OR ECX, ECX |
36 | OR ECX, ECX |
37 | JE L1 |
37 | JE L1 |
38 | REPNE SCASB |
38 | REPNE SCASB |
39 | SUB EDX, ECX |
39 | SUB EDX, ECX |
40 | MOV ECX, EDX |
40 | MOV ECX, EDX |
41 | MOV EDI, EBX |
41 | MOV EDI, EBX |
42 | XOR EBX, EBX |
42 | XOR EBX, EBX |
43 | REPE CMPSB |
43 | REPE CMPSB |
44 | MOV AL, DSBYTE[ ESI-1] |
44 | MOV AL, DSBYTE[ ESI-1] |
45 | MOV BL, DSBYTE[ EDI-1] |
45 | MOV BL, DSBYTE[ EDI-1] |
46 | SUB EAX, EBX |
46 | SUB EAX, EBX |
47 | L1: |
47 | L1: |
48 | } |
48 | } |
49 | } |
49 | } |
50 | 50 | ||
51 | 51 | ||
52 | 52 | ||
53 | /* |
53 | /* |
54 | 54 | ||
55 | inline fastcall signed int strcmpi( ESI,EDI) |
55 | inline fastcall signed int strcmpi( ESI,EDI) |
56 | uses EBX |
56 | uses EBX |
57 | { |
57 | { |
58 | do{ |
58 | do{ |
59 | $lodsb |
59 | $lodsb |
60 | IF(AL>='a')&&(AL<='z')AL-=0x20; |
60 | IF(AL>='a')&&(AL<='z')AL-=0x20; |
61 | BL=DSBYTE[(E)DI]; |
61 | BL=DSBYTE[(E)DI]; |
62 | IF(BL>='a')&&(BL<='z')BL-=0x20; |
62 | IF(BL>='a')&&(BL<='z')BL-=0x20; |
63 | AL-=BL; |
63 | AL-=BL; |
64 | IF(!ZEROFLAG)BREAK; |
64 | IF(!ZEROFLAG)BREAK; |
65 | (E)DI++; |
65 | (E)DI++; |
66 | }while(BL!=0); |
66 | }while(BL!=0); |
67 | } |
67 | } |
68 | 68 | ||
69 | inline char STRNCMPI((E)SI,(E)DI,(E)CX) |
69 | inline char STRNCMPI((E)SI,(E)DI,(E)CX) |
70 | { |
70 | { |
71 | (E)AX=0; |
71 | (E)AX=0; |
72 | LOOPNZ((E)CX){ |
72 | LOOPNZ((E)CX){ |
73 | $lodsb |
73 | $lodsb |
74 | IF(AL>='a')&&(AL<='z')AL-=0x20; |
74 | IF(AL>='a')&&(AL<='z')AL-=0x20; |
75 | AH=DSBYTE[EDI]; |
75 | AH=DSBYTE[EDI]; |
76 | IF(AH>='a')&&(AH<='z')AH-=0x20; |
76 | IF(AH>='a')&&(AH<='z')AH-=0x20; |
77 | EDI++; |
77 | EDI++; |
78 | IF(AL==0)||(AH==0)||(AL!=AH)BREAK; |
78 | IF(AL==0)||(AH==0)||(AL!=AH)BREAK; |
79 | } |
79 | } |
80 | AL=AL-AH; |
80 | AL=AL-AH; |
81 | }*/ |
81 | }*/ |
82 | 82 | ||
83 | 83 | ||
84 | 84 | ||
85 | inline fastcall unsigned int strlen( EDI) |
85 | inline fastcall unsigned int strlen( EDI) |
86 | { |
86 | { |
87 | $xor eax, eax |
87 | $xor eax, eax |
88 | $mov ecx, -1 |
88 | $mov ecx, -1 |
89 | $REPNE $SCASB |
89 | $REPNE $SCASB |
90 | EAX-=2+ECX; |
90 | EAX-=2+ECX; |
91 | } |
91 | } |
92 | 92 | ||
93 | 93 | ||
94 | inline fastcall strcpy( EDI, ESI) |
94 | inline fastcall strcpy( EDI, ESI) |
95 | { |
95 | { |
96 | $cld |
96 | $cld |
97 | l2: |
97 | l2: |
98 | $lodsb |
98 | $lodsb |
99 | $stosb |
99 | $stosb |
100 | $test al,al |
100 | $test al,al |
101 | $jnz l2 |
101 | $jnz l2 |
102 | } |
102 | } |
103 | 103 | ||
104 | 104 | ||
105 | inline fastcall strcat( EDI, ESI) |
105 | inline fastcall strcat( EDI, ESI) |
106 | { |
106 | { |
107 | asm { |
107 | asm { |
108 | mov ebx, edi |
108 | mov ebx, edi |
109 | xor ecx, ecx |
109 | xor ecx, ecx |
110 | xor eax, eax |
110 | xor eax, eax |
111 | dec ecx |
111 | dec ecx |
112 | repne scasb |
112 | repne scasb |
113 | dec edi |
113 | dec edi |
114 | mov edx, edi |
114 | mov edx, edi |
115 | mov edi, esi |
115 | mov edi, esi |
116 | xor ecx, ecx |
116 | xor ecx, ecx |
117 | xor eax, eax |
117 | xor eax, eax |
118 | dec ecx |
118 | dec ecx |
119 | repne scasb |
119 | repne scasb |
120 | xor ecx, 0ffffffffh |
120 | xor ecx, 0ffffffffh |
121 | mov edi, edx |
121 | mov edi, edx |
122 | mov edx, ecx |
122 | mov edx, ecx |
123 | mov eax, edi |
123 | mov eax, edi |
124 | shr ecx, 2 |
124 | shr ecx, 2 |
125 | rep movsd |
125 | rep movsd |
126 | mov ecx, edx |
126 | mov ecx, edx |
127 | and ecx, 3 |
127 | and ecx, 3 |
128 | rep movsb |
128 | rep movsb |
129 | mov eax, ebx |
129 | mov eax, ebx |
130 | } |
130 | } |
131 | } |
131 | } |
- | 132 | ||
- | 133 | /*void strcat(char *to, char *from) //òîæå ðàáîòàåò |
|
- | 134 | { |
|
- | 135 | while(*to) to++; |
|
- | 136 | while(*from) |
|
- | 137 | { |
|
- | 138 | *to = *from; |
|
- | 139 | to++; |
|
- | 140 | from++; |
|
- | 141 | } |
|
- | 142 | *to = '\0'; |
|
- | 143 | }*/ |
|
132 | 144 | ||
133 | dword itoa( ESI) |
145 | dword itoa( ESI) |
134 | { |
146 | { |
135 | unsigned char buffer[11]; |
147 | unsigned char buffer[11]; |
136 | EDI = #buffer; |
148 | EDI = #buffer; |
137 | ECX = 10; |
149 | ECX = 10; |
138 | if (ESI < 0) |
150 | if (ESI < 0) |
139 | { |
151 | { |
140 | $mov al, '-' |
152 | $mov al, '-' |
141 | $stosb |
153 | $stosb |
142 | $neg esi |
154 | $neg esi |
143 | } |
155 | } |
144 | 156 | ||
145 | $mov eax, esi |
157 | $mov eax, esi |
146 | $push -'0' |
158 | $push -'0' |
147 | f2: |
159 | f2: |
148 | $xor edx, edx |
160 | $xor edx, edx |
149 | $div ecx |
161 | $div ecx |
150 | $push edx |
162 | $push edx |
151 | $test eax, eax |
163 | $test eax, eax |
152 | $jnz f2 |
164 | $jnz f2 |
153 | f3: |
165 | f3: |
154 | $pop eax |
166 | $pop eax |
155 | $add al, '0' |
167 | $add al, '0' |
156 | $stosb |
168 | $stosb |
157 | $jnz f3 |
169 | $jnz f3 |
158 | 170 | ||
159 | $mov al, '\0' |
171 | $mov al, '\0' |
160 | $stosb |
172 | $stosb |
161 | 173 | ||
162 | return #buffer; |
174 | return #buffer; |
163 | } |
175 | } |
164 | 176 | ||
165 | 177 | ||
166 | 178 | ||
167 | inline fastcall dword atoi( EDI) |
179 | inline fastcall dword atoi( EDI) |
168 | { |
180 | { |
169 | ESI=EDI; |
181 | ESI=EDI; |
170 | IF(DSBYTE[ESI]=='-')ESI++; |
182 | IF(DSBYTE[ESI]=='-')ESI++; |
171 | EAX=0; |
183 | EAX=0; |
172 | BH=AL; |
184 | BH=AL; |
173 | do{ |
185 | do{ |
174 | BL=DSBYTE[ESI]-'0'; |
186 | BL=DSBYTE[ESI]-'0'; |
175 | EAX=EAX*10+EBX; |
187 | EAX=EAX*10+EBX; |
176 | ESI++; |
188 | ESI++; |
177 | }while(DSBYTE[ESI]>0); |
189 | }while(DSBYTE[ESI]>0); |
178 | IF(DSBYTE[EDI]=='-') -EAX; |
190 | IF(DSBYTE[EDI]=='-') -EAX; |
179 | } |
191 | } |
180 | 192 | ||
181 | 193 | ||
182 | inline fastcall signed int strchr( ESI,BL) |
194 | inline fastcall signed int strchr( ESI,BL) |
183 | { |
195 | { |
184 | int jj=0; |
196 | int jj=0; |
185 | do{ |
197 | do{ |
186 | jj++; |
198 | jj++; |
187 | $lodsb |
199 | $lodsb |
188 | IF(AL==BL) return jj; |
200 | IF(AL==BL) return jj; |
189 | } while(AL!=0); |
201 | } while(AL!=0); |
190 | return 0; |
202 | return 0; |
191 | } |
203 | } |
192 | 204 | ||
193 | 205 | ||
194 | inline fastcall signed int strrchr( ESI,BL) |
206 | inline fastcall signed int strrchr( ESI,BL) |
195 | { |
207 | { |
196 | int jj=0, last=0; |
208 | int jj=0, last=0; |
197 | do{ |
209 | do{ |
198 | jj++; |
210 | jj++; |
199 | $lodsb |
211 | $lodsb |
200 | IF(AL==BL) last=jj; |
212 | IF(AL==BL) last=jj; |
201 | } while(AL!=0); |
213 | } while(AL!=0); |
202 | return last; |
214 | return last; |
203 | } |
215 | } |
204 | 216 | ||
205 | 217 | ||
206 | inline fastcall strupr( ESI) |
218 | inline fastcall strupr( ESI) |
207 | { |
219 | { |
208 | do{ |
220 | do{ |
209 | AL=DSBYTE[ESI]; |
221 | AL=DSBYTE[ESI]; |
210 | IF(AL>='a')IF(AL<='z')DSBYTE[ESI]=AL&0x5f; |
222 | IF(AL>='a')IF(AL<='z')DSBYTE[ESI]=AL&0x5f; |
211 | IF (AL>=160) && (AL<=175) DSBYTE[ESI] = AL - 32; //à-ï |
223 | IF (AL>=160) && (AL<=175) DSBYTE[ESI] = AL - 32; //à-ï |
212 | IF (AL>=224) && (AL<=239) DSBYTE[ESI] = AL - 80; //à-ï |
224 | IF (AL>=224) && (AL<=239) DSBYTE[ESI] = AL - 80; //à-ï |
213 | ESI++; |
225 | ESI++; |
214 | }while(AL!=0); |
226 | }while(AL!=0); |
215 | } |
227 | } |
216 | 228 | ||
217 | inline fastcall strlwr( ESI) |
229 | inline fastcall strlwr( ESI) |
218 | { |
230 | { |
219 | do{ |
231 | do{ |
220 | $LODSB |
232 | $LODSB |
221 | IF(AL>='A')&&(AL<='Z'){ |
233 | IF(AL>='A')&&(AL<='Z'){ |
222 | AL+=0x20; |
234 | AL+=0x20; |
223 | DSBYTE[ESI-1]=AL; |
235 | DSBYTE[ESI-1]=AL; |
224 | CONTINUE; |
236 | CONTINUE; |
225 | } |
237 | } |
226 | }while(AL!=0); |
238 | }while(AL!=0); |
227 | } |
239 | } |
228 | 240 | ||
229 | inline fastcall strttl( EDX) |
241 | inline fastcall strttl( EDX) |
230 | { |
242 | { |
231 | AL=DSBYTE[EDX]; |
243 | AL=DSBYTE[EDX]; |
232 | IF(AL>='a')&&(AL<='z')DSBYTE[EDX]=AL&0x5f; |
244 | IF(AL>='a')&&(AL<='z')DSBYTE[EDX]=AL&0x5f; |
233 | IF (AL>=160) && (AL<=175) DSBYTE[EDX] = AL - 32; //à-ï |
245 | IF (AL>=160) && (AL<=175) DSBYTE[EDX] = AL - 32; //à-ï |
234 | IF (AL>=224) && (AL<=239) DSBYTE[EDX] = AL - 80; //à-ï |
246 | IF (AL>=224) && (AL<=239) DSBYTE[EDX] = AL - 80; //à-ï |
235 | do{ |
247 | do{ |
236 | EDX++; |
248 | EDX++; |
237 | AL=DSBYTE[EDX]; |
249 | AL=DSBYTE[EDX]; |
238 | IF(AL>='A')&&(AL<='Z'){DSBYTE[EDX]=AL|0x20; CONTINUE;} |
250 | IF(AL>='A')&&(AL<='Z'){DSBYTE[EDX]=AL|0x20; CONTINUE;} |
239 | IF(AL>='')&&(AL<='')DSBYTE[EDX]=AL|0x20; // -¯ |
251 | IF(AL>='')&&(AL<='')DSBYTE[EDX]=AL|0x20; // -¯ |
240 | IF (AL>=144) && (AL<=159) DSBYTE[EDX] = AL + 80; //à-ï |
252 | IF (AL>=144) && (AL<=159) DSBYTE[EDX] = AL + 80; //à-ï |
241 | }while(AL!=0); |
253 | }while(AL!=0); |
242 | } |
254 | } |
243 | 255 | ||
244 | 256 | ||
245 | 257 | ||
246 | inline fastcall dword strstr( EBX, EDX) |
258 | inline fastcall dword strstr( EBX, EDX) |
247 | { |
259 | { |
248 | asm { |
260 | asm { |
249 | MOV EDI, EDX |
261 | MOV EDI, EDX |
250 | XOR ECX, ECX |
262 | XOR ECX, ECX |
251 | XOR EAX, EAX |
263 | XOR EAX, EAX |
252 | DEC ECX |
264 | DEC ECX |
253 | REPNE SCASB |
265 | REPNE SCASB |
254 | NOT ECX |
266 | NOT ECX |
255 | DEC ECX |
267 | DEC ECX |
256 | JE LS2 |
268 | JE LS2 |
257 | MOV ESI, ECX |
269 | MOV ESI, ECX |
258 | XOR ECX, ECX |
270 | XOR ECX, ECX |
259 | MOV EDI, EBX |
271 | MOV EDI, EBX |
260 | DEC ECX |
272 | DEC ECX |
261 | REPNE SCASB |
273 | REPNE SCASB |
262 | NOT ECX |
274 | NOT ECX |
263 | SUB ECX, ESI |
275 | SUB ECX, ESI |
264 | JBE LS2 |
276 | JBE LS2 |
265 | MOV EDI, EBX |
277 | MOV EDI, EBX |
266 | LEA EBX, DSDWORD[ ESI-1] |
278 | LEA EBX, DSDWORD[ ESI-1] |
267 | LS1: MOV ESI, EDX |
279 | LS1: MOV ESI, EDX |
268 | LODSB |
280 | LODSB |
269 | REPNE SCASB |
281 | REPNE SCASB |
270 | JNE LS2 |
282 | JNE LS2 |
271 | MOV EAX, ECX |
283 | MOV EAX, ECX |
272 | PUSH EDI |
284 | PUSH EDI |
273 | MOV ECX, EBX |
285 | MOV ECX, EBX |
274 | REPE CMPSB |
286 | REPE CMPSB |
275 | POP EDI |
287 | POP EDI |
276 | MOV ECX, EAX |
288 | MOV ECX, EAX |
277 | JNE LS1 |
289 | JNE LS1 |
278 | LEA EAX, DSDWORD[ EDI-1] |
290 | LEA EAX, DSDWORD[ EDI-1] |
279 | JMP SHORT LS3 |
291 | JMP SHORT LS3 |
280 | LS2: XOR EAX, EAX |
292 | LS2: XOR EAX, EAX |
281 | LS3: |
293 | LS3: |
282 | } |
294 | } |
283 | } |
295 | } |
284 | 296 | ||
285 | 297 | ||
286 | 298 | ||
287 | 299 | ||
288 | /* strtok( LPSTR dest, src, divs); |
300 | /* strtok( LPSTR dest, src, divs); |
289 | src - óêàçàòåëü íà èñõîäíóþ ñòðîêó èëè ðåçóëüòàò ïðåäûäóùåãî âûçîâà |
301 | src - óêàçàòåëü íà èñõîäíóþ ñòðîêó èëè ðåçóëüòàò ïðåäûäóùåãî âûçîâà |
290 | dest - óêàçàòåëü íà áóôåð, êóäà áóäåò ñêîïèðîâàíî ñëîâî |
302 | dest - óêàçàòåëü íà áóôåð, êóäà áóäåò ñêîïèðîâàíî ñëîâî |
291 | divs - óêàçàòåëü íà ñòðîêó, ñîäåðæàùóþ ñèìâîëû-ðàçäåëèòåëè |
303 | divs - óêàçàòåëü íà ñòðîêó, ñîäåðæàùóþ ñèìâîëû-ðàçäåëèòåëè |
292 | Âîçâðàùàåò: 0, åñëè ñëîâ áîëüøå íåò |
304 | Âîçâðàùàåò: 0, åñëè ñëîâ áîëüøå íåò |
293 | íå 0, åñëè ñëîâî ñêîïèðîâàíî â dest (ïåðåäàéòå ýòî çíà÷åíèå |
305 | íå 0, åñëè ñëîâî ñêîïèðîâàíî â dest (ïåðåäàéòå ýòî çíà÷åíèå |
294 | â êà÷åñòâå src äëÿ ïîñëåäóþùåãî ïîèñêà) */ |
306 | â êà÷åñòâå src äëÿ ïîñëåäóþùåãî ïîèñêà) */ |
295 | 307 | ||
296 | inline fastcall dword strtok( EDX, ESI, EBX) |
308 | inline fastcall dword strtok( EDX, ESI, EBX) |
297 | { |
309 | { |
298 | asm { |
310 | asm { |
299 | XOR ECX, ECX |
311 | XOR ECX, ECX |
300 | MOV EDI, EBX |
312 | MOV EDI, EBX |
301 | XOR EAX, EAX |
313 | XOR EAX, EAX |
302 | DEC ECX |
314 | DEC ECX |
303 | REPNE SCASB |
315 | REPNE SCASB |
304 | XOR ECX, 0FFFFFFFFH |
316 | XOR ECX, 0FFFFFFFFH |
305 | DEC ECX |
317 | DEC ECX |
306 | PUSH ECX |
318 | PUSH ECX |
307 | L1: LODSB |
319 | L1: LODSB |
308 | OR AL, AL |
320 | OR AL, AL |
309 | JZ L4 |
321 | JZ L4 |
310 | MOV EDI, EBX |
322 | MOV EDI, EBX |
311 | MOV ECX, SSDWORD[ ESP] |
323 | MOV ECX, SSDWORD[ ESP] |
312 | REPNE SCASB |
324 | REPNE SCASB |
313 | JZ L1 |
325 | JZ L1 |
314 | DEC ESI |
326 | DEC ESI |
315 | L2: LODSB |
327 | L2: LODSB |
316 | MOV EDI, EBX |
328 | MOV EDI, EBX |
317 | MOV ECX, SSDWORD[ ESP] |
329 | MOV ECX, SSDWORD[ ESP] |
318 | REPNE SCASB |
330 | REPNE SCASB |
319 | JZ L3 |
331 | JZ L3 |
320 | MOV DSBYTE[ EDX], AL |
332 | MOV DSBYTE[ EDX], AL |
321 | INC EDX |
333 | INC EDX |
322 | JMP SHORT L2 |
334 | JMP SHORT L2 |
323 | L3: MOV EAX, ESI |
335 | L3: MOV EAX, ESI |
324 | L4: POP ECX |
336 | L4: POP ECX |
325 | } DSBYTE[ EDX] = 0; |
337 | } DSBYTE[ EDX] = 0; |
326 | } |
338 | } |
327 | 339 | ||
328 | #define strncpy strcpyn |
340 | #define strncpy strcpyn |
329 | #define strnmov strmovn |
341 | #define strnmov strmovn |
330 | #define stricmp strcmpi |
342 | #define stricmp strcmpi |
331 | #define strcmpn strncmp |
343 | #define strcmpn strncmp |
332 | #define strncmpi strcmpni |
344 | #define strncmpi strcmpni |
333 | #define stricmpn strcmpni |
345 | #define stricmpn strcmpni |
334 | #define strnicmp strcmpni |
346 | #define strnicmp strcmpni |
335 | #define strincmp strcmpni |
347 | #define strincmp strcmpni |
336 | #define strcmpin strcmpni=159)>='')DSBYTE[EDX]=AL|0x20;>='Z'){DSBYTE[EDX]=AL|0x20;>=239)>=175)>='z')DSBYTE[EDX]=AL&0x5f; |
348 | #define strcmpin strcmpni=159)>='')DSBYTE[EDX]=AL|0x20;>='Z'){DSBYTE[EDX]=AL|0x20;>=239)>=175)>='z')DSBYTE[EDX]=AL&0x5f; |
337 | >='Z'){ |
349 | >='Z'){ |
338 | >=239)>=175)>='z')DSBYTE[ESI]=AL&0x5f; |
350 | >=239)>=175)>='z')DSBYTE[ESI]=AL&0x5f; |
339 | >>='z')AH-=0x20; |
351 | >>='z')AH-=0x20; |
340 | >='z')AL-=0x20; |
352 | >='z')AL-=0x20; |
341 | >='z')BL-=0x20; |
353 | >='z')BL-=0x20; |
342 | >='z')AL-=0x20; |
354 | >='z')AL-=0x20; |
343 | > |
355 | > |