汇编语言复习摘要九——转移指令的原理

本文详细介绍了汇编语言中的转移指令,包括无条件转移jmp、有条件转移jcxz及循环指令loop等,并解释了段内转移与段间转移的区别。通过实例说明了如何使用这些指令来改变程序执行流程。

1. 可以修改IP,或者同时修改CS和IP的指令称为转移指令。有两种类型转移:

1)只修改IP是段内转移,如:jmp ax

2)修改CS和IP是段间转移,如:jmp 1000:0

 

2. 操作符offset:offset是取得标号的偏移地址,例如:

start: mov ax, offset start  ; equal to : mov ax, 0

 

3. jmp称为无条件转移,可以只修改IP,也可以同时修改CS和IP:

1)jmp的原理:依据位移进行转移的。CPU在执行jmp指令的时候并不需要知道转移的目的地址,因为CPU知道的转移的偏移地址,就是jmp xxx这条指令地址和标号xxx之间的偏移。

2)jmp short xxx / jmp far xxx:段内转移和段间转移,段内转移范围:-128~127。其他范围用段间转移。

 

4. 转移地址在内存中:

1)jmp word ptr 内存单元地址:也成为段内转移,如:

mov ax, 0123h

mov ds:[0], ax

jmp word ptr ds:[0]

2)jmp dword ptr 内存单元地址:也称为段间转移,如:

mov ax, 0123h

mov ds:[0], ax

mov word ptr ds:[2], 0

jmp dword ptr ds:[0]

 

5. jcxz:有条件转移指令,所有的有条件转移指令都是短转移。jcxz 格式为:

jcxz xxx (如果cx == 0, 执行转移), 所以jcxz相当于:jmp if cx equal to zero,如果cx不等于,什么都不做;

 

6. loop: 循环指令,所有循环指令都是短转移。这个我们之前就见过了,cx等于0,退出循环;

转载于:https://www.cnblogs.com/python_newbie/archive/2010/09/27/1837099.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值