寄存器
1. 通用寄存器
通用寄存器包括了8个16/32位的寄存器:AX/EAX、BX/EBX、CX/ECX、DX/EDX、SP/ESP、BP/EBP、DI/EDI及SI/ESI。其中AX/EAX、BX/EBX、CX/ECX、DX/EDX在一般情况下作为通用的数据寄存器,用来暂时存放计算过程中所用到的操作数、结果或其他信息。它们还可分为两个独立的8位寄存器使用,命名为AL、AH、BL、BH、CL、CH、DL和DH。这4个通用数据寄存器除通用功能外,还有如下专门用途:
AX/EAX作为累加器用,所以它是算术运算的主要寄存器。在乘除指令中指定用来存放操作数。另外,所有的I/O指令都使用AX或AL与外部设备传送信息。
BX/EBX在计算存储器地址时,可作为基址寄存器使用。
CX/ECX常用来保存计数值,如在移位指令、循环指令和串处理指令中用作隐含的计数器。DX在作双字长运算时,可把DX和AX组合在一起存放一个双字长数,DX用来存放高16位数据。此外,对某些I/O操作,DX可用来存放I/O的端口地址。
SP/ESP、BP/EBP、SI/ESI、DI/EDI四个16/32位寄存器可以象数据寄存器一样在运算过程中存放操作数,但它们只能以字(16/32位)为单位使用。此外,它们更经常的用途是在存储器寻址时,提供偏移地址。因此,它们可称为指针或变址寄存器。
SP/ESP称为堆栈指针寄存器,用来指出栈顶的偏移地址。
BP/EBP称为基址指针寄存器,在寻址时作为基地址寄存器使用,但它必须与堆栈段寄存器SS联用来确定堆栈段中的存储单元地址。
2、标志寄存器FLAG
条件码标志用来记录程序中运行结果的状态信息,它们是根据有关指令的运行结果由(CPU)自动设置的。由于这些状态信息往往作为后续条件转移指令的转移控制条件,所以称为条件码。
① 进位标志 CF,记录运算时最高有效位产生的进位值。
② 符号标志 SF,记录运算结果的符号。结果为负时置1,否则置0。
③ 零标志 ZF,运算结果为0时ZF位置1,否则置0。
④ 溢出标志 OF,在运算过程中,如操作数超出了机器可表示数的范围称为溢出。溢出时OF位置1,否则置0。
⑤ 辅助进位标志 AF,记录运算时第3位(半个字节)产生的进位值。
⑥ 奇偶标志 PF,用来为机器中传送信息时可能产生的代码出错情况提供检验条件。当结果操作数中1的个数为偶数时置1,否则置0。