Definitions ; inversed's concise x86 assembler reference D Destination r Register CF Carry flag ; v0.3 : 2015.01.22 S Source m Memory ZF Zero flag T Second source i Immediate cl cl register D and S cannot be two memory locations Data Transfer mov Drm , Srmi move D = S mov(z/s)x Dr , Srm move with zero/sign extend D = S extended with zeroes/sign cmovcc Dr , Srm conditional move D = S if condition cc holds lea Dr , [S]m load effective address D = S cdq convert double- to quad-word edx:eax = eax extended with sign bswap Dr byte swap Reverse byte order of D xchg Dr , Sr exchange (D, S) = (S, D) push Srmi Push S onto the stack pop Drm Pop top of the stack into D Arithmetic add/sub Drm , Srmi add/subtract D = D +/- S adc/sbb Drm , Srmi add/subtract with carry/borrow D = D +/- (S + CF) inc/dec Drm increment/decrement D = D +/- 1, CF not changed neg Drm negate D = -D mul Drm unsigned multiply edx:eax = D * eax imul Drm signed multiply edx:eax = D * eax imul Dr , Srmi signed multiply D = D * S imul Dr , Srm , Ti signed multiply D = S * T (/i)div Srm (un/)signed division eax = edx:eax div S, edx = edx:eax mod S Logic and Drm , Srmi bitwise AND D = D bitwise and S or Drm , Srmi bitwise OR D = D bitwise or S xor Drm , Srmi bitwise XOR D = D bitwise xor S not Drm bitwise NOT D = bitwise not D popcnt Dr , Srm population count D = number of nonzero bits in S bs(f/r) Dr , Srm bit scan forward/reverse D = index of least/most significant bit of S, ZF = is nonzero bit found Bit shifting sh(l/r) Drm , Sicl shift left/right Shift D to the left/right by S bits sa(l/r) Drm , Sicl shift arithmetic Shift D to the left/right by S bits preserving its sign sh(l/r)d Drm , Sr , Ticl shift double Shift D:S to the left/right by T bits ro(l/r) Drm , Sicl rotate Cyclicly shift D to the left/right by S bits rc(l/r) Drm , Sicl rotate through carry Cyclicly shift D to the left/right by S bits through CF Control Flow cmp Drm , Srmi Compare Set flags based on D - S test Drm , Sri Test Set flags based on D AND S bt(/s/r/c) Drm , Sri Bit test Copy S-th bit of D into CF and /set/reset/complement it jmp Unconditional jump jcc Conditional jump Jump depending on condition cc setcc Drm Set on condition D = 0 or 1 depending on condition cc nop No operation call Call ret (/S) Return Return from routine (/and pop S bytes from the stack) clc Clear carry Clear CF stc Set carry Set CF cmc Complement carry Complement CF Conditions (/n)(/g/l/a/b)(/e) n not e equal g greater signed l less signed a above unsigned | Deprecated b below unsigned | partial registers false dependencies (/n)(z/c/s/o/p) | string instructions high overhead, slow without a repeat prefix n not | xchg Dr , Sm implicit lock prefix, very slow z zero | xlat slower than using mov c carry | rc(l/r) Drm , Sicl much slower than rotate by 1 s sign | loop slower than jcc o overflow | jecxz pointless p parity | inc/dec false dependencies, possibly slower than add/sub