IA-32 register
基本程序运行寄存器
通用寄存器 (General Purpse Resigisters,32位,8个)
段寄存器 (Segment Register,16位,6个)
程序状态与控制寄存器 (Program Status and Contral Register,32位,1个)
指令指针寄存器(Instruction Pointer, 32位,1个)
- 通用寄存器
EAX:(针对操作数和结果数据的) 累加器
EBX:(DS段中的数据指针)基址寄存器
ECX:(字符串和循环操作的)计数器
EDX (I/O指针)数据寄存器
注意: Windows 汇编程序中,Windows API 函数会在内部使用ECX和EDX,会导致这两者寄存器内的数据发生改变,为了保护数据,调用API 还函数之前要把这些数据备份到其他寄存器或栈。
EBP:(SS段中栈内数据指针)扩展基址指针寄存器
ESI:(字符串操作源指针)源变址寄存器
EDI:(字符串操作目的指针)目的变址寄存器
ESP: (SS段中栈指针) 栈指针寄存器
- 段寄存器
CS: Code Segment,代码寄存器
SS: stack Segment, 栈段寄存器
DS: Data Segment, 数据段寄存器
ES: Exera(Data), 附加(数据)寄存器
FS:Data Segment, 数据段寄存器
GS:Data Segment, 数据段寄存器
- 程序状态寄存器
EFLAGS (大小:4个字节)
- ZF
若运算结果为0时,其值为1,否则其值为0.
- OF
有符号整数(signed integer)溢出时,OF被置为1,此外,MSB(Most Significent Bit,最高有效位)改变时候,其值也被置为1.
- CF
无符号整数(unsined integer) 溢出时,其值也被置为1.
- 指令指针寄存器
EIP:instruction Pointer, 指针指针寄存器