These instructions perform little, if any computation. Instead they are mostly used for moving data from one place to another.
| Instruction | Operands | Affected Flags |
|---|---|---|
| movl | I/R/M, I/R/M | O/S/Z/A/C |
| This copies a word of data from one location to another. movl %eax, %ebx copies the contents of %eax to %ebx | ||
| movb | I/R/M, I/R/M | O/S/Z/A/C |
| Same as movl, but operates on individual bytes. | ||
| leal | M, I/R/M | O/S/Z/A/C |
| This takes a memory location given in the standard format, and, instead of loading the contents of the memory location, loads the computed address. For example, leal 5 (%ebp, %ecx, 1), %eax loads the address computed by 5 + %ebp + 1*%ecx and stores that in %eax | ||
| popl | R/M | O/S/Z/A/C |
| Pops the top of the stack into the given location. This is equivalent to performing movl (%esp), R/M followed by addl $4, %esp.popfl is a variant which pops the top of the stack into the %eflags register. | ||
| pushl | I/R/M | O/S/Z/A/C |
| Pushes the given value onto the stack. This is the equivalent to performing subl $4, %esp followed by movl I/R/M, (%esp).pushfl is a variant which pushes the current contents of the %eflags register onto the top of the stack. | ||
| xchgl | R/M, R/M | O/S/Z/A/C |
| Exchange the values of the given operands. | ||