General Purpose
These 32-bit (and 16/8 for their components) registers can be used for anything:
eax (ax/ah/al) Accumulator
ebx (bx/bh/bl) Base
ecx (cx/ch/cl) Counter
edx (dx/dh/dl) Data
Pointer Registers
Actually, you can use pointer registers as general purpose registers (except for eip), as
long as you preserve their original values. Pointer registers are called pointer registers
because their often used for storing memory addresses. Some opcodes also (movb,scasb,etc.)
use them.
esi (si) Source index
edi (di) Destination index
eip (ip) Instruction pointer
Stack Registers
There are 2 stack registers: esp & ebp. Esp holds the current stack position in memory
(more about this in one of the next tutorials). Ebp is used in functions as pointer to the
local variables.
esp (sp) Stack pointer
ebp (bp) Base pointer
dd = declare dword, dw = declare word, db = declare byte
Byte 8 bit
00
Word 16 bit 00 00
DWord 32 bit 00 00 00 00