banner
lca

lca

真正的不自由,是在自己的心中设下牢笼。

《從零開始學IDA逆向》學習筆記-11(標誌寄存器)

image

进位标志#

进位标志(Carry Flag):当运算结果为负或者相加超过数值上限的时候会被触发。大概意思是计算结果如果超出了范围,就会触发 CF 标志,如果两个无符号数相减结果为负,同样会触发 CF 标志。

溢出标志#

溢出标志(Overflow Flag)类似于进位标志,但它针对有符号数的,当有符号数计算出错时,会触发 OF 标志位。

符号标志#

任何操作的结果如果是一个负数就会触发 SF,SF 只表示结果的符号,并不表示结果对还是错。

零标志#

ZF 在以下条件下将会触发:在内部实际是减法的比较指令中,两个操作数相同;增或减导致结果为 0;相减结果为 0。

条件跳转与标志位#

也就是当 2 个操作数相同,JZ 指令会执行跳转。如果第一个无符号操作数比第二个小,JB 指令会执行跳转。如果第一个有符号操作数比第二个小,JL 指令会执行跳转。一般只需要看无符号条件跳转和有符号条件跳转表格的第三列就行。

asm条件操作
JAz=0 and c=0如果大于则跳转
JAEc=0如果大于或等于则跳转
JBc=1如果低于则跳转
JBEz=1 or c=1如果小于等于则跳转
JCc=1如果进位则跳转
JECXZecx=0如果 ecx 为 0,则跳转
JEz=1如果相等就跳转
JZz=1如果为零则跳转
JNEz=0如果不相等就跳转
JNZz=0如果非零则跳转
JO超出范围如果溢出则跳转
JP有偶数个 1 位(操作结果中二进制中 1 的个数,01110000)如果偶数校验则跳转
JPE偶数校验如果偶数校验则跳转
JNP没有偶数个 1 位如果不是偶数校验则跳转
JPO奇数校验如果奇数校验则跳转
JS符号位为 1如果有标志则跳转
JNS符号位为 0如果没有标志则跳转
JL/JNGE符号位与溢出位相同如果小于或不大于 / 等于则跳转
JLE/JNGz=1 or 符号位与溢出位相同如果小于或等于 / 不大于则跳转
JG/JNLEz=0 and 符号位与溢出位相同如果大于 / 不小于或等于则跳转
載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。