| |
Move String
86/88 |
Y |
186 |
Y |
286 |
Y |
386 |
Y |
486 |
Y |
MOVS/MOVSB/MOVSW/MOVSD dest, source |
Ovfl |
N |
Dir |
N |
Int |
N |
Trap |
N |
Sign |
N |
Zero |
N |
Aux |
N |
Prty |
N |
Carry |
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.
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.
------------------------------------ Timing ----------------------------------
OpCode Instruction 386 286 86
A4 MOVS m8, m8 7 5 18
A5 MOVS m16, m16 7 5 18
A5 MOVS m32, m32 7
A4 MOVSB 7 5 18
A5 MOVSW 7 5 18
A5 MOVSD 7
------------------------------------ Logic -----------------------------------
(ES:DI) = (DS:SI)
If DF = 0 then
SI = SI + n
DI = DI + n
else
SI = SI - n
DI = DI - n
See Also MOV CMPS LODS SCAS STOS REP REPE REPNE CLD STD MOVSX |