汇编语言转移指令规则汇总
来源:互联网 发布:成都租房知乎 编辑:程序博客网 时间:2024/05/20 11:46
转自:http://blog.csdn.net/trochiluses/article/details/19355425
摘要:虽然jmp指令提供了控制转移,但是它不允许进行任何复杂的判断。80x86条件跳转指令提供了这种判断。条件跳转指令是创建循环和实现其他条件执行语句,如if…endif的基本要素。
条件跳转指令检查一个或多个标志位,判断它们是否匹配某个特殊条件(就像setcc指令):如果标志匹配成功,该指令就将控制转移到目标位置;如果匹配失败,CPU忽略该条件跳转指令而继续执行下一条指令。一些条件跳转指令只是简单测试符号位(sign)、进位位(carry)、溢出位(overflow)、零标志(zero)位的设置。例如,在执行一条sh1指令后,您需要测试进位标志,来判断sh1是否从操作数的高地址位移出一位。类似地,也可以在一条test指令后测试零标志位,来判断指定的位是否为1。大多数情况,在cmp指令之后执行条件跳转指令。cmp指令设置标志位,以便判断小于、大于、等于等情况。
测试标志位的JCC指令
指 令
描 述
条 件
别 名
相 反 指 令
JC
如果进位位被置位则跳转
进位标志=1
JB,JNAE
JNC
JNC
如果进位位没有置位则跳转
进位标志=0
JNB,JAE
JC
JZ
如果0标志被置位则跳转
0标志=1
JE
JNZ
JNZ
如果0标志没有置位则跳转
0标志=0
JNE
JZ
(续表)
指 令
描 述
条 件
别 名
相反指令
JS
如果符号位被置位则跳转
符号标志=1
JNS
JNS
如果符号位没有被置位则跳转
符号标志=0
JS
JO
如果溢出标志置位则跳转
溢出标志=1
JNO
JNO
如果溢出标志没有置位则跳转
溢出标志=0
JO
JP
如果奇偶校验位被置位则跳转
奇偶校验标志=1
JPE
JNP
JPE
如果奇偶校验位为偶校验则跳转
奇偶校验标志=1
JP
JPO
JNP
如果奇偶校验位没有被置位则跳转
奇偶校验标志=0
JPO
JP
JPO
如果奇偶校验位为奇校验则跳转
奇偶校验标志=0
JNP
JPE
使用无符号数比较的JCC指令
指 令
描 述
条 件
别 名
相反指令
JA
如果超过(>)则跳转
进位标志=0,0标志=0
JNBE
JNA
JNBE
如果不低于或等于(不 <=)则跳转
进位标志=0,0标志=0
JA
JBE
JAE
如果超过或等于(>=)则跳转
进位标志=0
JNC,JNB
JNAE
JNB
如果不低于则跳转(不 <)
进位标志=0
JNC,JAE
JB
JB
如果低于(<)则跳转
进位标志=1
JC,JNAE
JNB
JNAE
如果不超过或等于(不>=)则跳转
进位标志=1
JC,JB
JAE
JBE
如果低于或等于(<=)则跳转
进位标志=1或0标志=1
JNA
JNBE
JNA
如果不超过(不>)则跳转
进位标志=1或0标志=1
JBE
JA
JE
如果相等(=)则跳转
0标志=1
JZ
JNE
JNE
如果不相等(<>)则跳转
0标志=0
JNZ
JE
使用有符号数比较的JCC指令
指 令
描 述
条 件
别 名
相反指令
JG
如果大于(>)则跳转
符号标志=溢出标志或0标志=0
JNLE
JNG
JNLE
如果小于或等于(<=)则跳转
符号标志=溢出标志或0标志=0
JG
JLE
JGE
如果大于或等于(>=)则跳转
符号标志=溢出标志
JNL
JGE
JNL
如果不小于(不<)则跳转
符号标志=溢出标志
JGE
JL
JL
如果小于(<)则跳转
符号标志<>溢出标志
JNGE
JNL
JNGE
如果大于或等于(>=)跳转
符号标志<>溢出标志
JL
JGE
JLE
如果小于或等于(<=)跳转
符号标志<>溢出标志或0标志=1
JNG
JNLE
JNG
如果不大于(不>)则跳转
符号标志<>溢出标志或0标志=1
JLE
JG
JE
如果等于(=)则跳转
0标志=1
JZ
JNE
JNE
如果不等于(<>)则跳转
0标志=0
JNZ
JE
loop跳转指令:
注意这下面三行代码:
- MOV CX,3
- NEXT: MOVSB
- LOOP NEXT
其中,loop的跳转机制:通过对cx进行自动递减来实现跳转
0 0
- 汇编语言转移指令规则汇总
- 汇编语言转移指令规则汇总
- 汇编语言-转移指令
- -------汇编语言--标志寄存器--转移指令---
- 汇编语言-转移指令的原理
- 8086汇编语言 转移指令是什么
- 汇编语言条件转移(短转移)指令列表
- 《汇编语言》学习(九)转移指令
- 汇编语言之转移指令和原理
- 汇编语言的标志寄存器和条件转移指令
- <学习笔记>王爽汇编语言__转移指令原理
- 王爽《汇编语言》第9章 转移指令的原理
- 汇编语言的标志寄存器和条件转移指令
- 汇编语言学习笔记(九)转移指令的原理
- 汇编语言08——转移指令的原理
- 【汇编语言/底层开发】9、转移指令的原理
- 汇编语言学习第九章-转移指令的原理
- 王爽 《汇编语言》 读书笔记 九 转移指令的原理
- spring web项目 数据库用户名密码加密解密
- mysql主从同步Slave_SQL_Running: No,Last_Errno: 1062的解决方法
- CodeForces - 595B Pasha and Phone (数学技巧)好题
- hibernate框架的结构和分析
- linux下进程的最大线程数、进程最大数、进程打开的文件数
- 汇编语言转移指令规则汇总
- Mac/Linux编译OpenCV程序
- bower list报错 Getting random ECMDERR errors
- JAVA学习【11】Servlet基础知识
- MyEclipse生成javadoc时出错:编码GBK的不可映射字符"解决办法
- JavaScript Number 对象
- python strip()函数 介绍
- 搭建Spark集群
- HTML5 - 页面结构相关的新语义元素汇总