Find file
Fetching contributors…
Cannot retrieve contributors at this time
47 lines (33 sloc) 1.63 KB


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.