首页 > 代码库 > 汇编笔记四【JCC】 by:凉游浅笔深画眉 / Net7Cracker

汇编笔记四【JCC】 by:凉游浅笔深画眉 / Net7Cracker

一、JMP指令:无条件跳转指令,本质是修改EIP的值,改变CPU运行路线

  MOV EIP,寄存器/立即数  简写为 JMP 寄存器/立即数

二、CALL指令:

  PUSH 地址B

  MOV EIP , 地址A/寄存器  简写为:CALL 地址A/寄存器

三、RET指令:返回指令

  相当于POP EIP,并改变CPU运行路线到EIP所指向的值。

四、CMP指令:比较指令

  格式:CMP R/M R/M/IMM

  该指令是比较两个操作数,实际上相当于SUB指令,但是相减的结果并不保存到第一个操作数中,仅影响ZF标志位。

  当两个数相同时,0标志位为1.不同时为0.

五、TEST指令:与指令

  指令格式:TEST R/M,R/M/IMM

  两个数进行与操作,结果不保存,仅改变相应标志位

  例:

    TEST EAX,EAX  

    通常用来判断EAX是否为空

六、JE,JZ(结果为0时跳转,相等时跳转)

  跳转前提:ZF=1

  JE:JUMP IF EQUEL

  JZ:JUMP IF ZERO

七、JNE,JNZ(结果不为0时则跳转,不相等则跳)  

  跳转前提:ZF=0

  JNE:JUMP IF NOT EQUEL

  JNZ: JUMP IF NOT ZERO

八、JS(结果为负则跳转)  

  跳转前提:SF=1

  JS:JUMP IF SIGN

九、JNS(结果为非负则跳转)

  跳转前提:SF=0

  JNS:JUMP IF NOT SIGN

十、JP,JPE(结果中1的个数为偶数则跳转)

  跳转前提:P=1

  JP:JUMP IF PARITY

  JPE:JUMP IF PARITY EQUEL

十一、JNP,JPO(结果中1的个数为偶数则跳转)

  跳转前提:PF=0

十二、JO(结果溢出了则跳转)

  跳转前提:OF=1

十三、JNO(结果没有溢出则跳转)

  跳转前提:OF=0

十四、JB,JNAE(小于则跳转[无符号数])

  跳转前提:CF=1

十五、JNB,JAE(大于等于则跳转[无符号数])

  跳转前提:CF=0

十六、JBE,JNA(小于等于则跳转[无符号数])

  跳转前提:CF=1 or ZF=1

十七、JNBE、JA(大于则跳转[无符号数])

  跳转前提:CF=0 and ZF=0

十八、JL,JNGE(小于则跳转[有符号数])

  跳转前提:SF != OF

十九、JNL,JGE(大于等于则跳转[有符号数])

  跳转前提:SF = OF

二十、JLE,JNG(小于等于则跳转[有符号数])

  跳转前提:ZF=1 or SF != OF

二十一、JNLE,JG(大于则跳转[有符号数])

  跳转前提:ZF=0 and SF = OF

汇编笔记四【JCC】 by:凉游浅笔深画眉 / Net7Cracker