学 Win32 汇编[16]: 常用寄存器的常规功能
?
通用寄存器EAX累加(Accumulator)寄存器AX(AH、AL)常用于乘、除法和函数返回值EBX基址(Base)寄存器BX(BH、BL)常做内存数据的指针, 或者说常以它为基址来访问内存.ECX计数器(Counter)寄存器CX(CH、CL)常做字符串和循环操作中的计数器EDX数据(Data)寄存器DX(DH、DL)常用于乘、除法和 I/O 指针ESI来源索引(Source Index)寄存器SI常做内存数据指针和源字符串指针EDI目的索引(Destination Index)寄存器DI常做内存数据指针和目的字符串指针ESP堆栈指针(Stack Point)寄存器SP只做堆栈的栈顶指针; 不能用于算术运算与数据传送EBP基址指针(Base Point)寄存器BP只做堆栈指针, 可以访问堆栈内任意地址, 经常用于中转 ESP 中的数据, 也常以它为基址来访问堆栈; 不能用于算术运算与数据传送指令指针寄存器EIP指令指针(Instruction Pointer)寄存器总是指向下一条指令的地址; 所有已执行的指令都被它指向过.标志寄存器EFLAGS标志(Flag)寄存器:
EFLAGS 中的 32 位被分成 0-31 个二进制位分别使用;
第 0、2、4、6、7、11 位是状态标志位;
第 10 位是字符串操作控制标志位;
其他标志位一般不用或无权使用
其中的 EAX、ECX、EDX 三个寄存器相对自由些, 所以练习时用它们较多.
没理会段寄存器: CS、DS、SS、ES、FS、GS, 是因在 Win32 保护模式下编程它们不再重要了.
还有 FPU、MMX 系列寄存器, 等用到再说吧.