一、JCC指令
JCC | 标志位 | 含义 |
---|---|---|
JE | 结果为0则跳转 | ZF=1 |
JNE | 结果不为0则跳转 | ZF=0 |
JS | 结果为负则跳转 | SF=1 |
JNS | 结果为非负则跳转 | SF=0 |
JP | 结果中最后一个字节中1的个数为偶数则跳转 | PF=1 |
JNP | 结果中最后一个字节中1的个数为奇数则跳转 | PF=0 |
JO | 结果溢出了则跳转 | OF=1 |
JNO | 结果没有溢出则跳转 | OF=0 |
JB | 小于则跳转(无符号数) | CF=1 |
JNB | 大于等于则跳转(无符号数) | CF=0 |
JA | 大于则跳转(无符号数) | CF=0 and ZF=1 |
JNA | 小于等于则跳转(无符号数) | CF=0 or ZF=1 |
JL | 小于则跳转(有符号数) | SF!=OF |
JNL | 大于等于则跳转(有符号数) | SF=OF |
JG | 大于则跳转(有符号数) | ZF=1 or SF!=OF |
JNG | 小于等于则跳转(有符号数) | ZF=0 and SF=OF |
二、其他指令
1、ADC指令:带进位的加法
ADC AL,CL
ADC BYTE PTR DS:[0X0012FF80],3
ADC DWORD PTR DS:[0X0012FF88],EAX
2、SBB指令:带借位的减法
SBB AL,CL
SBB BYTE PTR DS:[0X0012FF8C],4
SBB DWORD PTR DS:[0X0012FF90],EAX
3、XCHG指令:交换数据
XCHG AL,CL
XCHGE DWORD PTR DS:[0X0012FFC4],EBX
4、MOVS指令:移动数据(内存—内存)
MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI]
根据标志寄存器中的DF位,改变EDI和ESI的方向(当DF=1时,EDI和ESI分别减4;否则加4)
5、STOS指令:将AL/AX/EAX的值存储到[EDI]指定的内存单元,随后根据DF位更改EDI的值
STOS DWORD PTR ES:[EDI]
STOSD
6、REP指令:按计数寄存器(ECX)中指定的次数重复执行字符串指令
MOV ECX,10
REP MOVSD
REP STOSD