Load Effective Address: the same [base + scale·index + disp] formula, but the result lands in a register — no trip to memory. Brackets present, dereference absent.
Play with the operands — lea r0q, [r1q + scale·r2q + disp]
[
base · r1q7
+
8 · r2q24
+
disp5
]→
r0q36
scale — only 1, 2, 4 or 8: a hardware limit, not an assembler one. After lea, r1q and r2q are unchanged and FLAGS is untouched.
The same thing without lea — compare two implementations