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

Seealso:



This page last updated on Fri Nov 30 10:49:50 MSK 2001
Copyright © 1992-2001, Vitaly Filatov, Moscow, Russia
Webmaster