I've read a few tutorials and examples, but I cannot wrap my head around how the MUL
instruction works. I've used ADD
and SUB
without problems. So apparently this instruction multiplies its operand by the value in a register.
What register (eax, ebp, esp, etc.) is multiplied by the first operand? And what register is the result stored in, so I can move it to the stack? Sorry, I'm just learning x86 assembly.
When I try to compile this line...
mul 9
I get, Error: suffix or operands invalid for 'mul'
. Can anyone help me out?
global main
main:
push ebp
movl ebp, esp
sub esp, byte +8
mov eax, 7
mul 9
mov [esp], eax
call _putchar
xor eax, eax
leave
ret
imul $9, %eax, %eax
. Or better for power-of-2 + 1lea (%eax, %eax, 8), %eax
. – Wetterhorn