汇编语言之转移指令

在8086CPU中,转移指令分为以下几类

 无条件转移指令(jmp)
 条件转移指令
 循环指令
 过程
 中断
操作符offset

操作符offset在汇编与语言中由编译器处理的符号,他的功能是取得标号的偏移地址

assume cs:code
code:segment
 start:mov ax,offset start  //(ax) = 0
  s:mov ax,offset s  //(ax) = 3
 code ends
end start
nop

nop的机器码占一个字节,例如

s:nop
jmp指令

jmp指令为无条件转移指令 可以用来修改ip,也可以同时修改cs和ip
jmp指令要给出两种信息

转移的目的地
转移的距离

1)依据位移进行转移的jmp

jmp short 标识 的功能为 (ip) = (IP)+8位位移

8位位移 = 标识处的地址-jmp指令后的第一个字节的地址

short此处指明位移为8位位移
8位位移的范围-128–127,使用补码标识
8位位移由编译器在编译时计算
jmp near ptr 标识 的功能为 (ip) = (IP)+16位位移

2)转移地址在内存中的jmp指令
jmp word ptr 内存单元地址(段内转移)
在内存单元地址处开始存放着一个字

jmp dword ptr 内存单元地址(段间转移)
在内存中存放2个字,高地址处的字是转移目标段地址,低地址是转移目标的偏移地址
(CS) = (内存单元地址+2)
(IP) = (内存单元地址)

jcxz指令

jcxz指令是有条件转移指令,所有有条件转移指令都是短转移,在对应的机器中包含转移的位移,而不是目的地址,
指令格式:jcxz 标号(如果(cx) = 0,转移到标号处执行)
操作:当(cx) = 0时,(IP)= (IP)+8位位移
当(CX)!= 0 时,什么都不操作

loop指令

指令格式:loop 标识((cx) = (cx)-1,如果(cx) != 0 转移到标号处执行
操作:
(1) (cx) = (cx) -1
(2) 如果(cx) != 0 (ip) = (ip) +8位位移
如果(cx) = 0,什么都不做,继续执行 这个就和上面的jcxz指令相反

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值