8086标志寄存器介绍及作用(未完)
标志寄存器结构:
寄存器分类:
状态标志:CF(无符),PF,AF (无符),ZF,SF (有符),OF (有符)
控制标志:TF,IF,DF
1、CF标志(carry flag)
进位标志位
记录无符号运算时的进位或借位,便于多位数的加减运算
CF=NC/0,说明上一步操作无进位或借位
CF=CY/1,说明上一步操作有进位或借位
2、PF标志(parity flag)
奇偶标志位
记录上一次操作结果二进制位中1的个数
PF=PO/0,1的个数为奇数个
PF=PE/1,1的个数为偶数个
3、AF标志(auxiliary flag)
辅助进位
AF=NA/0,说明上一步操作无进位或借位
AF=AC/1,说明上一步操作有进位或借位
4、ZF标志(zero flag)
零标志位
记录上一次操作结果是否为0
ZF==NZ/0,上一次操作结果为非0
ZF=ZR/1,上一次操作结果为0
5、SF标志(sign flag)
符号标志位
记录上一次有符号数操作结果是否为负
SF==PL/0,上一次操作结果为非0
SF=NG/1,上一次操作结果为0
6、OF标志(over flaw flag)
溢出标志位
记录上一次有符号数加减运算的溢出
OF=NV/0,上一次有符号运算未溢出
OF=OV/1,上一次有符号运算溢出
7、IF标志(interrupt flag)
允许中断标志位
待补充
8、DF标志(direction flag)
方向标志位
待补充
9、TF标志(待补充)
运算符对标志寄存器的影响:
1、add:加法指令(CF,SF,PF,ZF,AF,OF)
有符号数的加法在加法器通过补码进行计算,其在CPU内部运算的规则与无符号数加法相同,所以在CPU内部执行一次加法指令,既可以看作是有符号数的加法,也可以看作是无符号数的加法
所以加法指令既影响CF(无符号),也影响SF(有符号)
2、sub:减法指令
与加法指令相同
3、adc:进位加法指令
与加法指令相同
此外进位加法的实现还用到了CF
4、sbb:借位减法指令
与加法指令相同
此外借位减法的实现还用到了CF
5、cmp:比较指令
cmp可看作两操作数相减(但cmp实际不改变目标寄存器或内存单元的数据)
cmp a,b
ZF:0标志位
CF(无符号 ):进(借)位标志位
SF(有符号):符号标志位
OF(有符号):溢出标志位
将a-b看作是无符号数运算
ZF=0:a=b
CF=0:a>=b
CF=1:a<b
将a-b看作是有符号数运算
ZF=0:a=b
OF=0,SF=0(无溢出,结果为正):a>=b
OF=0,SF=1(无溢出,结果为负):a<b
OF=1,SF=0(有溢出,结果为正):a<b
OF=1,SF=1(有溢出,结果为负):a>b
6、and与指令、or或指令、nor异或指令
链接
总结
以上是生活随笔为你收集整理的8086标志寄存器介绍及作用(未完)的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 8086CPU写汇编的规则
- 下一篇: 对移码满足二进制减法的小思考