版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq1119278087/article/details/60982428
JMP
其实不少跳转,本质是修改eip
mov eip,寄存器/立即数
简写为 jmp 寄存器/立即数
CALL
push 地址B
mov eip,地址A/寄存器
简写为:CALL 地址A/寄存器
RET指令
LEA ESP,[ESP+4]
MOV EIP,[ESP-4]
或
pop eip
简写为:RET
CMP
CMP r/m,rm/imm
两数进行相减,结果不保留,只是根据结果修改标志位
TEST
TEST r/m,r/m/imm
该指令在一定程序上和CMP指令时类似的,两个数值进行与操作,结果不保存,但是会改变相应标志位.
实质是两个数进行与操作,结果不保留,只根据结果修改标志位
TEST eax,eax ;判断eax是否为0
1 | JE, JZ | 结果为零则跳转(相等时跳转) | ZF=1 |
---|---|---|---|
2 | JNE, JNZ | 结果不为零则跳转(不相等时跳转) | 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 S |