General 32-bit registers:
EAX - Accumulator Register EBX - Base Register ECX - Counter Register EDX - Data Register ESI - Source Index EDI - Destination Index EBP - Base Pointer ESP - Stack Pointer
EAX - All major calculations take place in EAX, making it similar to a dedicated accumulator register.
EDX - The data register is the an extension to the accumulator. It is most useful for storing data related to the accumulator's current calculation.
ECX - Like the variable i in high-level languages, the count register is the universal loop counter.
EDI - Every loop must store its result somewhere, and the destination index points to that place. With a single-byte STOS instruction to write data out of the accumulator, this register makes data operations much more size-efficient.
ESI - In loops that process data, the source index holds the location of the input data stream. Like the destination index, EDI had a convenient one-byte instruction for loading data out of memory into the accumulator.
ESP - ESP is the sacred stack pointer. With the important PUSH, POP, CALL, and RET instructions requiring it's value, there is never a good reason to use the stack pointer for anything else.
EBP - In functions that store parameters or variables on the stack, the base pointer holds the location of the current stack frame. In other situations, however, EBP is a free data-storage register.
EBX - In 16-bit mode, the base register was useful as a pointer. Now it is completely free for extra storage space.