如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
计算机组成原理与汇编语言程序设计(第2版)4.2.180x86CPU的寄存器1.80x86CPU的寄存器分类80x86CPU的内部寄存器可分为以下3大类:基本结构寄存器组:通用寄存器、指令指针寄存器、标志寄存器、段寄存器。系统级寄存器组:系统地址寄存器、控制寄存器、测试寄存器、调试寄存器。浮点寄存器组:数据寄存器、标记字寄存器、指令和数据指针寄存器、控制字寄存器。2.基本结构寄存器组基本结构寄存器组如右图所示:通用寄存器;指令指针寄存器;标志寄存器;段寄存器。(1)通用寄存器图中除阴影区以外的寄存器是8086/8088和80286所具有的寄存器,它们都是16位寄存器。其中4个16位的寄存器AX、BX、CX、DX可称为数据寄存器。这4个寄存器都是通用寄存器,但它们又可以用于各自的专用目的。AX(Accumulator)作为累加器用。在乘除等指令中指定用来存放操作数。另外,所有的I/O指令都使用这一寄存器与外部设备传送信息。BX(Base)可以作为通用寄存器使用。此外,在计算存储器地址时,它经常用作基址寄存器。CX(Count)可以作为通用寄存器使用。此外,它还常用来保存计数值,如在移位指令、循环(LOOP)和串处理指令中用作隐含的计数器。DX可以作为通用寄存器使用。一般在做双字长运算时把DX和AX组合在一起存放一个双字长数,DX用来存放高位字。此外,对某些I/O操作,DX可用来存放I/O的端口地址。SP、BP、DI、SI这4个16位寄存器可以像数据寄存器一样在运算过程中存放操作数,但它们只能以字(16位)为单位使用。此外,它们更经常的用途是在存储器寻址时,提供偏移地址。因此,可称它们为指针或变址寄存器。(2)指令指针寄存器和标志寄存器IP(InstructionPointer)为指令指针寄存器,它用来存放代码段中的偏移地址。IP作为指令的地址指针,其作用类似于其他计算机中的程序计数器PC,当现行指令执行完毕时,由IP提供下一条指令地址。FLAGS为标志寄存器,又称PSW(ProgramStatusWord),即程序状态寄存器。这是一个存放条件码标志、控制标志和系统标志的寄存器。80386及其后继机型的指令指针寄存器EIP和标志寄存器EFLAGS是32位的,其作用和相应的16位寄存器相同。下图说明了80x86CPU中标志寄存器的内容:①条件码标志包括以下6位:OF(OverFlowFlag)溢出标志。将参加算术运算的数看作带符号数,如运算结果超出补码表示数的范围N,即溢出时,则OF置1;否则OF置0。对于字节运算有128≤N≤+127;对于字运算有32768≤N≤+32767。SF(SignFlag)符号标志。把指令执行结果看作带符号数,如结果为负,则SF置1;结果为正,则SF置0。ZF(ZeroFlag)零标志。如指令执行结果各位全为0时,则ZF置1;否则ZF置0。CF(CarryFlag)进位标志。在进行算术运算时,如最高位(对字操作是第15位,对字节操作是第7位)产生进位或借位时,则CF置1;否则置0。在移位类指令中,CF用来存放移出的代码(0或1)。AF(AuxiliaryCarryFlag)辅助进位标志。在进行算术运算时,如低字节中低4位(第3位)产生进位或借位时,则AF置1;否则AF置0。AF可用于十进制运算的校正。PF(ParityFlag)奇偶标志。用来为机器中传送信息时可能产生的代码出错情况提供检验条件。当运算结果中1的个数为偶数时置1,否则置0。②控制标志位1位DF(DirectionFlag)方向标志,用来在串处理指令中控制处理信息的方向。当DF位为1时,每次操作后使变址寄存器SI和DI减小,这样就使串处理从高地址向低地址方向处理。当DF位为0时,则使SI和DI增大,使串处理从低地址向高地址方向处理。③系统标志位有10位:TF(TrapFlag)陷阱标志,用于调试时的单步方式操作。IF(InterruptFlag)中断标志。IOPL(I/OPrivilegeLevel)I/O特权级标志。NT(NestedTask)嵌套任务标志,用来表示当前的任务是否嵌套在另一任务内。RF(ResumeFlag)恢复标志位,它与调试寄存器的断点一起使用,以保证不重复处理断点。VM(Virtual-8086Mode)虚拟8086模式位。AC(AlignmentCheckmode)对准检查方式位。VIF(VirtualInterruptFlag)虚拟中断标志。VIP(VirtualInterruptPendingflag)虚拟中断未决标志。ID(IDentificationflag)标识标志,程序有设置和清除ID标识的能力,以指示处理机对CP