MOVS             Move String (Byte or Word)          Flags: not altered

MOVS destination-string,source-string

Logic:    (ES:DI)   (DS:SI)
if DF = 0
SI   SI + n         ; n = 1 for byte, 2 for word scan
DI   DI + n
else
SI   SI - n
DI   DI - n

This instruction copies the byte or word pointed to by DS:SI, into the
location pointed to by ES:DI. After the move, SI and DI are
incremented (if the direction flag is cleared) or decremented (if the
direction flag is set), to point to the next element of the string.

                                                                          
Operands                  Clocks   Transfers  Bytes   Example
                        byte(word)
dest,source               18(26)       2        1     MOVS WORD_BUFF,INPUT
(repeat) dest,source   9+17(25)/rep  2/rep      1     REP MOVSW
                                                                          

Note:          This instruction is always translated by the
assembler into either MOVSB, Move String Byte; or
MOVSW, Move String Word, depending upon whether
source-string refers to a string of bytes or words.
In either case, you must explicitly load the SI and
DI registers with the offset of the source and
destination strings.

                                 Example                                  

Assuming BUFFER1 as been defined somewhere as:

BUFFFER1        DB      100 DUP (?)

the following example moves 100 bytes from BUFFER1 to BUFFER2:

CLD                     ;Move in the forward direction
LEA     SI, BUFFER1     ;Source address to SI
LEA     DI, BUFFER2     ;Destination address to DI
MOV     CX,100          ;CX is used by the REP prefix
REP     MOVS    BUFFER2, BUFFER1 ;    ...and MOVS it.

See also: MOV
See also: MOVSB
See also: MOVSW
See also: CMPS
See also: LODS
See also: SCAS
See also: STOS
See also: REP
See also: CLD
See also: STD

MOVS Move String (Byte or Word)