第二章 8086计算机组织
 
  2. 专用寄存器

  8086的专用寄存器包括IP、SP和FLAGS三个16位寄存器。

  IP为指令指针寄存器,它用来存放将要执行的下一条指令地址的偏移量,它与段寄存器CS联合形成代码段中指令的物理地址。在计算机中,控制程序的执行流程就是通过控制IP的值来实现的。

  SP为堆栈指针寄存器,它与堆栈段寄存器联用来确定堆栈段中栈顶的地址,也就是说SP用来存放栈顶的偏移地址。

  FLAGS为标志寄存器,这是一个存放条件码标志、控制标志的16位寄存器。

  图2.4说明了8086中标志寄存器的内容,图中未标明的位暂不用。


    图2.4 8086的标志寄存器
          
  
  条件码标志用来记录程序中运行结果的状态信息,它们是根据有关指令的运行结果由CPU自动设置的。由于这些状态信息往往作为后续条件转移指令的转移控制条件,所以称为条件码。
  ① 进位标志 CF,记录运算时最高有效位产生的进位值。
  ② 符号标志 SF,记录运算结果的符号。结果为负时置1,否则置0。
  ③ 零标志  ZF,运算结果为0时ZF位置1,否则置0。
  ④ 溢出标志 OF,在运算过程中,如操作数超出了机器可表示数的范围称为溢出。溢出时OF位置1,否则置0。
  ⑤ 辅助进位标志 AF,记录运算时第3位(半个字节)产生的进位值。
  ⑥ 奇偶标志 PF,用来为机器中传送信息时可能产生的代码出错情况提供检验条件。当结果操作数中1的个数为偶数时置1,否则置0。


  控制标志位有3位:
  ① 方向标志 DF,在串处理指令中控制处理信息的方向。当DF=1时,串处理从高地址向低地址方向处理。当DF=0时,串处理就从低地址向高地址方向处理。
  ② 陷阱标志 TF,用于调试时的单步方式操作。当TF=1时,每条指令执行完后产生陷阱,由系统控制计算机;当TF=0时,CPU正常工作,不产生陷阱。
  ③ 中断标志 IF,用于控制可屏蔽硬件中断。当IF=1时,允许8086微处理器响应中断请求,否则关闭中断。

  8086提供了设置某些状态信息的指令。必要时,程序员可使用这些指令来建立状态信息。

  在调试程序Debug中提供了测试标志位的手段,它用符号表示某些标志位的值。表2.1说明这些标志位的符号表示。

  
 
 
               表2.1 标志位的符号表示
        标 志 名
       标 志 为1
     标 志 为0
       OF    溢出
      OV   (是)
    NV    (否)
       DF    方向
      DN   (减量)
    UP    (增量)
       IF    中断
      EI   (允许)
    DI    (关闭)
       SF    符号
      NG   (为负)
    PL    (为正)
       ZF    零
      ZR   (是)
    NZ    (否)
       AF    辅助进位
      AC   (是)
    NA    (否)
       PF    奇偶
      PE   (偶)
    PO    (奇)
       CF    进位
      CY   (是)
    NC    (否)