void *__memcpy(void *src, void *dest, int n)
{
__asm
{
mov eax, 0
mov esi, dword ptr[src]
mov edi, dword ptr[dest]
cmp esi, 0
jz next
cmp edi, 0
jz next
mov ecx, n
rep movsb
mov eax, dword ptr[dest]
next:
//NEXT
}
}
char *__strcpy(const char *src, char *dest)
{
__asm
{
cld
or ecx, 0xffffffff
mov edi, dword ptr[src]
cmp edi, 0
jz _ret
repnz scasb /*查看edi中的字符*/
not ecx /*得到字符个数,要-1, 为真正个数*/
sub ecx, 1
mov esi, dword ptr[src]
mov edi, dword ptr[dest]
cmp edi, 0
jz _ret
rep movsb
mov eax, dword ptr[dest]
_ret:
}
}