Некоторые отличия команд LEA, MOV и OFFSET в ассемблере:
- LEA вычисляет эффективный адрес в памяти (смещение внутри сегмента) исходного операнда и помещает его в регистр общего назначения. stackoverflow.com Команда LEA позволяет определить текущее смещение косвенного операнда любого типа, а также вычислить адрес переменной, которая описана сложным способом адресации. av-assembler.ru В отличие от оператора OFFSET, LEA может сделать это во время выполнения программы. av-assembler.ru
- MOV выполняет передачу данных между памятью и регистрами или между регистрами. stackoverflow.com Команда MOV не может переместить данные из одной ячейки памяти в другую или из одного регистра сегмента в другой. stackoverflow.com
- OFFSET — оператор получения смещения адреса относительно начала сегмента, то есть количества байтов от начала сегмента до идентификатора адреса. de.ifmo.ru Оператор OFFSET позволяет определить смещение только при компиляции. av-assembler.ru
Таким образом, основное различие заключается в том, что LEA вычисляет адрес, MOV перемещает данные, а OFFSET определяет смещение.