Команды LODS, LODSB, LODSW, LODSD загружают байт, слово или двойное слово из памяти по определенному адресу в регистр AL, AX или EAX соответственно. Могут использоваться для копирования какого-то участка памяти в другое место с выполнением над данными каких-либо действий. Используются в паре с командами STOS, STOSB, STOSW, STOSD, которые выполняют обратные действия по сохранению значения регистра в память.

 

Команда LODS

 

Синтаксис: LODS op1
Операнды: op1 - m8, m16, m32
Назначение: Чтение из строки
Процессор: 8086+
Флаги: Не изменяются
Комментарий: Команда LODS на самом деле не является командой процессора. Когда в тексте программы встречается эта команда, компилятор вычисляет размерность ее операнда и на основании вычислений подставляет на ее место одну из реальных команд процессора LODSB, LODSW или LODSD.
Ограничения: Нет
Примеры:
lods	es:str2
Команда LODSB
Синтаксис: LODSB
Операнды: Нет
Назначение: Чтение байта из строки
Процессор: 8086+
Флаги: Не изменяются
Комментарий: Команда LODSB копирует один байт из памяти по адресу DS:SI в регистр AL. После выполнения команды, регистр SI увеличивается на 1, если флаг DF = 0, или уменьшается на 1, если DF = 1.
Если команда используется в 32-разрядном режиме адресации, то используется регистр ESI.
Ограничения: Нет
Примеры:
mov	si,offset str1
cld
lodsb
Команда LODSW
Синтаксис: LODSW
Операнды: Нет
Назначение: Чтение слова из строки
Процессор: 8086+
Флаги: Не изменяются
Комментарий: Команда LODSW копирует слово из памяти по адресу DS:SI в регистр AX. После выполнения команды, регистр SI увеличивается на 2, если флаг DF = 0, или уменьшается на 2, если DF = 1.
Если команда используется в 32-разрядном режиме адресации, то используется регистр ESI.
Ограничения: Нет
Примеры:
mov	si,offset str1
cld
lodsw
Команда LODSD
Синтаксис: LODSD
Операнды: Нет
Назначение: Чтение двойного слова из строки
Процессор: 80386+
Флаги: Не изменяются
Комментарий: Команда LODSD копирует двойное слово из памяти по адресу DS:SI в регистр EAX. После выполнения команды, регистр SI увеличивается на 4, если флаг DF = 0, или уменьшается на 4, если DF = 1.
Если команда используется в 32-разрядном режиме адресации, то используется регистр ESI.
Ограничения: Нет
Примеры:
mov	si,offset str1
cld
lodsd