精华内容
下载资源
问答
  • 标志寄存器flag

    千次阅读 2012-10-29 22:34:51
    标志寄存器flag     15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00  0 0 0 0 of df if tf sf zf 0 af 0 pf 0 c

    标志寄存器flag

     

     

    15   14   13   12   11   10   09   08   07    06   05   04    03   02    01    00

     0     0     0     0    of    df    if      tf     sf     zf     0    af     0     pf     0      cf

     

    ZF是flag的第6位,零标志位,判断结果是否为0,结果为0,ZF=1   

    PF是flag的第2位,奇偶标志位,运算结果二进制数中1的个数为偶数,PF=1   

    SF是flag的第7位,符号标志位,有符号数 运算结果为负数,SF=1   

    CF是flag的第0位,进位标志位,无符号数 运算结果有进/借位,CF=1 

    OF是flag的第11位,溢出标志位,有符号数 运算结果溢出,OF=1 

    DF是flag的第10位,方向标志位,DF=0 每次操作后 si,di递增 

                                  DF=1 每次操作后 si,di递减

    TF是flag的第8位,TF=1,产生单步中断,引发中断过程

    IF是flag的第9位,IF=1,CPU响应中断,引发中断过程

                     IF=0,不响应可屏蔽中断

     

    add、sub、mul、div 、inc、or、and等运算指令影响flag

    mov、push、pop等传送指令对flag没影响

     

    abc  带位加法指令,利用CF位上记录的进位值

    abc ax,bx 实现功能(ax)=(ax)+(bx)+CF

     

    sbb  带位减法指令,利用CF位上记录的借位值

    sbb ax,bx 实现功能(ax)=(ax)-(bx)-CF

     

    cmp  比较指令,相当于减法指令,不保存结果,只影响flag相关各位

    cmp ax,bx    如果(ax)=(bx), 则 zf=1

                 如果(ax)≠(bx), 则 zf=0

                 如果(ax)<(bx), 则 cf=1

                 如果(ax)≥(bx), 则 cf=0

                 如果(ax)>(bx), 则 cf=0且zf=0

                 如果(ax)≤(bx), 则 cf=1或zf=1

    如果因为溢出导致了实际结果为负,那么逻辑上真正的结果必然为正

    如果因为溢出导致了实际结果为正,那么逻辑上真正的结果必然为负

     

    cmp指令和条件转移指令配合使用

       指令         含义            检测的相关标志位

       je           等于则转移      zf=1

       jne          不等于则转移    zf=0

       ja           高于则转移      cf=0且zf=0

       jb           低于则转移      cf=1

       jna          不高于则转移    cf=1或zf=1

       jnb          不低于则转移    cf=0

     

    […]是闭区间,包括两端点的值 

    (…)是开区间,不包括两端点的值

     

    DF标志和串传送指令

       DF 方向标志位,在串处理指令中,控制每次操作后si、di的增减

       df=0  每次操作后si、di递增

       df=1  每次操作后si、di递减

    movsb:

       相当于mov es:[di],byte ptr ds:[si]

       如果 df=0              如果 df=1

       inc di                 dec di

       inc si                 dec si

    movsw:

       相当于mov es:[di],word ptr ds:[si]

       如果 df=0              如果 df=1

       add si,2               sub si,2

       add di,2               sub di,2

    movsb或movsw和rep配合使用,格式如下:

       rep movsb

       相当于

       s:movsb

          loop  s

       rep的作用是根据cx的值,重复执行rep后面的串传送指令 

     

    cld  将标志寄存器中的DF位置0,(配合movsb,则是正向传送)

    std  将标志寄存器中的DF位置1,(配合movsb,则是反向传送)

     

    pushf    标志寄存器的值压栈

    popf 标志寄存器的值出栈

     

    标志位在debug中的表示

    AX=0000  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000

    DS=****  ES=****  SS=****  CS=****  IP=0100  NV  UP  EI  PL  NZ  NA  PO  NC

    flag                                                of    df         sf   zf        pf    cf

    值为1的标记                                 OV  DN      NG  ZR      PE  CY

    值为0的标记                                 NV  UP       PL  NZ       PO  NC

     

    确定补码:

    Xh为8位,X∈(80h,ffh),则Xh是(Xh-256)的补码

    Xh为16位,X∈(8000h,ffffh),则Xh是(Xh-65535)的补码


    展开全文
  • 标志寄存器FLAG

    2013-06-10 19:05:04
    FLAG标志寄存器按位操作,FLAG是16位寄存器,第0位为CF标志第2位为PF标志... 如图(FLAG各标志位以及在DEBUG中对应的显示):

    FLAG标志寄存器按位操作,FLAG是16位寄存器,第0位为CF标志第2位为PF标志...

    如图(FLAG各标志位以及在DEBUG中对应的显示):


    展开全文
  • 汇编标志寄存器Flag

    2021-03-22 21:58:11
    1、标志寄存器Flag Flag是16位的寄存器,有9个标志位,其中6个状态标志位,3个控制标志位 CPAZSO 对应为0 2 4 6 7 11 2、6个状态标志位 CF:进位或者借位 D7或者D15有进位或者借位时CF=1,并且debug显示为CY 否则CF=...

    汇编标志寄存器
    用于汇编语言第四版(HUT)的复习

    1、标志寄存器Flag

    Flag是16位的寄存器,有9个标志位,其中6个状态标志位,3个控制标志位

    CPAZSO 对应为0 2 4 6 7 11

    2、6个状态标志位

    CF:进位或者借位 D7或者D15有进位或者借位时CF=1,并且debug显示为CY

    否则CF=0,debug显示为NC

    PF:奇偶标志位 运算结果低8位(AL AH等) 化为2进制 为奇数个1时PF=0 debug显示 PO

    否则 偶数个1时PF=1 debug显示PE

    AF:辅助进位标志 运算结果的低4位向前1位有进位或者借位时 AF=1,debug显示AC

    否则无进位和借位时AF=0,debug显示NA

    ZF:零标志位 运算结果为0时 则ZF=1,debug显示ZR

    否则ZF=0,debug显示NZ

    SF:符号标志位 运算结果为负数时,SF=1,debug显示NG

    否则SF=0,debug显示PL

    OF:溢出标志位 如果运算结果溢出(与常识不符合 例如两个正数相加为负数 或者两个异数相减为负数),则ZF=1,debug显示OV

    否则ZF=0,debug显示NV

    3、3个控制标志位

    TF:追踪标志位

    TF=1则单步执行,执行之后TF=0 即中断然后正常执行

    IF:中断允许标志位

    IF=1则允许CPU响应外部中断 debug 显示EI

    IF=0,则禁止 debug显示DI

    DF:方向标志位

    DF=1,地址减方向 debug显示DN

    DF=0,地址增方向 debug显示UP

    展开全文
  • mov,push,pop等传送指令,执行结果对标志寄存器并无影响! ZF标志:结果为0,则ZF为1;不为0,ZF为0;(zeroflag) PF标志:如果1的个数为偶数,pf=1;如果为奇数,那么pf=0; SF标志:结果为负,则SF为1;...

    注意:

    mov,push,pop等传送指令,执行结果对标志寄存器并无影响!

    ZF标志:结果为0,则ZF为1;不为0,ZF为0;(zero flag)

    PF标志:如果1的个数为偶数,pf=1;如果为奇数,那么pf=0;

    SF标志:结果为负,则SF为1;结果非负数,SF为0

    CF标志:是对无符号数运算有意义的标志位【看有无进位】

    OF标志:对有符号数运算有意义的标志位【看有无溢出】

    监测点11.1:

    sub al,al      al=0h        ZF=1        PF=1        SF=0        

    al为0h,结果为0所以ZF为1代表真,有0个偶数所以PF为1,结果为非负,所以SF为0。当我们把数据当做无符号数来计算,SF位的值没有意义。

    mov al,1      al=1h        ZF=1        PF=1        SF=0       

     mov是传送指令对标志寄存器没有影响,标志寄存器不发生改变。

    push ax       ax=1h        ZF=1        PF=1        SF=0      

    push是传送指令对标志寄存器没有影响,标志寄存器不发生改变。

    pop bx        bx=1h        ZF=1        PF=1        SF=0      

    pop是传送指令对标志寄存器没有影响,标志寄存器不发生改变。

    add al,bl     al=2h        ZF=0        PF=0        SF=0      

    2h的二进制为0010 ,结果不为0则ZF为0,奇数个1则PF为0,SF为0

    add al,10     al=12h       ZF=0        PF=1        SF=0    

     12h的二进制为10010,这是8位寄存器所以值为0010,结果不为0则ZF为0,偶数个1则PF为1,SF为0

    mul al        ax=144h      ZF=0        PF=1        SF=0    

     144h的二进制为101000100,这是16位寄存器所以值为01000100,结果部位0则ZF为0,偶数个1则PF为1,SF为0

    监测点11.2

    展开全文
  • 8086标志寄存器FLAG

    2013-06-15 13:00:48
    8086CPU提供一个特殊的寄存器称为标志寄存器,里面包含9个标志,用来反映处理器的状态和运算结果的某些特征。FLAG是按位起作用的
  • 常见的标志寄存器FLAG的标志位

    千次阅读 2017-02-23 21:32:14
    运算结果标志位1、进位标志CF(Carry Flag)进位标志CF主要用来反映运算是否产生进位或借位。如果运算结果的最高位产生了一个进位或借位,那么,其值为1,否则其值为0。 使用该标志位的情况有:多字(字节)数的加减...
  • 16位模式下,标志寄存器名称为FLAG,寄存器大小16位。 32位模式下,标志寄存器的名称为EFLAG,寄存器大小32位。 64位模式下,为RFLAG,寄存器大小64位。 EFLAG寄存器各个位的用途如下,其中灰色的部分为保留位。 ...
  • 标志寄存器flag

    2019-08-13 16:02:36
    8086CPU的标志寄存器有16位,其中储存的信息通常被称为程序状态字。 其他寄存器时用来存放数据的,整个寄存器具有一个含义。 flag寄存器是按位起作用的,它的每一位都有专门的含义,记录特定的信息。 8086CPU的...
  • 8086标志寄存器Flag Register is a 16-bit register, but there are only 9 flags available in the 8086 microprocessor. The rest 7 bits are hence left idle. 标志寄存器是一个16位寄存器,但是8086微处理器中...
  • 标志寄存器flag) 1用来存储相关指令的某些数据结果 2用来为CPU执行相关的指令提供行为依据 3用来控制CPU的相关工作方式 Flag寄存器是按位起作用,每一位都有专门的含义 8086CPU 0(CF),2(FF),4(AF),6(ZF),7...
  • 8086标志寄存器Flag Register)

    千次阅读 2019-08-30 13:59:55
    标志寄存器设计为16位,实际使用9位,其中6位用以存放算术逻辑单元运算后的结果特征,称为状态标志;另外3位通过人为设置,用以控制8086的三种特定操作,称为控制标志。 6个状态标志位定义如下: 进位标志:...
  • flag 标志寄存器

    千次阅读 2013-10-08 18:08:59
    8086 cpu 的flag寄存器的结构如下 flag的1,3,5,12,13,14,15bit在8086cpu中没有使用,不具有任何含义,而其他的都有特殊的含义 ...可以影响标志寄存器的指令一般有sub、mul、div、inc、or、and
  • 这种寄存器被称为标志寄存器FLAG 8086CPU中标志寄存器是16位的。 0x1、ZF标志(Zero Flag) ZF标志是FLAG寄存器的第六位。零标志位 他记录指令执行后,其结果是否为0。 如果结果为0,ZF= 1 如果结果不为0,ZF= 0 ...
  • 标志寄存器Problem statement: 问题陈述: Write an assembly language program in 8085 microprocessor to access Flag register and exchange the content of flag register F with register B. 在8085微处理器...
  • flag标志寄存器

    2013-01-18 10:21:00
    flag寄存器 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0  OF DF IF TF SF ZF AF PF CF  ZF标志标志位  记录相关指令执行后:  如果结果为0,ZF=1  如果结果不为0,...
  • 转载 标志寄存器总结

    2019-07-16 20:32:53
    原文地址http://blog.csdn.net/pplsunny/article/details/8126308 标志寄存器flag 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00 0 0 0 0 of df if tf...
  • 标志寄存器The Flag register is basically a special type of register or we can also say that they are Special Purpose Register. And based upon the value of result after any type of arithmetic and ...
  • 标志寄存器 flag 和其他寄存器不一样,其他寄存器是用来存放数据的,都是整个寄存器具有一个含义。 而flag寄存器是按位起作用的,也就是说,它的每一位都有专门的含义,记录特定的信息。 8086CPU的flag寄存器的...
  • 标志寄存器

    2018-11-12 09:09:00
    CPU内部的寄存器中,有...这种特殊的寄存器在8086CPU种,被称为标志寄存器flag)。8086CPU的标志寄存器有16位,其中存储的信息通常被称为程序状态字(PSW)。 8086CPU的flag寄存器的结构如下图。 flag的1、3、5...
  • mov 、push、pop指令对该标志位无影响。 以add al,xxx 来演示OF的变化: 先将al和xxx( 立即数 )的计算机十六进制补码值转换为我们所常用的十进制值,然后 将十进制的计算结果与-128~127进行比较...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 454
精华内容 181
关键字:

标志寄存器flag