[<<Previous Entry]
[^^Up^^]
[Next Entry>>]
[Menu]
[About The Guide]
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
MOVSB
MOVSW
CMPS
LODS
SCAS
STOS
REP
CLD
STD
This page created by ng2html v1.05, the Norton guide to HTML conversion utility.
Written by Dave Pearson