【汇编】【分享】一张图总结寄存器知识
基本寄存器分为 4 类,
分别是 8 个通用寄存器、
4 个段寄存器(32位扩充2个)、
1个指令指针寄存器和1个标志寄存器.
AX(accumulator):累加寄存器,常用于运算;在乘除等指令中指定用来存放操作数,另外,所有的I/O指令都使用这一寄存器与外界设备传送数据。
BX(base):基址寄存器,常用于地址索引
CX(count):计数寄存器,常用于计数;常用于保存计算值,如在移位指令,循环(loop)和串处理指令中用作隐含的计数器.
DX(data):数据寄存器,常用于数据传递。
SP(Stack Pointer):堆栈指针,与SS配合使用,可指向的堆栈位置
BP(Base Pointer):基址指针寄存器,可用作SS的一个相对基址位置
SI(Source Index):源变址寄存器,可用来存放相对于DS段之源变址指针
DI(Destination Index):目的变址寄存器,可用来存放相对于ES 段之目的变址指针。
段寄存器:
CS(Code Segment):代码段寄存器
DS(Data Segment):数据段寄存器
SS(Stack Segment):堆栈段寄存器
ES(Extra Segment):附加段寄存器
IP(Instruction Pointer):指令指针寄存器
16位的标志寄存器可以分为两部分,分别是条件标志和控制标志。
条件标志寄存器说明如下:
① OF(OverFlow Flag):溢出标志位,用来反映有符号数加减法运算所得结果是否溢出。 如果运算超过当前运算位数所能表示的范围,则称为溢出,该标志位被置为1,否则为0。
② SF(Sign Flag):符号标志位,用来反映运算结果的符号位。运算结果为负时为 1, 否则为0。
③ ZF(Zero Flag):零标志位,用来反映运算结果是否为0。运算结果为0时该标志位 被置为1,否则为0。
④ AF(Auxiliary carry Flag):辅助进位标志位。在字操作时,发生低字节向高字节进位 或借位时该标志位被置为1,否则为0(注意:在字节操作时,发生低4位向高4为进位或借位时该标志位被置为1,否则为0)。
⑤ PF(Parity Flag):奇偶标志位,用于反映结果中“1”的个数的奇偶性。如果“1” 的个数为偶数,该标志位被置为1,否则为0。
⑥ CF(Carry Flag):进位标志位。运算结果的最高位产生了一个进位或借位,则该标 志位被置为1,否则为0。
控制标志寄存器说明如下:
① DF(Direction Flag):方向标志位,用于串操作指令中,控制地址的变化方向。当 DF为0时,存储器地址自动增加;当DF为1时,存储器地址自动减少。操作DF标志寄存器可以使用指令CLD和STD进行复位和置位。
② IF(Interrupt Flag):中断标志位,用于控制外部可屏蔽中断是否可以被处理器响应。 当IF为1时,允许中断;当IF为0时,则不允许中断。操作IF标志寄存器可以使用CLI和STI进行复位和置位。
③ TF(Trap Flag):陷阱标志位,用于控制处理器是否进入单步操作方式。当 TF 为 0 时,处理器在正常模式下运行;当 TF 为 1 时,处理器单步执行指令,调试器可以逐条指令进行执行就是使用了该标志位。
附图: