Subversion Repositories Kolibri OS

Rev

Rev 2839 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2839 Rev 2844
Line 4... Line 4...
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
//
9
// itoa( ESI)
10
// IntToStr( ESI)
10
// atoi( EAX)
11
// StrToInt()
11
// strupr( ESI)
12
// upcase( ESI)
12
// strlwr( ESI)
13
// lowcase( ESI)
13
// strtok( ESI)
14
//------------------------------------------------------------------------------
14
//------------------------------------------------------------------------------
Line 15... Line 15...
15
 
15
 
16
 
16
 
Line 61... Line 61...
61
    mov eax, ebx
61
    mov eax, ebx
62
	}
62
	}
63
}
63
}
Line 64... Line 64...
64
 
64
 
65
char buffer[11];
65
char buffer[11];
66
inline fastcall dword IntToStr( ESI)
66
inline fastcall dword itoa( ESI)
67
{
67
{
68
     $mov     edi, #buffer
68
     $mov     edi, #buffer
69
     $mov     ecx, 10
69
     $mov     ecx, 10
70
     $test     esi, esi
70
     $test     esi, esi
Line 89... Line 89...
89
     $mov     eax, #buffer
89
     $mov     eax, #buffer
90
     $ret
90
     $ret
91
} 
91
} 
Line 92... Line 92...
92
 
92
 
93
 
93
 
94
inline fastcall dword StrToInt()
94
inline fastcall dword atoi( EDI)
-
 
95
{
95
{
96
	//ESI=EDI=EAX;
96
	ESI=EDI=EAX;
97
	ESI=EDI;
97
	IF(DSBYTE[ESI]=='-')ESI++;
98
	IF(DSBYTE[ESI]=='-')ESI++;
98
	EAX=0;
99
	EAX=0;
99
	BH=AL;
100
	BH=AL;
Line 139... Line 140...
139
	} while(AL!=0);
140
	} while(AL!=0);
140
	return last;
141
	return last;
141
}
142
}
Line 142... Line 143...
142
 
143
 
143
 
144
 
144
inline fastcall upcase( ESI)
145
inline fastcall strupr( ESI)
145
{
146
{
146
	do{
147
	do{
147
		AL=DSBYTE[ESI];
148
		AL=DSBYTE[ESI];
148
		IF(AL>='a')IF(AL<='z')DSBYTE[ESI]=AL&0x5f;
149
		IF(AL>='a')IF(AL<='z')DSBYTE[ESI]=AL&0x5f;
149
 		ESI++;
150
 		ESI++;
Line 150... Line 151...
150
	}while(AL!=0);
151
	}while(AL!=0);
151
}
152
}
152
 
153
 
153
inline fastcall lowcase( ESI)
154
inline fastcall strlwr( ESI)
154
{
155
{
155
	do{
156
	do{
Line 199... Line 200...
199
    jmp short ls3
200
    jmp short ls3
200
ls2: xor eax, eax
201
ls2: xor eax, eax
201
ls3:
202
ls3:
202
  }
203
  }
203
}
204
}
204
>
205
 
-
 
206
/* strtok( LPSTR dest, src, divs);
-
 
207
src - óêàçàòåëü íà èñõîäíóþ ñòðîêó èëè ðåçóëüòàò ïðåäûäóùåãî âûçîâà
-
 
208
dest - óêàçàòåëü íà áóôåð, êóäà áóäåò ñêîïèðîâàíî ñëîâî
-
 
209
divs - óêàçàòåëü íà ñòðîêó, ñîäåðæàùóþ ñèìâîëû-ðàçäåëèòåëè
-
 
210
Âîçâðàùàåò: 0, åñëè ñëîâ áîëüøå íåò
-
 
211
         íå 0, åñëè ñëîâî ñêîïèðîâàíî â dest (ïåðåäàéòå ýòî çíà÷åíèå
-
 
212
               â êà÷åñòâå src äëÿ ïîñëåäóþùåãî ïîèñêà) */
-
 
213
 
-
 
214
dword fastcall strtok( EDX, ESI, EBX)
-
 
215
{
-
 
216
  asm {
-
 
217
    XOR ECX, ECX
-
 
218
    MOV EDI, EBX
-
 
219
    XOR EAX, EAX
-
 
220
    DEC ECX
-
 
221
    REPNE SCASB
-
 
222
    XOR ECX, 0FFFFFFFFH
-
 
223
    DEC ECX
-
 
224
    PUSH ECX
-
 
225
L1: LODSB
-
 
226
    OR AL, AL
-
 
227
    JZ L4
-
 
228
    MOV EDI, EBX
-
 
229
    MOV ECX, SSDWORD[ ESP]
-
 
230
    REPNE SCASB
-
 
231
    JZ L1
-
 
232
    DEC ESI
-
 
233
L2: LODSB
-
 
234
    MOV EDI, EBX
-
 
235
    MOV ECX, SSDWORD[ ESP]
-
 
236
    REPNE SCASB
-
 
237
    JZ L3
-
 
238
    MOV DSBYTE[ EDX], AL
-
 
239
    INC EDX
-
 
240
    JMP SHORT L2
-
 
241
L3: MOV EAX, ESI
-
 
242
L4: POP ECX
-
 
243
  } DSBYTE[ EDX] = 0;
-
 
244
}
-
 
245
>