I never learn C language so it makes me confuse. I just like to know if I did it correctly or where I need to improve. For this code I used assembly x86 32 bit. Thanks
This is what I supposed to do: Write a procedure with the signature
char *strchar(char *s1, char c1)
that returns a pointer to the first occurrence of the character c1 within the string s1 or, if not found, returns a null.
This is what I came out with:
strchar   (char*, char):  
push      ebp
mov       ebp,        esp
mov       dword       ptr     [ebp-24], edi
mov       EAX ,       esi
mov       BYTE PTR            [ebp-28], al
.L5:
mov       EAX ,       dword   ptr  [ebp-24]
movzx     EAX ,       byte ptr  [ EAX ]
test      AL, AL
je .L2
mov      EAX , dword PTR [ebp-24]
movzx   EAX , BYTE PTR [ EAX ]
cmp            BYTE PTR  [ebp-28], al
jne .L3
mov eax,      dword PTR [ebp-24]
jmp .L6
.L3:
add dword PTR [ebp-24], 1
jmp .L5
.L2:
LEA eax, [ebp-9]
MOV  DWORD PTR [EBP-8], eax
MOV  EAX, DWORD PTR [ebp-8]
.L6:    
POP EBP
RET
 
     
     
    