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
|
section .text
global my_strcmp
my_strcmp:
mov ebx, [esp+4] ;chaine 1
test ebx, ebx ;je test si ebx != NULL
jz pointeurInvalide
mov ecx, [esp + 8] ;chaine 2
test ecx, ecx ;je test si ebx != NULL
jz pointeurInvalide
mov edx, -1
boucle:
inc edx
cmp byte[ebx+edx], 0
je pointeurInvalide
cmp byte[ecx+edx], 0
je pointeurInvalide
mov al, byte[ecx+edx]
cmp byte[ebx+edx], al
je boucle
xor eax, eax
sub al, byte[ecx+edx]
cmp eax, 0
jnl ret1
jmp ret2
find:
pointeurInvalide:
xor eax, eax
ret
ret1:
mov eax, 1
ret
ret2:
mov eax, -1
ret |
Partager