What is the difference between MOV and LEA?
assembly, instruction-set, x86
Solution
- `LEA` means Load Effective Address
- `MOV` means Load Value
In short, `LEA` loads a pointer to the item you're addressing whereas MOV loads the actual value at that address.
The purpose of `LEA` is to allow one to perform a non-trivial address calculation and store the result [for later usage]
LEA ax, [BP+SI+5] ; Compute address of value
MOV ax, [BP+SI+5] ; Load value at that address
Where there are just constants involved, `MOV` (through the assembler's constant calculations) can sometimes appear to overlap with the simplest cases of usage of `LEA`. Its useful if you have a multi-part calculation with multiple base addresses etc.
Problem
I would like to know what the difference between these instructions is: ``` MOV AX, [TABLE-ADDR] ``` and ``` LEA AX, [TABLE-ADDR] ```