MoveMemory, 在Windows.pas单元中是这样的{$EXTERNALSYM CopyMemory}
procedure CopyMemory(Destination: Pointer; Source: Pointer; Length: DWORD);
begin
  Move(Source^, Destination^, Length);
end;
而move,在system中是这样的:
procedure       Move( const Source; var Dest; count : Integer );
asm
{     ->EAX     Pointer to source       }
{       EDX     Pointer to destination  }
{       ECX     Count                   }        PUSH    ESI
        PUSH    EDI        MOV     ESI,EAX
        MOV     EDI,EDX        MOV     EAX,ECX        CMP     EDI,ESI
        JA      @@down
        JE      @@exit        SAR     ECX,2           { copy count DIV 4 dwords       }
        JS      @@exit        REP     MOVSD        MOV     ECX,EAX
        AND     ECX,03H
        REP     MOVSB           { copy count MOD 4 bytes        }
        JMP     @@exit@@down:
        LEA     ESI,[ESI+ECX-4] { point ESI to last dword of source     }
        LEA     EDI,[EDI+ECX-4] { point EDI to last dword of dest       }        SAR     ECX,2           { copy count DIV 4 dwords       }
        JS      @@exit
        STD
        REP     MOVSD        MOV     ECX,EAX
        AND     ECX,03H         { copy count MOD 4 bytes        }
        ADD     ESI,4-1         { point to last byte of rest    }
        ADD     EDI,4-1
        REP     MOVSB
        CLD
@@exit:
        POP     EDI
        POP     ESI
end;
我想这就是copymemory为什么一次只能移动一个值的原因。