汇编语言 转移指令的原理

转移指令的原理
转移指令就是可以控制cpu执行内存中某处代码的指令
8086转移行为

只修改ip时,段内转移 /jmp ax
段内转移分为两种(短,近 转移)
短转移ip 范围-128~127
近转移ip 范围-32768~32767

同时修改cs:ip时 段间转移 /jmp 1000:0

转移指令
无条件转移指令(jmp )
条件转移指令
循环指令(loop)
过程
中断

操作符 offset
Offset功能是取得标号的偏移地址,
S:
Mov ax,1
Mov ax,offset s /相当于把s段的偏移地址送入ax当中(ax=cs:s)

Jmp指令(无条件转移指令,修改cs:ip或者只修改ip)
Jmp指令要给出的两种信息
1转移的目的地址
2转移的距离(段间转移,段内短转移,段内近转移)
依据位移进行转移的jmp指令(段内短转移)
Jmp short 标号(转到标号处执行指令)
Jmp near ptr 标号 (段内近转移)
Jmp far ptr 标号 (段间转移,远转移)
Cs=标号所在段的段地址 ip=标号在段中的偏移地址

寄存器中
Jmp 16位reg /ip=16位reg
内存中
Jmp word pty 内存单元地址(段内转移)
从内存单元地址处开始存放着一个字,是转移目的的偏移地址
Jmp dword ptr 内存单元地址(段间转移)
从内存单元地址处开始存放着两个字,高地址处的字是转移目的的段地址,低地址处是转移的目的的偏移地址

Jcxz指令(有条件转移指令,,短转移)
Jcxz 标号(如果cx=0,转到标号处运行) /if cx==0

Loop指令(循环指令,短转移)
Loop 标号 (cx=cx-1 如果cx不等于0,转到标号处执行)
转移位移超界编译器会报错

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值