跳转指令和循环指令详解

来源:互联网 发布:阅读软件破解版 编辑:程序博客网 时间:2024/04/29 07:28

跳转指令 

Jxx指令不影响标志,但要利用标志(下表)。根据利用的标志位不同,17条指令分成4种情况:

跳转指令和标志位的关系 
⑴  判断单个标志位状态
⑵  比较无符号数高低
⑶  比较有符号数大小
⑷  判断计数器CX为0

有符号数的大(Greater)小(Less)需要组合OF、SF标志,并利用ZF标志确定相等(Equal)
两数的大小分成4种关系:
⑴ 小于(不大于等于):JL(JNGE)
⑵ 不小于(大于等于):JNL(JGE)
⑶ 小于等于(不大于):JLE(JNG)
⑷ 不小于等于(大于):JNLE(JG )

cmp ax,bx ;比较ax和bx
 jnl next ;若ax≥bx,转移
 xchg ax,bx ;若ax<bx,交换
next: ...

JCXZ label
  ;CX=0,发生转移:IP←IP+8位位移量
  ;CX≠0,顺序执行
这是一条较特殊的指令
CX寄存器通常在程序中用做计数器
JCXZ指令用来判断计数是否为0

循环指令

loop (cx!=0)
loopz/loope(zf=1 & cx!=0)
loopnz/loopne(zf=0&cx!=0)

用循环的时候的用法为:
1.cx = cx-1
2.测试条件