8086CPU跳转指令

跳转原理:
修改cs:ip 或 ip的值

指令格式:
指令 标号

跳转分类:
段内跳转
段间跳转(短转移:-128到127、近转移-32768到32767,补码表示)

跳转指令分类:
1、无条件跳转 jmp(段间、段内(短转移、近转移))

2、条件跳转 jcxz(短转移)

3、循环指令 loop(短转移)

4、过程(待补充)
5、中断(待补充)

操作符 offset
mov ax,offset 标号
意为取标号处的偏移地址并放入ax
例:
assume cs : code
code segment
start :mov ax,1e33h
s:mov bx, 1234h
mov bx, offset s;相当于将s处偏移地址放入bx中
code ends
end start

jmp指令(无条件转移):
修改ip
jmp short s(短转移)
jmp near ptr s(近转移)
这两条汇编指令,在机器指令中保存的操作数不是目的地址,而是目的地址与当前位置的下一个地址的差(《汇编语言》王爽-实验8),说明CPU在执行jmp指令时不需要目的地址,只需要位置差

修改cs:ip
jmp far ptr s(段间转移)
该条汇编指令,在机器指令中保存的操作数是目标地址

jmp 16位reg:(ip)=(16位reg)
将寄存器中的值写入ip中

jmp word ptr 内存单元地址(该内存单元存了一个字的偏移地址,段内转移)
从内存单元地址中获取目标偏移地址

jmp dword ptr 内存单元地址(该内存单元存了一个字的段地址与一个字的偏移地址,段间转移)
从内存单元地址中获取目标段地址与偏移(两字节偏移地址在低位,两字节在段地址高位)

jcxz指令(条件转移)
jcxz s
当(cx)=0,进行转移
该条汇编指令,在机器指令中保存的操作数为目的地址与当前位置的下一个地址的差(转移位移)
jcxz s等价于if((cx)==0){jmp short s}
每次循环完毕计数器cx不自动变化,直接进行判断

loop指令(循环)
loop s
当(cx)=0,进行转移
该条汇编指令,在机器指令中保存的操作数为目的地址与当前位置的下一个地址的差(转移位移)
loop s等价于jcxz s等价于if((cx- -)==0){jmp short s}
每次循环完毕计数器cx自减1,然后进行判断

参考资料《汇编语言》王爽

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值