寄存器各flag理解

第0位 CF(carry flag):记录有无进位,主要是记录超过寄存器字长的虚拟一位,当虚拟位是1的话,CF = 1;虚拟位为0的的话,CF = 0;这里有一个问题我郁闷了两天翻《计组》中的运算才搞明白,虽然机器码都是二进制码,但是存储的方式是补码,负数补码是2^(n+1) + x,【n:整数位数, x:真值】所以说位数比单纯的取反加1多一位,所以计算得出的虚拟为可以是1,给无符号数使用

第2位 PF(parity flag):记录机器码的1个数,个数为偶数,PF = 1;个数为奇数,Pf = 0;
第4位 AF
第6位 ZF(zero flag):当机器码全为0时, ZF = 0;不全为0是,ZF = 1;
第7位 SF(sign flag):记录最高位的值,当最高位为1时,SF = 1;最高位为0是,SF = 0;给有符号数使用
第8位 TF(trap flag):cpu单步执行, TF = 1;
第9位 IF(interrup flag):记录可屏蔽外中断是否立即处理, IF = 0,屏蔽外中断, 命令cli;IF = 1,处理外中断, 命令sti;
第10位 DF(direction flag):记录串移动的方向,ip = ip + i,命令std, DF = 1;ip = ip - i, 命令cld, DF = 0;
第11位 OF(overflow flag):记录有无溢出,只有当两个最高位同号时,才有可能,当结果与运算数异号,OF = 1;主要是给有符号数使用
 

posted on 2012-12-13 14:56  人世间的金某人  阅读(355)  评论(0编辑  收藏  举报

导航