-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
一.跳转相关的标志位:
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位寄存器
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
另外有其他的 在补充 ^_^
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------