# _strnlen() Author: Kees J. Bot 1 Jan 1994 # size_t _strnlen(const char *s, size_t ecx) # Return the length of a string. .intel_syntax .globl __strnlen .text .align 16 __strnlen: push ebp mov ebp, esp push edi mov edi, [ebp+8] # edi = string xorb al, al # Look for a zero byte mov edx, ecx # Save maximum count cmpb cl, 1 # 'Z' bit must be clear if ecx = 0 cld repne scasb # Look for zero jne no0 inc ecx # Don't count zero byte no0: mov eax, edx sub eax, ecx # Compute bytes scanned pop edi pop ebp ret