MOVSB            Move String Byte                    Flags: not altered


Logic:    (ES:DI)   (DS:SI)
if DF = 0
SI   SI + 1
DI   DI + 1
SI   SI - 1
DI   DI - 1

This instruction copies the byte 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 byte.

Operands                  Clocks   Transfers  Bytes   Example
-                        18         2        1     MOVSB
(repeat)                 9+17/rep    2/rep      1     REP MOVSB


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     MOVSB                   ;    ...and move it.

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

MOVSB Move String Byte