LODSW            Load String Word                    Flags: not altered


Logic:    AX   (DS:SI)
if DF = 0
SI   SI + 2
SI   SI - 2

LODSW transfers the word pointed to by DS:SI into AX and increments or
decrements SI (depending on the state of the Direction Flag) to point
to the next word of the string.

Operands                  Clocks   Transfers  Bytes   Example
-                        16         -        1     LODSW
(repeat)                 9+17/rep    1/rep      1     REP LODSW

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


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.)

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, 4           ;Moving 4 words (8 bytes)
AGAIN:  LODSW                   ;Load a word into AX...
OUT     250,AX          ;   ...and output it to the port.

See also: LODS
See also: LODSB
See also: CMPS
See also: MOVS
See also: SCAS
See also: STOS
See also: REP
See also: CLD
See also: STD

LODSW Load String Word