1.通用寄存器(8个)
l       
EAX
EBX
ECX
EDX这四个寄存器,主要就是用来暂时存放计算过程中所用的操作数、结果或其它信息。
l       
ESP为堆栈指针寄存,它和堆栈段寄存器SS共同决定了当前的栈指针,每当执行push,pull操作时,或者因为某些原因(如中断),CPU自动将数据入栈时,就会使用该指针来找到堆栈栈顶(或栈底)的位置,然后执行压栈、出栈的操作。系统管理软件,如操作系统会根据其分配的栈空间地址来设定这两个寄存器的值。
l       
EBP称为基址指针寄存器,它和
ESP都可以与堆栈段寄存器
SS联用来确定堆栈中的某一存储单元的地址,
ESP用来指示段顶的偏移地址,而
EBP可作为堆栈区中的一个基地址以便访问堆栈中的信息。
l       
ESI(源变址寄存器)和
EDI(目的变址寄存器)一般与数据段寄存器
DS联用,用来确定数据段中某一存储单元的地址。这两个变址寄存器有自动增量和自动减量的功能,可以很方便地用于变址。在串处理指令中,
ESI
EDI作为隐含的源变址和目的变址寄存器时,
ESI
DS联用,
EDI和附加段
ES联用,分别达到在数据段和附加段中寻址的目的。
2.专用寄存器
l       
EIP指令指针寄存器,它用来存放代码段中的偏移地址。在程序运行的过程中,它始终指向下一条指令的首地址。它与段寄存器
CS联用确定下一条指令的物理地址。当这一地址送到存储器后,控制器可以取得下一条要执行的指令,而控制器一旦取得这条指令就马上修改
EIP的内容,使它始终指向下一条指令的首地址。那些跳转指令,就是通过修改
EIP的值来达到相应的目的的。
l       
FLAGS标志寄存器,又称
PSW(program status word),即程序状态寄存器。这一个是存放条件标志码、控制标志和系统标志的寄存器。
3.段寄存器
l        一共六个,分别是
CS代码段,
DS数据段,
ES附加段,
SS堆栈段,
FS以及
GS这两个还是附加段。
EFLAGS寄存器中的IF位表示是否允许中断,为1允许,否则不允许。
TR寄存器
用来指向当前任务的TSS段
IDTR寄存器
用来指向当前IDT(中断表述符表或者说是中断向量表),因为在保护模式下,IDT的起始地址可以在任何位置,而不仅限于地址0。
GDT和LDT
前者是全局描述符表,位置由GDTR寄存器确定,后者是局部描述符表,位置由LDTR寄存器确定,具体使用哪一个,取决于段选择码中的TI位。