总览:32位CPU所含有的寄存器有:
4个数据寄存器(EAX, EBX, ECX, EDX)
2个变址和指针寄存器(ESI和EDI);2个指针寄存器(ESP和EBP)
6个段寄存器(ES, CS, SS, DS, FS, GS)
1个指令寄存器(EIP)
1个标志寄存器(EFlags)
数据寄存器:
对低16位数据的存取,不会影响高16位数据。
这些低16位寄存器分别命名为:AX, BX, CX, DX。
4个低16位寄存器又可以分成8个独立的8位寄存器(AX: AH-AL, BX: BH-BL, CX: CH-CL, DX: DH-DL)
EAX通常称为累加器(Accumulator):可用于乘除输入输出等操作,使用频率很高。
EBX称为基地址寄存器(Base Register):可作为存储器指针来使用。
ECX称为计数寄存器(Count Register):在循环和字符串操作时,要用它来控制循环次数。在位操作中,当移多位时,要用CL来指明移位的位数。
寄存器EDX称为数据寄存器(Data Register):在进行乘除运算时,它可作为默认的操作数参与运算,也可用于存放IO的端口地址。
变址寄存器:
ESI和EDI,低16位的存取有SI和DI寄存器。
变址寄存器主要用于存放存储单元在段内的偏移量。
指针(Pointer)寄存器:
ESP, EBP。低16位SP,BP。
EBP为基指针(Base pointer)寄存器,可以直接存取堆栈中的数据。
ESP为堆栈指针(Stack pointer)寄存器,用它只可以访问栈顶。
段寄存器:
ECS:代码段寄存器(Code Segment Register)
EDS:数据段寄存器(Data Segment Register)
ESS:堆栈段寄存器(Stack Segment Register)
EES:附加段寄存器(Extra Segment Register)
EFS:附加段寄存器
EGS:附加段寄存器
指针指令寄存器:
EIP,低16位IP(instructor pointer)寄存器。
标志寄存器:
一、运算结果标志位:
- 进位标志CF(Carry Flag)
- 奇偶标志PF(Parity Flag):运算结果中”1“的个数。
- 辅助进位标志(Auxiliary Carry Flag)
- 零标志(Zero Flag)
- 符号标志(Sign Flag):正数0,负号1。
- 溢出标志(Overflow Flag)
二、状态控制标志位:
- 追踪标志TF(Trap Flag)
- 中断允许标志IF(Interrupt-enable Flag)
- 方向标志(Direction Flag)
三、32位标志寄存器增加的标志位:
- I/O特权标志IOPL(I/O Privileg Level)
- 嵌套任务标志NT(Nested Task)
- 重启标志RF(Restart Flag)
- 虚拟8086方式标志VM(Virtual 8086 Mode)