Win32ASM学习[17]:条件跳转
来源:互联网 发布:keynote在windows播放 编辑:程序博客网 时间:2024/06/11 16:59
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
一.跳转相关的标志位:
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则跳
用带符号数和无符号数的条件转移指令时,必须严格加以区别,否则会得到错误的结果
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
三.无条件跳转
操作码伪码指令含义-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
四.16位/32位寻址方式(fisheep译 fisheep@sohu.com)
注:一些指令操作数的含义说明:
rel8 表示 8 位相对地址
rel16 表示 16 位相对地址
rel16/32 表示 16或32 位相对地址
r/m16 表示16位寄存器
r/m32 表示32位寄存器
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
另外有其他的 在补充 ^_^
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- Win32ASM学习[17]:条件跳转
- 学习Win32ASM
- Win32ASM学习笔记(五)
- Win32ASM学习[11]:逻辑运算
- Win32ASM学习[20]:子程序
- Win32ASM-进程学习【1】
- Win32ASM-进程学习【2】
- Win32ASM学习[2]:运算符
- Win32ASM学习[3]:局部变量
- Win32ASM学习[9]: 标志寄存器
- Win32ASM学习[10]:传送指令
- Win32ASM学习[23]:RadASM快捷键
- 条件跳转
- Win32ASm学习[1]:RadASm下测试Debug
- Win32ASM学习[4]: TYPE、$、LENGTHOF、SIZEOF、TYPEDEF
- Win32ASM学习[6]: PTR、OFFSET、ADDR、THIS
- Win32ASM学习[19]:结构与联合
- Win32ASM学习[21]:宏汇编(1)
- MDIFrameWnd类GetActiveFrame和MDIGetActive的区别
- android_launcher的源码详细分析和壁纸修改
- pushd,popd及dirs命令
- Linux命令
- 戴明看管理
- Win32ASM学习[17]:条件跳转
- 函数和标签的使用
- 银耳
- 0.25~1倍缩放
- ContentProvider测试
- 你选择管理还是教练?
- 《人月神话》笔记:削足适履
- 软件测试之路
- Android系统玩家技术宝典