汇编第十一节-标志寄存器

第十一节:标志寄存器

cpu内部的寄存器中,有一种特殊的寄存器具有以下3种作用

a.用来存储相关指令的某些执行结果
b.用来为cpu执行相关指令提供行为依据
c.用来控制cpu的相关工作方式

这种特殊的寄存器在8086CPU中,被称为标志寄存器。
其中存储的信息通常称为程序状态字(PSW)。
标志寄存器(简称flag),不同于其他的寄存器(用来存放的,整个寄存器都具有一个含义)
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

*表示在8086CPU上没有任何意义,其它对应的位都具有特殊含义。

1.ZF标志(第6位)-零标志位-Zero Flag

记录相关指令执行后,如果结果=0,zf=1;结果!=0,zf=0;

mov ax,1
sub ax,1/and ax,0
zf=1;
mov ax,2
sub ax,1/or ax,0
zf=0;

2.PF标志(第二位)-奇偶标志位-Parity Flag

记录相关指令执行后,其结果的所有bit位中1的个数是否为偶数。
如果1的个数为偶数,pf=1。如果为奇数,pf=0;

mov al,1
add al,10

执行后,结果为00001011B,3个1,pf=0

3.SF标志(第7位)-符号标志位-Sign Flag

记录相关指令执行后,其结果是否为负
如果结果为负,sf=1;如果非负,sf=0;
计算机中通常用补码表示有符号数据。一个数据可以看作有符号数,也可以看作无符号数。
SF标志就是CPU对有符号数运算结果的一种记录,记录数据的正负。

mov al,10000001B
add a1,l

结果为10000010B,sf=1,表示:如果指令进行的是有符号数运算,那么结果为负。

4.CF标志(第0位)-进位标志位-Carry Flag

在进行无符号数运算的时候,记录运算结果的最高有效位向更高位的进位值,或从更高位的借位值

mov al,98H
add al,al       ;(al)=30H,cf=1,cf记录从最高有效位向更高位的借位
add al,al       ;(al)=60H,cf=0;

5.OF标志(第11位)-溢出标志位-Overflow Flag

在进行有符号数运算的时候,结果超出了机器所能表示的范围称为溢出

mov al,0F0H     ;F0H,为有符号数-16的补码
add al,088H     
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值