一、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