寄存器的介绍.docxVIP

  • 10
  • 0
  • 约4.3千字
  • 约 5页
  • 2021-07-11 发布于湖南
  • 举报
寄存器的介绍 1.通用寄存器 图2.3中除阴影区以外的寄存器是8086/8088和80286所具有的寄存器,它们都是16位寄存器。其中AX、BX、CX、DX 可称为数据寄存器,用来暂时存放计算过程中所用到的操作数、结果或其他信息。它们都可以以字(16位)的形式访问,或者也可以以字节(8位)的形式访问。例如,对AX 可以分别访问高位字节 AH 或低位字节 AL。这4个寄存器都是通用寄存器,但它们又可以用于各自的专用目的。 AX(accumulator)作为累加器用,所以它是算术运算的主要寄存器。在乘、除等指令中指定用来存放操作数。另外,所有的I/O 指令都使用这一寄存器与外部设备传送信息。 BX(base)可以作为通用寄存器使用。此外在计算存储器地址时,它经常用作基址寄存器。 CX(count)可以作为通用寄存器使用。此外常用来保存计数值,如在移位指令、循环(loop)和串处理指令中用作隐含的计数器。 DX(data)可以作为通用寄存器使用。一般在作双字长运算时把 DX 和 AX 组合在一起存放一个双字长数,DX 用来存放高位字。此外,对某些 I/O 操作,DX 可用来存放 I/O的端口地址。 SP、BP、SI、DI四个16位寄存器可以像数据寄存器一样在运算过程中存放操作数,但它们只能以字(16位)为单位使用。此外,它们更经常的用途是在存储器寻址时,提供偏移地址。因此,它们可称为指针或变址寄存器。在这些寄存器中,SP(stack pointer)称为堆栈指针寄存器,BP(base pointer)称为基址指针寄存器,它可以与堆栈段寄存器SS联用来确定堆栈段中的某一存储单元的地址。SP用来指示段顶的偏移地址,BP可作为堆栈区中的一个基地址以便访问堆栈中的信息。SI(source index)源变址寄存器和 DI(destination index)目的变址寄存器一般与数据段寄存器DS联用,用来确定数据段中某一存储单元的地址。这两个变址寄存器有自动增量和自动减量的功能,所以用于变址是很方便的。在串处理指令中,SI和 DI作为隐含的源变址和目的变址寄存器,此时SI和 DS联用,DI和附加段寄存器ES联用,分别达到在数据段和附加段中寻址的目的。 2.专用寄存器 8086/8088和80286的专用寄存器包括IP、SP和FLAGS3个16位寄存器。 IP(instruction pointer)为指令指针寄存器,它用来存放代码段中的偏移地址。在程序运行的过程中,它始终指向下一条指令的首地址,它与段寄存器 CS联用确定下一条指令的物理地址。当这一地址送到存储器后,控制器可以取得下一条要执行的指令,而控制器一旦取得这条指令就马上修改IP的内容,使它指向下一条指令的首地址。可见,计算机就是用IP寄存器来控制指令序列的执行流程的,因此IP寄存器是计算机中很重要的一个控制寄存器。 SP为堆栈指针寄存器,它与堆栈段寄存器联用来确定堆栈段中栈顶的地址,也就是说SP用来存放栈顶的偏移地址。 FLAGS为标志寄存器,又称程序状态寄存器(program status word,PSW)。这是一个存放条件码标志、控制标志和系统标志的寄存器。 80386及其后继机型也有三个32位专用寄存器,它们是 EIP、ESP和 EFLAGS。它们的 作用和相应的16位寄存器相同。 下面介绍标志寄存器。图2.4说明了80x86中标志寄存器的内容,图中未标明的位暂不用。 (1)条件码标志用来记录程序中运行结果的状态信息,它们是根据有关指令的运行结果由CPU 自动设置的。由于这些状态信息往往作为后续条件转移指令的转移控制条件,所以称为条件码。它包括以下6位: 溢出标志(overflow flag,OF),在运算过程中,如操作数超出了机器能表示的范围称为溢出。此时OF位置1,否则置0。 符号标志(sign flag,SF),记录运算结果的符号,结果为负时置1,否则置0。 零标志(zero flag,ZF),运算结果为0时ZF位置1,否则置0。 进位标志(carry flag,CF),记录运算时从最高有效位产生的进位值。例如,执行加法指令时,最高有效位有进位时置1,否则置0。 辅助进位标志(auxiliary carry flag,AF),记录运算时第3位(半个字节)产生的进位值。例如,执行加法指令第3位有进位时置1,否则置0。 奇偶标志(parity flag,PF),用来为机器中传送信息时可能产生的代码出错情况提供检验条件。当结果操作数中1的个数为偶数时置1,否则置0。 (2)控制标志位为方向标志(direction flag,D

文档评论(0)

1亿VIP精品文档

相关文档