这里简单记录一下各个寄存器的基本内容。
一、通用寄存器:
用于传送和暂存数据,参与算数逻辑运算并保存运算结果。IA-32每个通用寄存器的大小都是32位,即4个字节,主要用来保存常量和地址等信息。
以下4个通用寄存器主要用于算术运算如ADD、SUB、XOR、OR等,常用于保存常量与变量的值。
EAX:(针对操作数和结果数据的)累加器,一般用在函数返回值中,所有Win32 API函数都会把返回值保存到EAX后再返回。EAX寄存器又分为高、低几个独立的寄存器,AX(0-15)为EAX(0-31)的低16位独立寄存器,而AX又分为高8位的AH(8-15)和低8位的AL(0-7)两个独立寄存器,下面的EBX、ECX和EDX同理。
EBX:(DS段中的数据指针)基址寄存器。
ECX:(字符串和循环操作的)计数器,如在循环命令LOOP中用来循环计数、每执行完一次循环ECX就自减一。
EDX:(I/O指针)数据寄存器。
以下4个通用寄存器主要用于保存内存地址的指针。
ESI:(字符串操作源指针)源变址寄存器。
EDI:(字符串操作目标指针)目的变址寄存器,ESI和EDI与特定指令(LODS、STOS、REP、MOVS等)一起使用,主要用于内存复制。
EBP:(SS段中栈内数据指针)扩展基址指针寄存器,表示栈区域的基地址,即指向栈最上面的一