🏗 LEA (Load Effective Address) — Загрузка эффективного адреса
Команда LEA вычисляет эффективный адрес операнда и загружает его в регистр.
📌 Синтаксис:
LEA <приёмник>, <источник><приёмник>— регистр, в который запишется результат.<источник>— адресное выражение.
🛠 Как работает LEA?
LEA не загружает значение по адресу, а просто вычисляет сам адрес.
Пример:
mov bx, 1000h ; BX = 1000h
lea ax, [bx+4] ; AX = 1000h + 4 = 1004hЕсли бы использовался MOV, в AX попало бы значение по адресу [BX+4].
📌 Применение LEA
1️⃣ Вычисление адресов
lea si, [bx+di+8] ; SI = BX + DI + 82️⃣ Быстрое умножение (замена MUL)
lea ax, [bx+bx*2] ; AX = BX * 3 (быстрее, чем MUL)
lea dx, [ax+ax*4] ; DX = AX * 53️⃣ Использование в циклах
lea di, [si+20] ; Быстрый сдвиг указателя на 20 байт🔥 Особенности LEA
✅ Работает быстрее, чем MUL и ADD
✅ Не изменяет флаги (в отличие от арифметических операций)
✅ Используется для оптимизации в низкоуровневом коде
❌ Работает только с адресными выражениями
🏆 Заключение
LEA — мощный инструмент для оптимизации вычислений и работы с памятью.
Используется в компиляторах и ассемблерных вставках для ускорения кода.