一步步学汇编(八)转移指令

可以修改IP,或同时修改CS和IP的指令统称转移指令

offset:由编译器处理的符号,功能是取得标号的偏移地址

jmp为无条件转移指令,可以只修改IP,也可以同时修改CS和IP
jmp指令要给出两种信息:
(1)转移的目的地址
(2)转移的距离(段间转移。段内短转移,段内近转移)

jmp short 标号:表示段内短转移

CPU执行指令的过程:
(1)从CS:IP指向的内存单元中读取指令,读取的指令放入指令缓冲区
(2)(IP)=(IP)+所读取的指令的长度,从而指向下一条指令的地址
(3)执行指令。转到(1),重复这个过程

在“jmp short 标号”指令所对应的机器码中,并不包含转移的目的地址,
而包含的是转移的位移,实际上,指令“jmp short 标号”的功能为:
(IP)=(IP)+8位位移

8位位移=“标号”处得地址-jmp指令后的第一个字节的地址
jmp near ptr 标号:实现段内近转移,(IP)=(IP)+16位位移
jmp far ptr 标号,实现段间转移,又称远转移

转移地址在内存中的指令的两种格式:
(1)jmp word ptr 内存单元地址(段内地址)
功能:从内存单元地址处开始存放着一个字,是转移的目的的偏移地址
(2)jmp dword ptr 内存单元地址(段间转移)
功能:从内存单元地址处开始存放着两个字,高地址处的字是转移的目的段地址,
低地址处是转移的目的偏移地址

所有的有条件转移指令都是短转移,在对应的机器码中包含转移的位移,而不是目的地址

jcxz 标号(如果(cx)=0,转移到标号处执行)
操作:当(cx)=0时,(IP)=(IP)+8位位移

所有循环指令都是短转移,在对应的机器码中包含转移的位移,而不是目的地址
loop 标号 ((cx)=(cx)=1,如果(cx)!=0,转移到标号处执行)
操作:(1)(cx) = (cx) - 1;
       (2) 如果(cx)!=0,(IP)=(IP)+8位位移

dec 的功能与inc相反

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值