汇编网首页登录博客注册
masmaster的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
文章收藏

[2010-07-18 13:22] 有条件转移指令:jcc/jcxz/loop

所有的有条件转移都是短转移。条件转移的范围是在相对于转移指令的+127~-128字节以内。80386以上的处理器,条件转移是段转移或者近转移。允许有条件的转移到当前代码段内的任意位置。
条件转移测试一下标志位:符号标志SF,零标志ZF,进位标志CF,奇偶标志PF和溢出标志OF。 如果条件为真(置1), 则跳至转移指令相关联的标号处执行。 如果条件为假(清0),则顺序执行程序的下一步指令。
多数条件指令简单明了,通常只测试某一个标志位。但是也有一些事测试多个标志位,比如相对大小的测试则要求测试多个标志位。
条件转移指令一览表:
-------------------------------------------------------
指令         测试的条件          解释
ja           c=0 and z=0         高于转移
jae          c=0                 高于或等于转移
jb           c=1                 低于转移
jbe          c=1 or z=1          低于或等于转移
jc           c=1                 进位转移
je/jz        z=0                 相等或零转移
jg           z=0 or s=0          大于转移
jge          s=0                 大于或等于转移
jl           s≠0                小于转移
jle          z=1 or s≠0         小于或等于转移
jnc          c=0                 无进位转移
jne/jnz      z=0                 不等于或不为零转移
jno          o=0                 无溢出转移
jns          s=0                 无符号转移
jnp/jpo      p=0                 无奇偶或奇偶位为奇转移
jo           o=1                 有溢出转移
jp/jpe       p=1                 有奇偶或奇偶位位偶转移
js           s=1                 符号位置位转移
jcxz         cx=0                cx=0转移
-------------------------------------------------------
比较有符号时用:jg,jl,jge,jle,je/jz,jne/jnz
比较无符号时用:ja,jb,jae,jbe,je/jz,jne/jnz

jcxz和jecxz直接测试cx或ecx的内容是否为零, 不测试标志位也不影响标志位。对于jcxz,当cx=0时,则转移;当cx≠0,则不转移;对于jecxz,检测的是ecx的内容。

loop指令是cx减一和jnz条件转移指令的组合(循环)。在16位处理器中,loop指令令cx-1,检测cx是否为零。如果cx≠0,则继续执行loop后标号处指令, 如果cx=0,则跳出loop循环。
评论次数(0)  |  浏览次数(784)  |  类型(汇编语言笔记) |  收藏此文  | 
 
 请输入验证码  (提示:点击验证码输入框,以获取验证码