8086汇编学习笔记8-转移指令

本文详细介绍了计算机体系结构中的转移指令,包括无条件转移指令jmp、有条件转移指令jcxz、循环指令loop以及子程序调用指令call和返回指令ret。解释了段内转移与段间转移的区别,以及不同转移指令的应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

修改IP,或同时修改CS和IP的指令称为转移指令

只修改IP时,称段内转移,段内转移又分为短转移和近转移,是根据IP修改范围不同而区分的,短转移修改IP范围为-128~127,近转移修改IP范围为-32768~

32767。

同时修改CS和IP时,称段间转移,也称远转移

1. jmp为无条件转移指令,可以修改IP,也可以同时修改CS和IP

(1) jmp short 标号,段内短转移,short说明指令进行的是短转移

(2) jmp near ptr 标号,段内近转移

注:前两个转移在机器指令中并不给出转移的目的地址,而是给出转移的相对位移,由编译器计算出。

(3) jmp far ptr 标号,段间转移,指令执行后,CS=标号所在段的段地址,IP=标号所在段的偏移地址

转移地址在寄存器中

(4)jmp 16位寄存器,指令执行后,IP=16位寄存器值

转移地址在内存中

(5) jmp word ptr 内存单元地址,为段内转移

(6) jmp dword ptr 内存单元地址,为段间转移,高地址字为转移目的段地址,低地址字为转移目的偏移地址

2. jcxz为有条件转移指令,所有有条件指令都为段内短转移,编译后在机器指令中只给出转移的偏移

jcxz 标号,如果cx=0,则跳到标号处执行

3. loop标号,为循环指令,所有循环指令都为段内短转移,编译后在机器指令中只给出转移的偏移

4. call和ret指令也是转移指令,主要用于子程序设计

ret,近转移,使用栈中的数据,修改IP值,相当于pop IP

retf,远转移,使用栈中数据,修改CS和IP值,相当于

pop IP

pop CS

call不能实现短转移,它将当前的IP或CS和IP压入栈中,再转移,转移原理同jmp相同。

(1) call 标号(16位位移),将当前IP压入栈中,转移到标号处执行,相当于

push IP

jmp near ptr 标号

(2) call far ptr 标号,段间转移,将CS和IP压入栈中,转移到标号处执行,相当于

push CS

push IP

jmp far ptr 标号

(3) call 16位寄存器,相当于

push IP

jmp 16位寄存器

(4) call word ptr 内存单元地址,相当于

push IP

jmp word ptr内存单元地址

(5) call dword ptr内存单元地址,相当于

push CS

push IP

jmp dword ptr 内存单元地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值