Retro video games delivered to your door every month!
Click above to get retro games delivered to your door ever month!
X-Hacker.org- Assembly Language - <b>lods load string (byte or word) flags: not altered</b> http://www.X-Hacker.org [<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
LODS             Load String (Byte or Word)          Flags: not altered

LODS source-str

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

    LODS transfers the value (word or byte) pointed to by DS:SI into AX or
    AL.  It also increments or decrements SI (depending on the state of
    the Direction Flag) to point to the next element.

  --------------------------------------------------------------------------
   Operands                  Clocks   Transfers  Bytes   Example
                           byte(word)
   source-str                12(16)       -        1     LODS LIST
   (repeat) source-str    9+13(17)/rep  1/rep      1     REP LODS LIST
  --------------------------------------------------------------------------

       Notes:         This instruction is always translated by the
                      assembler into either LODSB, Load String Byte, or
                      LODSW, Load String Word, depending upon whether
                      source-str refers to a string of bytes or words. In
                      either case, however, you must explicitly load the
                      SI register with the offset of the string.

                      Although it is legal to repeat this instruction, it
                      is almost never done since doing so would
                      continually overwrite the value in AL.

  -------------------------------- Example ---------------------------------

    The following example sends the eight bytes at INIT_PORT to port 250.
    (Don't try this on your machine, unless you know what's hanging off
    port 250.)

  INIT_PORT:
          DB      '$CMD0000'      ;The string we want to send
                  .
                  .
          CLD                     ;Move forward through string at INIT_PORT
          LEA     SI,INIT_PORT    ;SI gets starting address of string
          MOV     CX,8            ;CX is counter for LOOP instruction
  AGAIN:  LODS    INIT_PORT       ;"INIT_PORT" is needed only by the
          OUT     250,AL          ;  assembler, for determining word or byte
          LOOP    AGAIN

See Also: LODSB LODSW CMPS MOVS SCAS STOS REP CLD

Online resources provided by: http://www.X-Hacker.org --- NG 2 HTML conversion by Dave Pearson