一个懒人专用文章归档神器,如果你不能成为压路机的一部分,那么你就只能成为道路的一部分 Bala~bala~

寄存器各flag理解

汇编 懒人 1579℃ 0评论

第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;主要是给有符号数使用

-r用这个指令,得到的信息右下角: NV UP EI PL NZ NA PO NC 
这些符号代表的就是标志寄存器里常用标志位的值。这个是符号值对应表:溢出标志OF(Over flow flag) OV(1) NV(0)

方向标志DF(Direction flag) DN(1) UP(0)

中断标志IF(Interrupt flag) EI(1) DI(0)

符号标志SF(Sign flag) NG(1) PL(0)

零标志ZF(Zero flag) ZR(1) NZ(0)

辅助标志AF(Auxiliary carry flag) AC(1) NA(0)

奇偶标志PF(Parity flag) PE(1) PO(0)

进位标志CF(Carry flag) CY(1) NC(0)

转载请注明:懒人档案室 » 寄存器各flag理解

喜欢 (0)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址