Команда LES загружает в указанный регистр содержимое ячейки памяти, а в сегментный регистр ES - следующую ячейку памяти.
Эта команда обеспечивает быструю загрузку далекого адреса.
Формат команды:
LES reg, mem
½11000100½mod reg r/m½
Если mod = 11, действия команд LEA, LDS, LES не определены.
Обычно в команде LDS указывается регистр SI, а в команде LES регистр DI, так как в цепочечных командах регистр SI ассоциируется с регистром DS, а регистр DI с регистром ES.
Основное применение команд LEA, LDS и LES - это инициализация регистров перед выполнением цепочечных команд.
При выполнении команды загрузки эффективного адреса
LEA reg, mem
вычисляется эффективный адрес памяти (в соответствии с указанным режимом адресации) и его значение, (а не адресуемое им слово памяти) загружается в указанный регистр. Такая операция может потребоваться, например, для загрузки в регистр BX начального адреса таблицы, которая необходима для выполнения команды XLAT.
Пример:
[BX] = 0400
[SI] = 003C
LEA BX, [BX + SI]
[BX] = 043C
Команды LDS и LES выполняют почти одни и те же действия: вычисляется эффективный адрес памяти, который суммируется с содержимым регистра DS, затем слово из памяти по полученному адресу загружается в указанный регистр, а следующее слово из памяти загружается в регистр DS (команда LDS) или ES (команда LES).
Пример:
[DS] = C000
[DI] = 0010
[C0010] = 0180
[C0012] = 2000
LDS SI, [DI]
[SI] = 0180
[DS] = 0200