转移指令的原理

1、8086CPU转移指令分类:1.无条件转移指令(如jmp);2.条件转移指令;3.循环指令(如:loop);4.过程;5.中断。

2、offse,伪指令,功能是取得标号的偏移地址。

3、nop的机器码占一个字节,不产生任何结构,仅消耗几个时钟周期,接着执行后续指令,常用于程序的延时等

4、jmp指令要给出两种信息:1.转移的目的地址;2.转移的距离(段间转移、段内短转移、段内近转移)。

5、依据位移进行的jmp指令:①jmp short 标号(转到标号处执行指令),这种格式的jmp指令实现的是段内短转移,它对ip的修改范围为-128~127;②jup near ptr 标号,near ptr指明此处的位移为16位位移,进行的是段内近转移,范围-32769~32769,功能(ip)=(ip)+16位位移。

6、汇编指令与机器指令:在一般的汇编指令中,汇编指令中的idata(立即数),不论它是表示一个数据还是一个内存单元的偏移地址,都会在对应的机器指令中出现,因为CPU执行的是机器指令,它必须要处理这些数据或地址。但是jmp对应的机器码不包含转移地址,使用的是相当偏移地址(从当前地址到目标地址)。实际上“jmp short 标号”的功能为(ip)=(ip)+8位位移

7、F6就是-10,涉及补码。

8、转移的目的地址在指令中的jmp指令:“jmp far ptr 标号”,实现段间转移,又称远转移。转移地址在寄存器中的jmp指令:jmp 16位寄存器,功能:(IP)=(16位寄存器)。

9、转移地址在内存中的jmp指令:两种:1.jmp word ptr 内存单元地址(段内转移);2.jmp dword ptr 内存单元地址(段间转移)功能:(cs)=(内存单元地址+2),(IP)=(内存单元地址)。

10、jcxz指令,有条件转移指令,所有的有条件转移指令都是短转移,在对应的机器码中包含转移的位移,而不是目的地址。对ip的修改范围都为-128~127。如果(cx)==0,则转移到标号处执行,当(cx)!=0什么也不做。C语言描述:if((cx)==0)jmp short 标号。

11、loop指令为循环指令,所有的循环指令都是短转移,在对应的机器码中包含转移的位移,对ip修改范围-128~127。1.(cx)=(cx)-1;2.如果(cx)!=0 ,(ip)=(ip)+8位位移。

12、根据位移进行转移的意义:这样设计,方便了程序段在内存中的浮动装配(程序段放不同的位置都可以正确执行),注意:根据位移进行的指令,它们的转移范围受到转移位移长度的限制,如果在源程序中出现了转移范围的问题,编译器会报错。

注意:jmp 2000:0100的转移指令,是在debug中使用的汇编指令,汇编编译器不认识。

实验九:测试一下你的dos有木有问题。。。

Dos清屏命令:cls

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值