1.寄存器的分类:
通用寄存器:数据寄存器、指针寄存器、变址寄存器
(1)数据寄存器
数据寄存器主要用来保存操作数和运算结果等信息,从而节省读取操作数所需占用总线和访问存储器的时间。
32位CPU有4个32位的通用寄存器EAX(累加器)、EBX(基址寄存器)、ECX(计数寄存器)、EDX(数据寄存器)。
16位:AX(累加器)、BX(基址寄存器)、CX(计数寄存器)、DX(数据寄存器)。
8位:AH、AL、BH、BL、CH、CL、DH、DL 8位寄存器,只能存放8位数据,不能存放地址。(AH对应AX的高8位、AL对应AX的低8位,AX对应EAX的低16位)
(2)指针寄存器
32位:EBP、ESP。
EBP为基指针寄存器,用它可直接存取堆栈中的数据。
ESP为堆栈指针寄存器,用它只可访问栈顶。
16位:BP(基址指针寄存器)、SP(堆栈指针寄存器)。
(3)变址寄存器
32位:ESI(源变址寄存器)、EDI(目的变址寄存器)。主要用于存放存储单元在段内的偏移量。
16位:SI(源变址寄存器)、DI(目的变址寄存器)。
(4)段寄存器
32位:ECS(代码段寄存器)、 EDS(数据段寄存器)、 ESS(堆栈段寄存器)、 EES(附加段寄存器)、EFS(附加段寄存器)、EGS(附加段寄存器)。
16位:CS(代码段寄存器)、DS(数据段寄存器)、SS(堆栈段寄存器)、ES(附加段寄存器)。
(5)指令指针寄存器
32位:EIP。
16位:IP。
指令指针EIP、IP是存放下次将要执行的指令在代码段的偏移量。
(6)标志寄存器flag
标志寄存器也称程序状态字寄存器。
16位:状态标志共6位,CF、PF、AF、ZF、SF和OF。