ARMのようなRISC系だと
ADD R0, R1, #128
みたいにロードとストア先のレジスタを別々に指定できるが、
x86のADDはロードストアが一緒なので、
結果をECXに代入したい場合でもADDを使うと
MOV ECX, EAX
ADD ECX, 128
としか書けない。これは命令長も増えるし遅い。
LEAの間接dispを使うとその辺を1命令で記述できる。
ステータスレジスタの影響から選択する場合もある。