[<<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