条件跳转指令

作者在 2009-11-12 20:45:37 发布以下内容

1)条件语句被执行前需要进行两个步骤:首先,使用CMPANDSUB之类的指令修改CPU标志;其次,使用条件跳转指令测试标志值并导致向新地址的分支转移。

   2Jcond指令

    Jcond  目标地址

格式中的cond指的是一个标志条件.用来表示一个或多个标志的状态。

默认情况下,MASM要求跳转的目标在当前过程之内,为了突破这种限制,可以声明一个全局变量(变量后面跟“::”)。而且跳转目标和跳转指令的下一条指令之间的偏移地址差必须在-128+127字节范围之内。这是因为当条件跳转指令被转换成机器指令时,目的操作数是用一个8位的偏移值来表示的。

3)条件跳转指令

a)         根据特定的CPU标志值

 

 

助记符

描述

标志值

JZ

为零则跳转

ZF=1

JNZ

不为零则跳转

ZF=0

JC

如果设置进位标志则跳转

CF=1

JNC

如果未设置进位标志则跳转

CF=0

JO

如果设置溢出标志则跳转

OF=1

JNO

如果未设置溢出标志则跳转

OF=0

JS

如果设置符号标志则跳转

SF=1

JNS

如果未设置符号标志则跳转

SF=0

JP

如果设置了奇偶标志则跳转()

PF=1

JNP

如果未设置了奇偶标志则跳转()

PF=0

 

b)        根据操作数之间是否相等,或根据(E)CX的值:

下表列出了基于两个操作数是否相等或CXECX值是否为零的跳转指令。

CMP  leftOprightOp

 

助记符

描述

JZ

相等则跳转

JNZ

不相等则跳转

JCXZ

CX0则跳转

JECXZ

ECX0则跳转

 

c)         基于无符号整数比较结果的跳转指令

助记符

描述

JA

大于则跳转(leftOp>rightOp

JNBE

不小于或相等则跳转(同JA指令)

JAE

大于或等于则跳转(leftOp>=rightOp

JNB

不小于则跳转(JEA指令)

JB

小于则跳转(leftOp<rightOp

JNAE

不大于或者等于则跳转(同JB指令)

JBE

小于或等于则跳转(leftOp<=rightOp

JNA

不大于则跳转(同JBE指令)

d)        基于有符号整数比较的跳转指令

助记符

描述

JG

大于则跳转(leftOp>rightOp

JNLE

不小于或相等则跳转(同JG指令)

JGE

大于或等于则跳转(leftOp>=rightOp

JNL

不小于则跳转(JGE指令)

JL

小于则跳转(leftOp<rightOp

JNGE

不大于或者等于则跳转(同JL指令)

JLE

小于或等于则跳转(leftOp<=rightOp

JNG

不大于则跳转(同JLE指令)

 

汇编 | 阅读 2630 次
文章评论,共0条
游客请输入验证码
浏览22608次