Rev 3081 | Rev 3114 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 3081 | Rev 3107 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | //------------------------------------------------------------------------------ |
1 | //------------------------------------------------------------------------------ |
2 | // strcmp( ESI, EDI) |
2 | // strcmp( ESI, EDI) |
3 | // strlen( EDI) |
3 | // strlen( EDI) |
4 | // strcpy( EDI, ESI) |
4 | // strcpy( EDI, ESI) --- 0 if == |
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) --- kyrillic symbols may not work |
13 | // strttl( EDX) |
13 | // strttl( EDX) |
14 | // strtok( ESI) |
14 | // strtok( ESI) |
- | 15 | // strcpyb(dword searchin, copyin, startstr, endstr) --- copy string between strings |
|
- | 16 | //chrnum(dword searchin, char symbol) --- count of symbol in string |
|
15 | //------------------------------------------------------------------------------ |
17 | //------------------------------------------------------------------------------ |
Line 16... | Line 18... | ||
16 | 18 | ||
17 | inline fastcall signed int strcmp( ESI, EDI) |
19 | inline fastcall signed int strcmp( ESI, EDI) |
18 | { |
20 | { |
Line 47... | Line 49... | ||
47 | L1: |
49 | L1: |
48 | } |
50 | } |
49 | } |
51 | } |
Line 50... | Line -... | ||
50 | - | ||
51 | - | ||
52 | - | ||
53 | /* |
- | |
54 | - | ||
55 | inline fastcall signed int strcmpi( ESI,EDI) |
- | |
56 | uses EBX |
- | |
57 | { |
- | |
58 | do{ |
- | |
59 | $lodsb |
- | |
60 | IF(AL>='a')&&(AL<='z')AL-=0x20; |
- | |
61 | BL=DSBYTE[(E)DI]; |
- | |
62 | IF(BL>='a')&&(BL<='z')BL-=0x20; |
- | |
63 | AL-=BL; |
- | |
64 | IF(!ZEROFLAG)BREAK; |
- | |
65 | (E)DI++; |
- | |
66 | }while(BL!=0); |
- | |
67 | } |
- | |
68 | - | ||
69 | inline char STRNCMPI((E)SI,(E)DI,(E)CX) |
- | |
70 | { |
- | |
71 | (E)AX=0; |
- | |
72 | LOOPNZ((E)CX){ |
- | |
73 | $lodsb |
- | |
74 | IF(AL>='a')&&(AL<='z')AL-=0x20; |
- | |
75 | AH=DSBYTE[EDI]; |
- | |
76 | IF(AH>='a')&&(AH<='z')AH-=0x20; |
- | |
77 | EDI++; |
- | |
78 | IF(AL==0)||(AH==0)||(AL!=AH)BREAK; |
- | |
79 | } |
- | |
80 | AL=AL-AH; |
- | |
81 | }*/ |
- | |
82 | - | ||
83 | 52 | ||
84 | 53 | ||
85 | inline fastcall unsigned int strlen( EDI) |
54 | inline fastcall unsigned int strlen( EDI) |
86 | { |
55 | { |
87 | $xor eax, eax |
56 | $xor eax, eax |
Line 92... | Line 61... | ||
92 | 61 | ||
93 | 62 | ||
94 | inline fastcall strcpy( EDI, ESI) |
63 | inline fastcall strcpy( EDI, ESI) |
95 | { |
64 | { |
96 | $cld |
65 | $cld |
97 | l2: |
66 | L2: |
98 | $lodsb |
67 | $lodsb |
99 | $stosb |
68 | $stosb |
100 | $test al,al |
69 | $test al,al |
Line 101... | Line 70... | ||
101 | $jnz l2 |
70 | $jnz L2 |
102 | } |
71 | } |
Line 154... | Line 123... | ||
154 | $neg esi |
123 | $neg esi |
155 | } |
124 | } |
Line 156... | Line 125... | ||
156 | 125 | ||
157 | $mov eax, esi |
126 | $mov eax, esi |
158 | $push -'0' |
127 | $push -'0' |
159 | f2: |
128 | F2: |
160 | $xor edx, edx |
129 | $xor edx, edx |
161 | $div ecx |
130 | $div ecx |
162 | $push edx |
131 | $push edx |
163 | $test eax, eax |
132 | $test eax, eax |
164 | $jnz f2 |
133 | $jnz F2 |
165 | f3: |
134 | F3: |
166 | $pop eax |
135 | $pop eax |
167 | $add al, '0' |
136 | $add al, '0' |
168 | $stosb |
137 | $stosb |
Line 169... | Line 138... | ||
169 | $jnz f3 |
138 | $jnz F3 |
170 | 139 | ||
Line 171... | Line 140... | ||
171 | $mov al, '\0' |
140 | $mov al, '\0' |
Line 184... | Line 153... | ||
184 | BH=AL; |
153 | BH=AL; |
185 | do{ |
154 | do{ |
186 | BL=DSBYTE[ESI]-'0'; |
155 | BL=DSBYTE[ESI]-'0'; |
187 | EAX=EAX*10+EBX; |
156 | EAX=EAX*10+EBX; |
188 | ESI++; |
157 | ESI++; |
189 | }while(DSBYTE[ESI]>0); |
158 | }while(DSBYTE[ESI]>='0'); |
190 | IF(DSBYTE[EDI]=='-') -EAX; |
159 | IF(DSBYTE[EDI]=='-') -EAX; |
191 | } |
160 | } |
Line 192... | Line 161... | ||
192 | 161 | ||
Line 292... | Line 261... | ||
292 | LS2: XOR EAX, EAX |
261 | LS2: XOR EAX, EAX |
293 | LS3: |
262 | LS3: |
294 | } |
263 | } |
295 | } |
264 | } |
Line -... | Line 265... | ||
- | 265 | ||
- | 266 | // |
|
- | 267 | void strcpyb(dword searchin, copyin, startstr, endstr) |
|
- | 268 | { |
|
- | 269 | dword startp, endp; |
|
- | 270 | startp = strstr(searchin, startstr) + strlen(startstr); |
|
- | 271 | endp = strstr(startp, endstr); |
|
- | 272 | if (startp==endp) return; |
|
- | 273 | do |
|
- | 274 | { |
|
- | 275 | DSBYTE[copyin] = DSBYTE[startp]; |
|
- | 276 | copyin++; |
|
- | 277 | startp++; |
|
- | 278 | } |
|
- | 279 | while (startp |
|
- | 280 | DSBYTE[copyin] = '\0'; |
|
- | 281 | } |
|
- | 282 | ||
- | 283 | int chrnum(dword searchin, char symbol) |
|
- | 284 | { |
|
- | 285 | int num = 0; |
|
- | 286 | while(DSBYTE[searchin]) |
|
- | 287 | { |
|
- | 288 | if (DSBYTE[searchin] == symbol) num++; |
|
- | 289 | searchin++; |
|
- | 290 | } |
|
- | 291 | return num; |
|
- | 292 | } |
|
Line 296... | Line 293... | ||
296 | 293 | ||
297 | 294 |