title: MUL instruction doesn't support an immediate value
body: <p>I've read a few tutorials and examples, but I cannot wrap my head around how the <code>MUL</code> instruction works. I've used <code>ADD</code> and <code>SUB</code> without problems. So apparently this instruction multiplies its operand by the value in a register.</p>
  
  <p>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.</p>
  
  <p>When I try to compile this line...</p>
  
  <pre><code>mul     9
  </code></pre>
  
  <p>I get, <code>Error: suffix or operands invalid for 'mul'</code>. Can anyone help me out?</p>
  
  <pre><code>    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
  </code></pre>