当前位置: 代码迷 >> 汇编语言 >> 1.1 汇编语言中OF/DF/IF/TF/SF/ZF/AF/PF/CF诀别都是什么标志寄存器
  详细解决方案

1.1 汇编语言中OF/DF/IF/TF/SF/ZF/AF/PF/CF诀别都是什么标志寄存器

热度:474   发布时间:2016-05-02 04:27:44.0
1.1 汇编语言中OF/DF/IF/TF/SF/ZF/AF/PF/CF分别都是什么标志寄存器?
1.1 汇编语言中OF/DF/IF/TF/SF/ZF/AF/PF/CF分别都是什么标志寄存器?
这些都对应程序状态字寄存器PSW中序号0~11的标志位 用 0/1表示是否有效
分两大类
条件标志:反映包含在ALU算术逻辑运算后的结果特征
OF 溢出标志   :运算时,若操作数超出了机器所能表示的范围为,则产生溢出,OF=1,否则OF=0
SF 符号标志    ;设置成运算操作结果的符号状态。当结果为负时,SF=1,否则SF=0
ZF 零标志 结果=0,ZF=1,结果≠0,ZF=0
AF 辅助进位标志 ,运算过程中第三位有进位,置AF=1,否则AF=0
PF 奇偶标志: 当操作数中有偶数个1时,置PF=1,否则PF=0
CF进位标志 : 最高有效位产生的进位值,例如 执行加法指令时,MSB有进,置CF=1;否则CF=0
控制标志:控制执行特殊的功能
DF放向标志:用于字符串操作指令程序设计。
DF置0,则串操作控制处理方向,从带有最低地址的第一个元素逐个处理,否则,从高向低
ID中断允许标志: IF=1,CPU允许中断,IF=0,则CPU关闭中断
TF跟踪标志:TF=1,机器进入单步工作方式,每条机器指令执行后,显示结果及寄存器状态,若TF=0,则机器处在连续工作方式。此标志为调试机器或调试程序发现故障而设置。
具体判断
SF:运算结果为负时置1,为正则清零;
也就是说,它与运算结果的最高位相同。

OF:有符号数运算溢出时置1,不溢出则清零;
比如同号相加结果变号,或者正数减负数结果是负数(异号相减结果与减数相同)

CF:无符号数运算有进位或借位时置1,否则清零;
看最高位的进位,借位,这最容易理解。

ZF:结果为0时置1,结果不是0则清零。
这个不用多解释了吧

另外,有一些运算对各个位的设置不是按运算处理,有它自己的专门规定,比如移位指令,专门的标志位设置指令,影响到标志位的堆栈操作指令等。也有一些指令影响标志位,但结果不确定无意义,如除法指令。
  相关解决方案