Ahhh... one more thing... NASM allows the use of 1,2,3,4,5,8 and 9 as scale in effective address calculations, like:
lea eax,[3*eax]
It, automatically, converts this to
lea eax,[eax+2*eax]
This way you can multiply by 27, for example, as:
lea eax,[3*eax]
lea eax,[9*eax]
As a general rule: If multiplication by a constant can be done in 1 cycle (2 LEAs can be "paired", even in 'out of order" instructions execution), then, I use LEA, otherwise, IMUL, as in:
imul eax,eax,14 ; cannot be done in 1 cycle using LEAs