The arithmetic machine instructions such as addl can't have both its operands be in memory. At least one of them has to be in a register.
The first 6 registers can usually be used as general purpose registers.
Registers Special Use %eax %ecx %edx %ebx %esi %edi %esp Stack pointer %ebp Frame pointer %eip Program counter