汇编中的条件转移指令

1. 无条件转移指令

(1)无条件段内直接转移指令

JMP 标号

JMP IP+地址差

使控制无条件地转移到标号地址处

段内无条件直接转移指令中的地址差可用一个字节表示,也可以用一个字表示

如果用字节表示就称短转移

如果用字表示就称近转移

段内近跳:JMP NEAR PTR PROG

段内短跳:JMP SHORT QUEST

(2)无条件段内间接转移指令

JMP OPRD

无条件地转移到OPRD的内容给定的目标地址处

(3)无条件段间直接转移指令

JMP FAR PTR 标号

无条件段间直接转移指令的具体动作是把指令中包含的目标地址的段值和偏移分别置入CS和IP

这种在指令中直接包含转移目标地址的转移方式称为绝对转移

(4)无条件段间间接转移指令

JMP OPRD

使控制无条件地转移到由操作数OPRD的内容给定的目标地址处。

OPRD必须是双字存储单元

双字存储单元的低字内容送IP,高字内容送CS

2. 条件转移指令

所有的条件转移都只是段内转移

条件转移指令不影响标志位

有符号数间的比较关系G(>),E(=),L(<)

无符号数间的比较关系A(>),E(=),B(<)

比较两数是否相等:CMP AX,BX 若AX=BX,则ZF=0

要比较AX和BX的大小:CMP AX,BX

当OF=0(没有溢出),若SF=0,则a>b;否则a<b

当OF=1(产生溢出),若SF=0,则a<b;否则a>b

3. 循环指令

与条件转移指令类似,仅属于段内转移

循环指令不影响标志位

(1)计数循环指令LOOP

LOOP 标号

使CX的值减1,如果结果不等于0,则转移到标号,否则顺序执行。

相当于:

DEC CX

JNZ 标号

在调用LOOP时,CX要先赋初值,最多可循环65536次

(2)等于/全零循环指令LOOPE/LOOPZ

LOOPE/LOOPZ 标号

使CX减1,当相等或为0时,(且零标志ZF=1),那么转移到标号,否则顺序执行。

(3)不等于/非零循环LOOPNE/LOOPNZ

LOOPE/LOOPZ 标号

与LOOPE,LOOPZ刚好相反

(4)跳转指令JCXZ

JCXZ 标号

当CX的值等于0的时候转移到标号,否则顺序执行

通常用在循环的开始,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值