Metropoli BBS
VIEWER: memmove.asm MODE: TEXT (ASCII)
.386p
locals

public  MEMMOVE

_TEXT           segment byte public use32 'CODE'
assume  cs:_TEXT

MEMMOVE:
        push esi edi

        mov edi,[esp+4+8+08h]
        mov esi,[esp+4+8+04h]
        mov ecx,[esp+4+8+00h]

        mov edx,ecx
        cmp edi,esi
        jb short @@01
        jz short @@00

        std
        lea esi,[esi+ecx-001h]
        lea edi,[edi+ecx-001h]
        and ecx,3
        rep movsb
        mov ecx,edx
        shr ecx,2
        sub edi,3
        sub esi,3
        rep movsd
        cld
        jmp short @@00

@@01:
        cld
        shr ecx,2
        rep movsd
        mov ecx,edx
        and ecx,3
        rep movsb

@@00:
        mov eax,[esp+4+8+08h]
        pop edi esi
        ret 0ch

_TEXT           ends
end

[ RETURN TO DIRECTORY ]