汇编指令 | 条件 | 标志寄存器状态 | |
---|---|---|---|
1 | JE,JZ | 结果为零则跳转 | ZF=1 |
2 | JNE,JZE | 结果不为零则跳转 | ZF=0 |
3 | JS | 结果为负则跳转 | SF=1 |
4 | JNS | 结果为非负则跳转 | SF=0 |
5 | JP,JPE | 结果中1的个数为偶数则跳转 | PF=1 |
6 | JNP,JPO | 结果中1的个数为偶数则跳转 | PF=0 |
7 | JO | 结果溢出了则跳转 | OF=1 |
8 | JNO | 结果没有溢出则跳转 | OF=0 |
9 | JB, JNAE | 小于则跳转 (无符号数) | CF=1 |
10 | JNB, JAE | 大于等于则跳转 (无符号数) | CF=0 |
11 | JBE, JNA | 小于等于则跳转 (无符号数) | CF=1 or ZF=1 |
12 | JNBE, JA | 大于则跳转(无符号数) | CF=0 and ZF=0 |
13 | JL, JNGE | 小于则跳转 (有符号数) | SF≠ OF |
14 | JNL, JGE | 大于等于则跳转 (有符号数) | SF=OF |
15 | JLE, JNG | 小于等于则跳转 (有符号数) | ZF=1 or SF≠ OF |
16 | JNLE, JG | 大于则跳转(有符号数) | ZF=0 and SF=OF |
JMP指令:修改EIP的值
MOV EIP,寄存器/立即数
简写为:
JMP 寄存器/立即数
CALL指令:PUSH 地址B
MOV EIP,地址A/寄存器
简写为:
CALL 地址A/寄存器
RET指令:
LEA ESP,[ESP+4]
MOV EIP,[ESP-4]
简写为
RET
CMP指令:CMP R/M,R/M/IMM
与SUB相似,比较两个操作数,与SUB不同的是,CMP相减后不改变操作数,只改变零标志位,当两个操作数相等时,ZF=1
TEST指令:TEST R/M,R/M/IMM
该指令在一定程度上和CMP类似,两个数值操作但是不保存,改变标志位
常用这个指令,确定某寄存器是否等于0