参考:linux 内核0.11 /include/sys/string.h
1. 将一个字符串(src)拷贝到另一个字符串(dest),直到遇到NULL 字符后停止。
char *strcpy (char *dest, const char *src)

...{
_asm

...{
pushf
mov esi,src
mov edi,dest
cld
l1: lodsb
stosb
test al,al
jne l1
popf
}
return dest;
}


2.拷贝源字符串count 个字节到目的字符串。
char *strncpy (char *dest, const char *src, int count)

...{

_asm...{
pushf
mov esi,src
mov edi,dest
mov ecx,count
cld
l1: dec ecx
js l2
lodsb
stosb
test al,al
jne l1
rep stosb
l2: popf
}
return dest;
}

3.将源字符串拷贝到目的字符串的末尾处。
char *strcat (char *dest, const char *src)

...{

_asm ...{
pushf
mov esi,src
mov edi,dest
xor al,al
mov ecx,0xffffffff
cld // 清方向位。
repne scasb
dec edi
l1: lodsb
stosb
test al,al
jne l1
popf
}
return dest;
}

4.将源字符串的count 个字节复制到目的字符串的末尾处,最后添一空字符。
char *strncat (char *dest, const char *src, int count)

...{

_asm ...{
pushf
mov esi,src
mov edi,dest
xor al,al
mov ecx,0xffffffff
cld
repne scasb
dec edi
mov ecx,count
l1: dec ecx
js l2
lodsb
stosb
test al,al
jne l1
l2: xor al,al
stosb
popf
}
return dest;
}

5. 将一个字符串与另一个字符串进行比较。
int strcmp (const char *csrc, const char *ct)

...{

_asm...{
pushf
mov edi,csrc
mov esi,ct
cld
l1: lodsb
scasb
jne l2
test al,al
jne l1
xor eax,eax
jmp l3
l2: mov eax,1
jl l3
neg eax
l3: popf
}
}