strlen(char*)
strlen:
push ebp
mov ebp,esp
cld
mov edi,[ebp + 8]
mov al,0
mov ecx,0xFFFFFFFF
L1:
inc ecx
scasb
jnz L1
mov eax,ecx
pop ebp
retn 4
strcpy(char* dest, char* source);
strcpy:
push ebp
mov ebp,esp
push esi
push edi
cld
mov esi,[ebp + 12]
mov edi,[ebp + 8]
@1:
movsb
cmp byte[esi],0
jnz @1
pop edi
pop esi
pop ebp
retn 8
strncpy(char* dest, char* source, int bytes_a_copiar)
strncpy:
push ebp
mov ebp,esp
push esi
push edi
push ecx
mov ecx,[ebp + 16]
mov esi,[ebp + 12]
mov edi,[ebp + 8]
repnz movsb
pop ecx
pop edi
pop esi
pop ebp
retn 12
otra funcion chapucera mas..
strrev(char*)
strrev:
push ebp
mov ebp,esp
push edi
mov edi,[ebp + 8]
push edi
call strlen
xor ecx,ecx
dec eax
jmp LL1
LL0:
dec eax
inc ecx
cmp ecx,eax
jge LL2
LL1:
mov dl,byte[edi + ecx]
xchg byte[edi + eax],dl
mov byte[edi + ecx],dl
jmp LL0
LL2:
pop edi
pop ebp
retn 4
itoa(char* buff, int numero)
itoa:
push ebp
mov ebp,esp
pushad
mov edi,[ebp + 8]
mov eax,[ebp + 12]
mov ebx,10
L@@1:
xor edx,edx
div ebx
xchg eax,edx
or eax,48
stosb
mov eax,edx
cmp eax,0
jnz L@@1
inc edi
mov byte[edi],al
push dword[ebp + 8]
call strrev
popad
pop ebp
retn 8
strcat(char* destino, char* source)
strcat:
push ebp
mov ebp,esp
push esi
push edi
mov esi,[ebp + 12]
mov edi,[ebp + 8]
mov al,0
repnz scasb
dec edi
@a:
movsb
cmp byte[esi],al
jnz @a
mov byte[esi],al
pop edi
pop esi
pop ebp
retn 8
toUpper(char*)
toUpper:
push ebp
mov ebp,esp
mov esi,[ebp + 8]
begin:
lodsb
cmp al,0
je endx
sub al,0x61
cmp al,0x1A
ja incr
and byte[esi-1],0xDF
incr:
jmp begin
endx:
pop ebp
retn 4
toLower(char*)
toLower:
push ebp
mov ebp,esp
mov esi,[ebp + 8]
beginL:
lodsb
cmp al,0
je endxL
sub al,0x41
cmp al,0x1A
ja incrL
or byte[esi-1],0x20
incrL:
jmp beginL
endxL:
pop ebp
retn 4