RegisterPurpose
ECXCounter in loops
ESISource in string/memory operations
EDIDestination in string/memory operations
EBPBase frame pointer
ESPStack pointer
Data typeNumber of bytesexamples
Bytes8 bitsAL, BL, CL
Word16 bitsAX, BX, CX
Double word32 bitsEAX, EBX, ECX
Quad word64 bitsEDX:EAX (combined registers)

The x86 instruction set allows a high level of flexibility in terms of data movement between registers and memory. The movement can be classified into five general methods: • Immediate to register • Register to register • Immediate to memory • Register to memory and vice versa • Memory to memory

x86 uses square brackets ([]) to indicate memory access. (The only exception to this is the LEA instruction, which uses [] but does not actually reference memory.)