• 【笔记】【汇编语言】第11章 标志寄存器


    11.0 概述
      CPU内部寄存器中,有一种特殊的寄存器(对不同的处理机,个数和结构可能不同),具有以下三种作用
      (1) 用来存储相关指令的某些执行结果
      (2) 用来为CPU执行相关指令提供行为依据
      (3) 用来控制CPU的相关工作方式
      这种特殊的寄存器在8086CPU中被称为标志寄存器.标志寄存器有16位,其中存储的信息通常被称为程序状态字(PSW).以下标志寄存器简称flag.
      flag寄存器与其他寄存器不同,是按位起作用的,每一位都有专门的含义,记录特定的信息.
      15    14    13    12    11 OF 10 DF 09 IF 08 TF 07 SF 06 ZF 05    04 AF 03    02 PF 01    00 CF
     
    11.1 ZF标志
      零标志位,记录相关指令执行后,结果是否为0.如果结果为0,ZF=1,如果不为0,ZF=0.
      注:在8086CPU指令集中,有的指令的执行是影响标志寄存器的(大多是运算指令),有的指令的执行对标志寄存器没有影响(大多是传送指令).
     
    11.2 PF标志
      奇偶标志位,记录相关指令运行后,结果中所有bit位中1的个数是否为偶数,如果是偶数,PF=1,否则为0.
     
    11.3 SF标志
      符号标志位,表示结果是否为负,如果为负,SF=1,否则为0.
      注:CPU在执行ADD指令的时候,必然会影响到SF标志,至于我们需不需要这种影响,就看我们如何看待指令所进行的运算了.
     
    11.4 CF标志
      进位标志位.在进行>>无符号数<<运算的时候,记录了运算结果的最高有效位向更位的进位值,或从更高位的借位值.
     
    11.5 OF标志
      举出标志位,记录了>>有符号数<<运算结果是否溢出,溢出置1,否则置0.
     
      注:CF和OF的区别,CF是对无符号数运算有意义的标志,OF是对有符号数运算有意义的标志.他们之间没有任何关系.
     
    11.6 adc指令
      带进位加法指令(利用CF)
      adc reg1,reg2
      功能: (reg1)=(reg1)+(reg2)+CF
      注:adc所使用的借位值受上一条指令影响,可利用adc执行对任意大数据的加法(通过循环),但注意循环内部不要影响到CF.
     
    11.7 sbb指令
      带借位减法指令(利用CF)
      sbb reg1,reg2
      功能:(reg1)=(reg1)-(reg2)-CF
     
    11.8 cmp指令
      比较指令,功能相当于减法指令,只是不保存结果,但影响flag各个位,其他指令通过识别这些标志位来得知比较结果.
      影响的标志位有:zf,pf,sf,cf.of
     
      >>>>如果因为溢出而导致实际结果为负,那么逻辑上真正的结果必然为正,反之亦然<<<<
     
    11.9 检测比较结果的条件转移指令
      je:jump equal,等于则转移,判断zf=1
      jne:jump not equal,不等于刚转移,判断zf=0
      jb:jump below,低于则转移,判断cf=1
      jnb:jump not below,不低于则转移,判断cf=0
      ja:jump above,高于则转移,判断cf=0且zf=0
      jna:jump not above,不高于则转移,判断cf=1或zf=1
     
    11.10 DF标志和串传送指令
      DF:方向标志位,在串处理指令中,控制每次操作后si,di的增减.
      8086CPU中的串传送指令:movsb,movsw,经常配合rep使用,如rep movsb或rep movsw
      8086CPU提供两条指令对DF位进行设置.
      cld:置DF位为0.
      std:置DF位为1.
     
      movsb功能描述: mov es:[di],byte ptr ds:[si]
      movsw功能描述: mov es:[di],word ptr ds:[si]
     
     
    11.11 pushf和popf
      标志寄存器压栈,出栈指令
     
    11.12 标志寄存器在debug中的表示
      标志    值为1的标志    值为0的标志
      OF      OV             NV
      SF      NG             PL
      ZF      ZR             NZ
      PF      PE             PO
      CF      CY             NC
      DF      DN             UP
     
    实验11 编写子程序
      略

  • 相关阅读:
    Python基础知识随手记
    Java异常笔记整理
    LDAP笔记
    IntelliJ IDEA14导入项目
    字符编码
    认识显示器接口..
    4GB的内存条在32位系统中只能显示为3GB左右的原因(转)
    Velocity截取字符串.
    veloeclipse插件安装
    Velocity使用
  • 原文地址:https://www.cnblogs.com/AzikPhil/p/note_asm2_11.html
Copyright © 2020-2023  润新知