标志寄存器中一共有9个标志位,分别为:OF DF IF TF SF ZF AF PF CF
零标志位,相关操作后结果为0,则ZF=1
大多数运算指令都会影响标志位
奇偶标志位,结果中所有1的个数为偶数,PF=1。否则PF=0。
符号标志,如果结果为负数,则SF=1
在进行无符号数运算的时候,会产生借位和进位的时候就会标记CF
有符号运算的时候,如果超过了范围,就会产生溢出。
adc op1, op2
op1 = op1 + op2 + CF
sbb op1, op2
op1 = op1 - op2 - CF
cmp相当于sub当不是保存结果,只是设置相应的位
cmp用于无符号数的时候,用zf和cf获取比较结果
cmp用于有符号数的时候,用of和sf比较大小
jcxz 检测cx中的数值,如果cx=0,就修改IP
je
jne
jb
jnb
ja
jna
DF为方向标志位,控制每次操作后si,di的增减方向
DF = 0, 增加
DF = 1, 递减
movsb指令
使用movsb(byte)相当于 es : di = ds : si; si++,di++;
movsw指令
是对于内存word单元的,si,di += 2
rep指令
rep可以和movsb,movsw配套使用,rep movsb 可以循环实现(cx)个字符的传送
设置DF
cld: 设置df为0
std:设置df为1
pushf:将标志寄存器的值压栈
popf :将标志寄存器的值出栈