80X86标志寄存器及比较和跳转指令 zf pf sf cf of df cmp je jne jb jnb ja jna
来源:互联网 发布:rete算法源码 编辑:程序博客网 时间:2024/06/06 21:52
目录(?)[-]
- 标志寄存器
- ZF
- ZFZero Flag
- PF
- PFParity Flag
- SF
- SFSign Flage
- CF
- CFCarry Flage
- OF
- OFOver Flage
- DF
- DFDirection Flage
- 比较指令cmp
- 条件跳转指令
- ZF
标志寄存器
80X86的标志寄存器的结构如下
部分标志位说明
ZF
ZF==Zero Flag,
是零标志位,记录指令执行结果是事为零。如果一条指令执行后结果为零,ZF置位,也就是ZF的值为1,否则为0 。比如
- mov ax,1
- sub ax,1
ax-1=0,所以ZF=0 。
PF
PF==Parity Flag,
奇偶标志位,相关指令执行后,结果寄存器是所bit位中的1的个数是否为偶数,如果为偶数,PF=1,如果为奇数,PF=0。比如
- mov al,1
- or al,2
执行后,al中的结果为00000011B,有2个1,为偶数,所以PF=1。
SF
SF==Sign Flage,
符号标志位,记录相关指令执行后,结果是否为负。如果为负,SF=1;如果非负,SF=0 。
CF
CF==Carry Flage,
进位标志位,无符号运算后是否向更高位进位或借位。如果进位或者借位,CF=1;否则CF=0 。如果把指令看作有符号运算,则该标志会无意义。
OF
OF==Over Flage,
溢出标志位,有符号运算后,结果寄存器中的值是否超出其所能表达的范围。如果超出,则OF=1;如果没有超出,则OF=0 。比如
- mov al,98
- add al,99
如是把上面两条指令看作无符号运算的话,则不用理会OF标志会,因为OF只有对有符号运算才有意义。
注意CF和OF的区别:CF是对无符号数运算有意义的标志位,而OF是对有符号数运算有意义的标志位。比如,如果把上面两条指令看无符号运算,去看CF标志位才意义。
DF
DF=Direction Flage,
方向标志位,在串处理指令中,控制每次操作后si、di的增减。
DF=0 每次操作后,si、di递增;
DF=1 每次操作后,si、di递减。
可用cld指令将DF位置0,用std指令将DF位置1 。
比如指令movsb,是将一个字节从源地址复制到目标地址,指令最后一个字母b代表byte,指令执行过程如下
1、从si所指向的地址复制一个字节放到di所指向的地址;
2、如果DF=0,将寄存器si和寄存器di中的值加1;
如果DF=1,将寄存器si和寄存器di中的值减1。
比较指令cmp
cmp==compare,cmp是比较指令,功能相当于减法指令,但是不保存结果,只是执行后对标志寄存器产生影响,其他相关指令可以根据标志寄存器得知比较结果。比如
- cmp ax,bx
如果我们把ax和bx中的值看作无符号数,那么指令执行后,根据标志寄存器可作如下判断:
ZF=1说明(ax)=(bx)ZF=0说明(ax)!=(bx)CF=1借位,说明(ax)<(bx)CF=1或ZF=1借位(ax)<=(bx)CF=0(ax)>=(bx)CF=0且ZF=0(ax)>(bx)如果我们把ax和bx中的值看作有符号数,那么只查看SF标志(也可认为是结果负号标志位)位并不能得出两个数的大小关系,因为两个有符号数相减有可能溢出,得出的结果相反。比如执行如下指令
- cmp ax,bx
条件跳转指令
- 80X86标志寄存器及比较和跳转指令 zf pf sf cf of df cmp je jne jb jnb ja jna
- 80X86标志寄存器及比较和跳转指令 zf pf sf cf of df cmp je jne jb jnb ja jna
- 80X86标志寄存器及比较和跳转指令 zf pf sf cf of df cmp je jne jb jnb ja jna
- 指令: JO、JNO、JB、JNB、JE、JNE、JBE、JA、JS、JNS、JP、JNP、JL
- 汇编指令: JO、JNO、JB、JNB、JE、JNE、JBE、JA、JS、JNS、JP、JNP、JL
- 汇编指令: JO、JNO、JB、JNB、JE、JNE、JBE、JA、JS、
- [Hb-XI] 标志寄存器 cmp jb ja指令编程
- 标志寄存器01 ZF SF PF
- 汇编指令: JO、JNO、JB、JNB、JE、JNE、JBE、JA、JS、JNS、JP、JNP、JL、JNL、JNG、JG、JCXZ、JECXZ、JMP、JMPE
- 汇编指令: JO、JNO、JB、JNB、JE、JNE、JBE、JA、JS、JNS、JP、JNP、JL、JNL、JNG、JG、JCXZ、JECXZ、JMP、JMPE
- 汇编指令: JO、JNO、JB、JNB、JE、JNE、JBE、JA、JS、JNS、JP、JNP、JL、JNL、JNG、JG、JCXZ、JECXZ、JMP、JMPE
- 标志寄存器,ZF,PF标志
- 170416 汇编-标志寄存器:SF、CF、OF
- 汇编语言跳转指令: JMP、JECXZ、JA、JB、JG、JL、JE、JZ、JS、JC、JO、JP 等
- 汇编跳转指令: JMP、JECXZ、JA、JB、JG、JL、JE、JZ、JS、JC、JO、JP 等
- 第012课 汇编-af,zf,sf,of及标志位操作指令
- 汇编 OF ZF PF SF的问题
- 学 Win32 汇编[28] - 跳转指令: JMP、JECXZ、JA、JB、JG、JL、JE、JZ、JS、JC、JO、JP 等
- 通过COM组件方式实现java调用C#写的DLL文件 转
- [RTT例程练习] 4.4 定时器控制
- java电话面试资料01
- java IO
- namespace作用域
- 80X86标志寄存器及比较和跳转指令 zf pf sf cf of df cmp je jne jb jnb ja jna
- jQuery-强大的jQuery选择器 (详解)
- mfco42d.dll 文件替换为新版本
- 自动装箱和拆箱的使用(autoboxing/unboxing)
- hdu3400 两次三分
- MARK: 免费DNS解析 DNSPod
- jquery 文字(颜色)闪烁显示
- int 13h 返回信息
- 花生壳使用