用汇编实现memcpy函数

1.定义变量

       ;申请一块栈内存
       sub esp,20
       ;初始化一段字符串
       mov byte ptr[ebp-22],31h
       mov byte ptr[ebp-21],32h
       mov byte ptr[ebp-20],33h
       mov byte ptr[ebp-19],34h
       mov byte ptr[ebp-18],35h
       mov byte ptr[ebp-17],36h
       mov byte ptr[ebp-16],37h
       mov byte ptr[ebp-15],38h
       mov byte ptr[ebp-14],39h
       mov byte ptr[ebp-13],0

2.调用函数

       ;压入参数
       push 10
       ;lea eax,text
       lea eax,[ebp-22]
       push eax
       lea eax,[ebp-32]
       push eax
       ;跳转函数
       call memcpy
       invoke printf,ADDR format3,ADDR byte ptr[ebp-32] ;调用printf函数

3.memcpy函数实现

memcpy:
        push ebp
        mov  ebp,esp

        mov eax,dword ptr[ebp+8]
        mov ebx,dword ptr[ebp+12]
        mov ecx,dword ptr[ebp+16]
        
jm2:
        sub ecx,1
        cmp ecx,0
        ;如果ecx小于0则跳转
        jl jg1
        mov dl,byte ptr[ebx]
        mov byte ptr[eax],dl
        add eax,1
        add ebx,1
        jmp jm2
jg1: 
        mov eax,dword ptr[ebp+8]
        mov esp,ebp
        pop ebp
        ret

你可能感兴趣的:(汇编,基础代码,c++基础,汇编,开源,c语言,c++,单片机)