特别注意*******
(1)运算/逻辑指令后对标志寄存器有影响!mov不影响!!!!!
(2)mul只影响CF和OF,别的未定义
(3)inc不影响CF位
-
ZF (zero flag) : 值为0,则zf=1
-
PF (parity flag): bit中1值的个数为偶数,则pf = 1 (*仅计算结果最低byte/8位bit中1的个数)
-
SF(sign flag): 负数, sf = 1。(************默认把所有运算当为有符运算)
-
CF(carry flag): 借位/进位. 当无符号运算时,产生进位或借位,则CF=1。例mov al,0x98; add al,al //mov al,97H sub al,98H (可以看成197h-98h)
-
OF(overflow flag)溢出。当有符号位运算时,产生超过了该符号位能表示的,OF=1。与CF没有任何关系
-
sbb/adc 借位减法/加法
-
cmp的有符号比较和无符号比较。影响SF/OF/CF的情况
-
ja/b/e对应无符号比较
-
pushf/popf 将指令寄存器压入栈
-
DF (Direction flag)。DF=1:SI/DI递减;DF=0则递增
-
movsb: mov es:[di], byte ptr ds:[si]. (movsd, movsw, movsd 略)
此时若DF=0,则si+= 1, di+= 1。否则si+= -1, di+= -1; -
rep movsb = s: movsb loop s
-
cld: clear direction: df=0; std:set direction: df=1;