07-24-2023, 12:02 PM
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
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