L
LODS Загрузка операнда из строки. LODSB Загрузка байта из строки. LODSW Загрузка слова из строки.
Команды предназначены для операций над строками (строкой называется последовательность байтов или слов памяти с любым содержимым). Они загружают в регистр AL (в случае операций над байтами) или АХ (в случае операций над словами) содержимое ячейки памяти по адресу, находящемуся в паре регистров DS:SI. Команда lodsb загружает 1 байт, команда lodsw – 1 слово, а команда lods может быть использована для загрузки как байтов, так и слов. В последнем случае размер загружаемого данного определяется описанием строки (с помощью директив db или dw). После операции загрузки регистр SI получает положительное (если флаг DF=0) или отрицательное (если флаг DF=1) приращение. Величина приращения составляет 1 или 2, в зависимости от размера загружаемого элемента. Команда не имеет параметров и не воздействует на флаги процессора.
Вариант команды lods имеет формат:
lods строка
(Что не избавляет от необходимости инициализировать регистры DS:SI адресом строки). В этом формате возможна замена сегмента строки строка:
lods ES:строка
Пример 1:
;В полях данных сегмента данных, адресуемого через DS: str db 'qwertyuiop' ; В программном сегменте: сld; Двигаемся по строке вперед mov SI, off set str; Адрес строки add SI,BX; Добавим смещение (пусть ВХ=4) lodsb; AL='t', SI › 'у'
Пример 2:
;В полях данных сегмента данных, адресуемого через ES: str db 'qwertyuiop' ;В программном сегменте: сld; Двигаемся по строке вперед mov SI,offset str; Адрес строки lodsbES:str; AL='q', ES:SI › 'w'
386+ LODSD Загрузка двойного слова из строки
Команда аналогична командам МП 86 lodb и lodsw, но позволяет загрузить из строки, адресуемой через регистры DS:ESI (DS:SI для 16-разрядных приложений), двойное слово в регистр ЕАХ.
Пример:
; В полях данных dat dd 12789.200000.550000.8000000 ;В программном сегменте mov SI,offset dat add SI, 4*3;DS:SI › 4-й элемент массива чисел lodsd; EAX=8000000