1. 通用寄存器
EAX 用于操作数和结果数的累加器
EBX 指向数据内存段中的数据指针
ECX 计数器
EDX IO指针
EDI 用于字符串操作的目标数据指针
ESI 用于字符串操作的源数据指针
ESP 堆栈指针
EBP 堆栈数据指针
其中EAX, EBX, ECX, EDX可以通过16位和8位寄存器引用(AX, AH, AL)
2. 段寄存器
IA-32平台允许使用3种内存模型: 平坦内存模式,分段内存模式,实地址模式
平坦内存模式: 把全部系统内存表示为连续的地址空间,通过线性地址访问内存
分段内存模式: 把系统内存划分为独立的段组,通过位于寄存器中的指针进行引用.每个段用于包含特定的数据.一个段用于存放指令码,一个段用于包含数据,第三个包含堆栈.
段中的内存位置是通过逻辑地址引用的,逻辑地址是由段地址加上偏移量构成,处理器把逻辑地址转换为相应的线性地址以便访问.
段寄存器:
CS 代码段
DS 数据段
SS 堆栈段
ES, FS, GS 为附加段, 每个段寄存器都是16位.
实地址模式: 所有的段寄存器都指向线性地址0,并且都不会被程序改动, 所有的指令,数据,堆栈都是通过他们的线性地址访问
3.指令指针寄存器EIP, 不能直接修改该寄存器.
4.控制寄存器
CR0 控制操作模式和处理器当前状态的系统标志
CR1 当前没有使用
CR2 内存页面错误信息
CR3 内存页面目录信息
CR4 支持处理器特性和说明处理器特性能力的标志
控制寄存器不能直接访问,必须通过通用寄存器来访问.
5.标志
IA-32使用单一的寄存器来包含一组状态控制和系统标志, EFLAGS寄存器包含32为标志信息.
*)状态标志
CF(bit0) 进位标志,无符号数数学操作产生最高有效位的进位
PF(bit2) 奇偶校验标志,表明数学操作的结果寄存器中是否包含错误数据
AF(bit4) 辅助进位标志,用于判断二进制编码的10进制(BCD)数学操作是否进位
ZF(bit6) 0标志,操作结果为0
SF(bit7) 符号标志, 判断结果的最高有效位
OF(bit11) 溢出标志
*)控制标志
DF 方向标志,用于控制处理器字符串指令自动递增或者递减内存地址.
*)系统标志
TF(bit8) 陷阱标志,为1时启用单步模式,每次只执行一个命令
IF(bit9) 中断使能标志,控制处理器响应外部中断信号
IOPL(bit12:13) IO特权级别标志,表明当前运行任务的IO特权级别(值越小级别越高)
NT(bit14)嵌套任务标志控制当前运行的任务是否连接到前一个任务,用于嵌套中断
RF(bit16) 恢复标志用于控制在调试模式中如何响应异常
VM(bit17) 虚拟8086模式,表明处理器处在虚拟8086模式,而不是保护模式或者实模式
AC(bit18) 对准检查标志,用于启用内存引用的对准检查
VIF(bit19) 虚拟中断标志,当处理器在虚拟模式中操作时,该标志起IF标志的作用
VIP(bit20) 虚拟中断挂起标志,在虚拟模式操作时用于表示一个中断正在被挂起
ID(bit21) 表示CPU是否支持cpuid指令,如果处理器能够设置或者清零这个标志,表示处理器支持该指令