;**************************************** ;* input: esi = pointer to string * ;* output: ecx = length of the string * ;**************************************** strlen: push eax esi xor ecx, ecx @@: lodsb or al, al jz @f inc ecx jmp @b @@: pop esi eax ret ;************************************************* ;* input: esi = pointer to the src string * ;* edi = pointer to the dest string * ;* ecx = number of bytes to copy * ;************************************************* strncpy: push eax ecx esi edi @@: lodsb stosb or al, al jz @f dec ecx jz @f jmp @b @@: pop edi esi ecx eax ret ;************************************************* ;* input: esi = pointer to the src string * ;* edi = pointer to the dest string * ;************************************************* strcpy: push esi edi rep movsb pop edi esi ret ;************************************************* ;* input: esi = pointer to the src string * ;* edi = pointer to the dest string * ;************************************************* strcat: push esi call strlen add esi, ecx call strcpy pop esi ret ;************************************************* ;* input: esi = pointer to the src string * ;* edi = pointer to the dest string * ;* ecx = number of bytes to copy * ;************************************************* strncat: push edi push ecx esi mov esi, edi call strlen add edi, ecx pop esi ecx call strncpy pop edi ret ;************************************************* ;* input: edi = pointer to the dest string * ;* al = byte to set the string to * ;************************************************* ;strset: ; push edi ; rep stosb ; pop edi ; ret ;************************************************* ;* input: edi = pointer to the dest string * ;* al = byte to set the string to * ;* ecx = number of bytes to set * ;************************************************* strnset: push edi ecx repe stosb pop ecx edi ret