-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
一.跳转相关的标志位:
11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|---|---|---|
OF | DF | IF | TF | SF | ZF |
| AF |
| PF |
| CF |
溢 |
|
|
| 符 | 零 | 未 | 辅 | 未 | 奇 | 未 | 进 |
条件码:
①OF(Overflow Flag)溢出标志。溢出时为1,否则置0。
②SF(Sign Flag)符号标志。结果为负时置1,否则置0.
③ZF(Zero Flag)零标志,运算结果为0时ZF位置1,否则置0.
④CF(Carry Flag)进位标志,进位时置1,否则置0.
⑤AF(Auxiliary carry Flag)辅助进位标志,记录运算时第3位(半个字节)产生的进位置。有进位时1,否则置0.
⑥PF(Parity Flag)奇偶标志。结果操作数中1的个数为偶数时置1,否则置0.
控制标志位:
⑦DF(Direction Flag)方向标志,在串处理指令中控制信息的方向。
⑧IF(Interrupt Flag)中断标志。
⑨TF(Trap Flag)陷井标志,单步中断。
二.条件跳转的分类
(1).标志寄存器FR中有6个标志是状态的,它反映运算结果的情况。6个状态中除AF半进位标志外,其余5个标志可以反映10种不同的条件
故单条件跳转指令有10种
jc CF=1;则转移
jnc CF=0;则转移
je\jz ZF=1;jmp
jne\jnz ZF=0;jmp
js SF=1;jmp
jns SF=0;jmp
jo OF=1;jmp
jno OF=0;jmp
jp\jpe PF=1;jmp
jnp\jpo PF=0;jmp
(2).无符号数条件跳转指令
用于无符号数的条件跳转指令如下
ja\jnbe 大于则跳转 > 则转移, CF 或 ZF = 0;
jae\jnb 大于等于则跳转 >= 则跳转, CF = 0;
jna\jbe 小于则跳转 < 则转移, CF 或 ZF = 0;
jb\jnae 小于等于则跳转 <= 则跳转, CF = 1;
(3).带符号数的比较
JG/JNLE 大于则跳 > 则跳, SF 或 OF 或 ZF = 0则跳
JGE/JNL 大于等于则跳 >= 则跳, SF 或 OF = 0 则跳
JL/JNGE 小于则跳 < 则跳, SF 或 OF = 1 则跳
JLE/JNG 小于等于则跳 <= 则跳, SF 或 OF 或 ZF = 1则跳
用带符号数和无符号数的条件转移指令时,必须严格加以区别,否则会得到错误的结果
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
三.无条件跳转
操作码 | 伪码指令 | 含义 |
EB cb | JMP rel8 | 相对短跳转(8位),使rel8处的代码位下一条指令 |
E9 cw | JMP rel16 | 相对跳转(16位),使rel16处的代码位下一条指令 |
FF /4 | JMP r/m16 | 绝对跳转(16位),下一指令地址在r/m16中给出 |
FF /4 | JMP r/m32 | 绝对跳转(32位),下一指令地址在r/m32中给出 |
EA cb | JMP ptr16:16 | 远距离绝对跳转, 下一指令地址在操作数中 |
EA cb | JMP ptr16:32 | 远距离绝对跳转, 下一指令地址在操作数中 |
FF /5 | JMP m16:16 | 远距离绝对跳转, 下一指令地址在内存m16:16中 |
FF /5 | JMP m16:32 | 远距离绝对跳转, 下一指令地址在内存m16:32中 |
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
四.16位/32位寻址方式(fisheep译 fisheep@sohu.com)
操作码 | 伪码指令 | 跳转含义 | 跳转类型 | 跳转的条件(标志位) | |
0F 87 cw/cd | JA rel16/32 | 大于 | near | (CF=0 and ZF=0) | |
0F 83 cw/cd | JAE rel16/32 | 大于等于 | near | (CF=0) | |
0F 82 cw/cd | JB rel16/32 | 小于 | near | (CF=1) | |
0F 86 cw/cd | JBE rel16/32 | 小于等于 | near | (CF=1 or ZF=1) | |
0F 82 cw/cd | JC rel16/32 | 进位 | near | (CF=1) | |
0F 84 cw/cd | JE rel16/32 | 等于 | near | (ZF=1) | |
0F 84 cw/cd | JZ rel16/32 | 为0 | near | (ZF=1) | |
0F 8F cw/cd | JG rel16/32 | 大于 | near | (ZF=0 and SF=OF) | |
0F 8D cw/cd | JGE rel16/32 | 大于等于 | near | (SF=OF) | |
0F 8C cw/cd | JL rel16/32 | 小于 | near | (SF<>OF) | |
0F 8E cw/cd | JLE rel16/32 | 小于等于 | near | (ZF=1 or SF<>OF) | |
0F 86 cw/cd | JNA rel16/32 | 不大于 | near | (CF=1 or ZF=1) | |
0F 82 cw/cd | JNAE rel16/32 | 不大于等于 | near | (CF=1) | |
0F 83 cw/cd | JNB rel16/32 | 不小于 | near | (CF=0) | |
0F 87 cw/cd | JNBE rel16/32 | 不小于等于 | near | (CF=0 and ZF=0) | |
0F 83 cw/cd | JNC rel16/32 | 不进位 | near | (CF=0) | |
0F 85 cw/cd | JNE rel16/32 | 不等于 | near | (ZF=0) | |
0F 8E cw/cd | JNG rel16/32 | 不大于 | near | (ZF=1 or SF<>OF) | |
0F 8C cw/cd | JNGE rel16/32 | 不大于等于 | near | (SF<>OF) | |
0F 8D cw/cd | JNL rel16/32 | 不小于 | near | (SF=OF) | |
0F 8F cw/cd | JNLE rel16/32 | 不小于等于 | near | (ZF=0 and SF=OF) | |
0F 81 cw/cd | JNO rel16/32 | 未溢出 | near | (OF=0) | |
0F 8B cw/cd | JNP rel16/32 | 不是偶数 | near | (PF=0) | |
0F 89 cw/cd | JNS rel16/32 | 非负数 | near | (SF=0) | |
0F 85 cw/cd | JNZ rel16/32 | 非零(不等于) | near | (ZF=0) | |
0F 80 cw/cd | JO rel16/32 | 溢出 | near | (OF=1) | |
0F 8A cw/cd | JP rel16/32 | 偶数 | near | (PF=1) | |
0F 8A cw/cd | JPE rel16/32 | 偶数 | near | (PF=1) | |
0F 8B cw/cd | JPO rel16/32 | 奇数 | near | (PF=0) | |
0F 88 cw/cd | JS rel16/32 | 负数 | near | (SF=1) | |
0F 84 cw/cd | JZ rel16/32 | 为零(等于) | near | (ZF=1) |
注:一些指令操作数的含义说明:
rel8 表示 8 位相对地址
rel16 表示 16 位相对地址
rel16/32 表示 16或32 位相对地址
r/m16 表示16位寄存器
r/m32 表示32位寄存器
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
另外有其他的 在补充 ^_^
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------