标志位分别对应在第几位,如下
11 7 6 4 2 0
OF SF ZF BF PF CF
他们的作用如下
CF(无符号数)若最高位进位或借位(溢出)则DF显示1
PF当二进制数中最低有效位1的个数为偶数则会显示1,否则为0。
BF 举个例子mov al,0xff add al,1 则显示1 (0xFFFF,0x00FFFFFF)红色标志的位若进位则显示1,否则为0(具体什么原因我不知道,有会的大佬请指教一下嘿嘿)
ZF计算结果为0则为1,例如:mov eax,2 xor eax,eax 则结果为0,ZF显示1
SF最高位为什么,就显示什么。例如:0x10001111 最高位为1则就显示1
OF(有符号数)若最高位溢出则会显示1(负+负=负 如果为正则溢出,正+正=正 如果为负则溢出,正+负 永远不会溢出)(1000 0000加1100 0000符号位有进位:1,最高有效位相符号位进位:0)
DF表示movs或mov操作数寄存器的移动方向,例如:mov esi,edi movsd 若D 为0则esi,edi加4,若为1则esi,edi减4
补充一点知识:
jmp只能修改EIP寄存器,EIP寄存器中存储的是CPU的下次执行代码。
call先push下一个地址(ESP值改变),然后修改EIP寄存器
ret 相当于pop eip