标志寄存器
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
O D I T S Z A P C
CF进位标志位: 主要用于运算是否产生进位或借位,进位置1,其他情况是0
PF奇偶标志: 用于反映运算结果中1的个数,如果1的个数为偶数,则OF被置1,否则清零
AF 辅助进位标志位 在字节和字操作,低半字节向高字节进位或进位,辅助进位标志位AF被置1,否则AF清0
ZF零标志位: 用于反映运算结果是否为0,如果运算结果为0,则ZF置1,否则0
SF符号标志 用于反映运算结果的符号位,运算结果最高位位1,则SF被置1则0
TF追踪标志 TF置1后,CPU进入单步方式
IF中断允许标志 IF为1时,CPU能够响应外部的可屏蔽中断请求,
IF为0时,CPU能够不响应外部的可屏蔽中断请求
DF方向标志 为1时,串操作指令按减方式,改变有关的存储器指针值
DF为0时,串操作指令按加方式,改变有关的存储器指针值
OF溢出标志位 用于反映有符号加减运算是否溢出,如果超出了8位或16位的表示范围,称为溢出。
如溢出,则OF置 1, 否则置0(两个正数相加得出负数或者两个负数两家得出正数)
/*
push 1
popf
*/cf=1
/*
0000111111010101
push 0fd5h
popf //标志寄存器全置1
*/
CF 进位借位标志位,用于反映运算结果否产生加减乘除法进位借位,进位借位置1,其他情况为0
add,adc,cmp,sub,sbb,neg,xor,mul,imul,clc,stc
PF 奇偶标志位,用于反映运算结果1的个数为偶数,偶数置1,奇数清0
inc,dec,sub,add,cmp
AF 辅助进位标志位,字节或字操作低半字节向高字节进位,进位AF置1,否则清0
inc
ZF 符号标志位,用于反映运算结果是否为0,为0置1,否则清0
xor,add,sub,inc,test,and,or,cmp
SF 符号标志位,用于反映运算结果是正数还是负数,为1即是负数,为0即是正数
cmp,sub,xor,test
cmp eax,eax 影响标志位
jl 00401000 根据标志位进行跳转
jl 小于 sf置1跳转
jle 小于等于 sf置1或zf置1跳转
jg 大于 zf置0跳转
jge 大于等于 sf置0跳转
jb 低于 cf置1跳转
jbe 低于等于 zf置1跳转
jnb 不低于 cf置0跳转
ja 高于 zf置0跳转
je 等于 zf置1跳转
jnz 不等于 zf置0跳转
jo 溢出 of置1跳转
jno 不溢出 0f置0跳转
06-17