将变量的值复制到另一个?

时间:2013-06-23 23:38:48

标签: string assembly x86

我有两个变量,我需要将值从string1移动到string2。

string1 DB 20, 22 dup('?')
string2 DB 20, 22 dup('?')

我知道如何使用寄存器(si)和循环来完成此操作,例如:

LEA si, string1
LEA di, string2
mov cx, 5
change:
mov ax, [si]
mov [di], ax
loop change

我想知道是否有更短的方法。

1 个答案:

答案 0 :(得分:1)

您正在寻找的是REP(重复)和MOVSB(* MOV * e * S * tring的助记符* * YTE)。

示例:

lea     si,[string1] ;si points to string1
lea     di,[string2] ;di points to string2
mov     cx,5         ;number of bytes in string1
rep     movsb        ;copy the string

另见:

MOVSW (Move String Word - Copies 2 bytes at a time)
MOVSD (Move String DWord - Copies 4 bytees at a time)