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