<<<    Index    >>>
3-369
INSTRUCTION SET REFERENCE
LODS/LODSB/LODSW/LODSD—Load String
Description
These instructions load a byte, word, or doubleword from the source operand into the AL, AX,
or EAX register, respectively. The source operand is a memory location, the address of which is
read from the DS:EDI or the DS:SI registers (depending on the address-size attribute of the
instruction, 32 or 16, respectively). The DS segment may be overridden with a segment override
prefix.
At the assembly-code level, two forms of this instruction are allowed: the “explicit-operands”
form and the “no-operands” form. The explicit-operands form (specified with the LODS
mnemonic) allows the source operand to be specified explicitly. Here, the source operand should
be a symbol that indicates the size and location of the source value. The destination operand is
then automatically selected to match the size of the source operand (the AL register for byte
operands, AX for word operands, and EAX for doubleword operands). This explicit-operands
form is provided to allow documentation; however, note that the documentation provided by this
form can be misleading. That is, the source operand symbol must specify the correct type (size)
of the operand (byte, word, or doubleword), but it does not have to specify the correct location.
The location is always specified by the DS:(E)SI registers, which must be loaded correctly
before the load string instruction is executed.
The no-operands form provides “short forms” of the byte, word, and doubleword versions of the
LODS instructions. Here also DS:(E)SI is assumed to be the source operand and the AL, AX, or
EAX register is assumed to be the destination operand. The size of the source and destination
operands is selected with the mnemonic: LODSB (byte loaded into register AL), LODSW (word
loaded into AX), or LODSD (doubleword loaded into EAX).
After the byte, word, or doubleword is transferred from the memory location into the AL, AX,
or EAX register, the (E)SI register is incremented or decremented automatically according to the
setting of the DF flag in the EFLAGS register. (If the DF flag is 0, the (E)SI register is incre-
mented; if the DF flag is 1, the ESI register is decremented.) The (E)SI register is incremented
or decremented by one for byte operations, by two for word operations, or by four for double-
word operations.
Opcode
Instruction
Description
AC
LODS m8
Load byte at address DS:(E)SI into AL
AD
LODS m16
Load word at address DS:(E)SI into AX
AD
LODS m32
Load doubleword at address DS:(E)SI into EAX
AC
LODSB
Load byte at address DS:(E)SI into AL
AD
LODSW
Load word at address DS:(E)SI into AX
AD
LODSD
Load doubleword at address DS:(E)SI into EAX
<<<    Index    >>>