C++ 字符串拷贝 汇编代码实现

时间:2022-10-13 01:00:43

void asmCpy(char* str1, char* str2)

{

    _asm{

        mov eax, str1//将str1的地址赋值给eax

        mov ecx, str2//将str2的地址赋值给ecx

s1:

        mov bl, [eax]//去eax地址所指向的值,赋值给bl

        cmp [eax], 0//比较当前这个字符是不是NULL

        je end1//如果是NULL,就是字符串结束了,跳转到end1

//如果不是,则继续下面的代码

        mov [ecx], bl//将bl里面的值赋值给ecx所指向的内存

        add eax, 1// eax的地址值增加1

        add ecx, 1// ecx的地址值增加1

        jmp s1// 跳到前面的循环

end1:

        mov [ecx], 0//给最后一个字符设置成NULL

    }

}