微型计算机转移指令,微机原理与接口技术:转移指令

版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如果有侵权请立即联系:55525090@qq.com,我们立即下架或删除。

简介:3.3.5 程序控制指令

程序控制指令又称为控制转移指令,包括:转移指令、循环控制指令、过程调用指令和

中断指令 4 类。转移指令又分为无条件转移指令和条件转移指令。

1.无条件转移指令 JMP

计算机程序的执行完全按照 CS:IP 的指向执行指令。通常情况下 CS 保持不变,IP 自动

增量,程序就按照指令的先后顺序执行。无条件转移指令会修改 CS 和 IP 的值,使程序跳

转到另一个位置去执行,改变指令的执行顺序。

根据程序的转移范围可分为段内转移和段间转移。在同一段的范围之内进行转移,只需

要修改 IP 的值,称为段内转移。如果 CS 的值被修改,意味着程序将转移到另外的段去执行,

这称为段间转移。段间转移不仅修改段基址 CS 的值,还修改 IP 的值。

JMP 指令不影响标志位。

(1)段内转移

指令格式: JMP OPRD

功能:段内转移,IP IP+位移量,或给 IP 赋值。

说明:根据 OPRD 的类型又分为段内直接转移和段内间接转移。指令不影响标志位。

例如:

JMP LABEL ;LABEL 为指令标号

JMP SHORT LABEL

JMP NEAR LABEL

JMP BX

JMP WORD PTR[BX+DI]

JMP LABEL,程序转移到 LABEL 指明的指令处继续执行。指令中 LABEL 通常为标号,

例如【例题 3-17】程序段中的 FOUND 和 DONE。

JMP SHORT LABEL,程序转移到 LABEL 指明的指令处继续执行。SHORT 为属性说明符,

说明转移范围,以当前 IP 为中心,转移范围-128~+127。

JMP NEAR LABEL,程序转移到 LABEL 指明的指令处继续执行。NEAR 为属性说明符,

说明转移范围,以当前 IP 为中心,转移范围-32768~+32767。

说明:在编程时 NEAR 与 SHORT 通常省略,编译时由汇编程序自己计算。如果用了

NEAR 或 SHORT,在编译时有时会提示不正确的属性限制。所以 JMP LABEL 是最常见

的形式。

由于 LABEL 对应一条指令,是这条指令的符号地址,所以以上三种 JMP 形式又称为

段内直接转移。这些指令在编译时,汇编程序会计算出它的下一条指令到 LABEL 指明的指

令之间的位移量(相距多少字节),将这个位移量编译为 JMP 的操作数。指令执行时 IP 加

上这个位移量(JMP 指令的功能),IP 的值被修改,使得下一条要执行的指令指向 LABEL。

JMP BX,将 BX 的值传送给 IP,程序转移到 CS:IP 处继续执行。操作数可以是所有 16 位

通用寄存器。

JMP WORD PTR[BX+DI],从[BX+DI]指明的内存区域连续取出两个字节传送给 IP,程序转

移到 CS:IP 处继续执行。操作数可以采用各种寻址方式。

以上两种 JMP 形式又称为段内间接转移,编程时要注意操作数必须是 16 位。

【例题 3-17】

MOV DI, 0

JMP DONE

FOUND: DEC DI

DONE: MOV POINT, DI

MOV AX,1234H

JMP CX ;IP=2000H,程序跳转到段内偏移地址为 2000H 处

(2)段间转移

指令格式: JMP OPRD

功能:段间转移,IP←OPRD 的段内偏移地址,CS←OPRD 所在段的段基址。

说明:根据 OPRD 的类型又分为段间直接转移和段间间接转移。指令不影响标志位。

例如:

JMP FAR LABEL

JMP DWORD PTR [BX+DI]

JMP FAR LABEL ,程序转移到 LABEL 指明的指令处继续执行,LABEL 为标号。FAR 是

相对于 NEAR 的属性说明符,FAR 说明标号 LABEL 在另外的代码段,与 JMP 指

令本身不在同一段。这条指令执行的操作是 IP←LABEL 的偏移地址,CS←LABEL

所在段的段基址,程序转移到 CS:IP 处继续执行。这种 JMP 形式又称为段间直接转

移。

JMP DWORD PTR[BX+DI],从 [BX+DI]指明的内存区域连续取出 4 个字节,前两个字节(低

地址)传送给 IP,后两个字节送给 CS,程序转移到 CS:IP 处继续执行。操作数属

于存储器操作数,可以采用各种存储器的寻址方式... 更多>>

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值