Команда lea загружает в регистр, указанный в команде в качестве первого операнда, относительный адрес второго операнда (не значение операнда!). В качестве первого операнда следует указывать регистр общего назначения (не сегментный), в качестве второго - ячейку памяти. Команда
lea reg,mem
эквивалентна команде
mov reg,offset mem
но у первой команды больше возможностей описания адреса интересующей нас ячейки. Команда не воздействует на флаги процессора.
Пример 1
; В полях данных:
message db ; 'Идут измерения'
;В программном сегменте:
lea SI,message ;DS:SI -> message
Пример 2
; В полях данных:
nmb db '0123456789'
;В программном сегменте:
mov SI,7 ;Смещение символа '7'
lea DX,nmb[SI] ;ВХ=адрес символа '7'
Пример 3
; В полях данных:
nmb db '0123456789'
;В программном сегменте:
mov BX, off set msg
mov SI, 9 ;Смещение символа '9'
lea SI, [BX] [SI] ;31=адрес символа '9'
Допустимо использование 32-битовых операндов и дополнительных режимов адресации 32-разрядных процессоров.