Адресные команды (пересылки адреса)

В микропроцессоре существуют три основные команды пересылки адреса: LEA, LDS, LES.

LEA - загрузить смещение в регистр. Форматы команды:

LEA

LDS -загрузить полный адрес в DS и регистр;

LES - загрузить полный адрес (указатель) в ES и регистр.

С микропроцессора 80386 в систему команд добавляются команды LSS, LFS, LGS, которые используются для загрузки полного адреса в регистр-приемник и регистры SS, FS, GS соответственно. Форматы команд LDS, LES, LSS, LFS, LGS:

Каждая из команд имеет два операнда - один в памяти, другой в 16-битном регистре или 32-битном регистре. Примеры использования команд:

LEA BX, MEMLOC=MOV BX, OFFSET MEMLOC

LDS CX, MEMLOC

LES DX, MEMLOC

LEA вычисляет 16-битное или 32-битное смещение операнда-источника и загружает его в любой 16-битный или 32-битный регистр общего назначения или в регистр смещения ( кроме IP). Она удобна для передачи смещения переменной в качестве параметра из одной процедуры в другую. В качестве операнда-источника в команде LEA может быть элемент массива, например: LEA BX, TABLE[DI].

LDS передает полный адрес операнда-источника в 16-битный или 32-битный регистр (любой регистр общего назначения) и в регистр DS.

HERE DB 100   ==   MOV BX, OFFSET HERE
LDS BX, HERE       MOV AX, SEG HERE
        MOV DS, AX

LES, LSS, LFS, LGS аналогичны LDS, но загружают адрес сегмента в регистры ES, SS, FS, GS соответственно.

Замечание: 32-разрядная адресация используется только в защищенном режиме работы микропроцессора. В реальном режиме работы команды используют только 16-битные регистры.