控制转移指令的.docVIP

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
控制转移指令的

控制转移指令 通常,程序中的指令都是顺序地逐条进行的,在8086中,指令的执行顺序由CS和IP 决出,每取出一条指令,指令指针IP自动进行调整,一条指令执行完成后,就从该指令之后的下一个存储单元中取出一条指令来执行。利用控制转移指令可以改变CS和IP的值,从而改变指令的执行顺序。为满足程序转移的不同要求,8086提供了无条件转移和过程调用、条件转移、循环控制以及中断指令等几类指令。 无条件转移指令和过程调用指令:JMP—无条件转移、CALL—过程调用、RET—过程返回 条件转移:JZ\JE等十条指令—直接标志转移、JA\JNBE等8条指令—间接标志转移 条件循环控制:LOOP—CX0则循环、LOOPE和LOOPZ—CX0和ZF=1则循环、LOOPNE和LOOPNE—CX0和ZF=0则循环、JCXZ—CX=0则循环 中断:INT—中断、INTO—溢出中断、IRET—中断返回 无条件转移和过程调用指令 JMP 无条件转移指令 指令格式:JMP 目的 指令功能:使程序无条件转移到指令中指定的目的地址去执行。 这类指令又分为两种类型: 第一种类型:段内转移或近(NEAR)转移,转移指令目的地址和JMP指令在同一代码段中,转移时仅改变IP寄存器的内容,段地址CS的值不变。 第二种类型:段间转移,又被称之为远(FAR)转移,转移指令的目的地址和JMP指令不在同一代码段中,发生转移时,CS和IP 的值都要改变也就是说,程序要转移到另一个代码段中去执行。 不论是段内还是段间转移,就转移地址提供的方式而言,又可分为两种方式: 第一种方式:直接转移,在指令码中直接给出转移的目的地址,目的操作数用一个标号来表示,它又分为段内直接转移和段间直接转移。 第二种方式:间接转移,目的地址包含在某个16位寄存器或存储单元中,CPU必须根据寄存器或存储器的寻址方式,间接地求出转移地址。同样,这类转移也可分为段内间接转移和段间间接转移。 所以无条件转移指令可分为段内直接转移、段内间接转移、段间直接转移、段间间接转移这四种不同类型和方式。 类型 方式 寻址目标 指令举例 段内转移 直接 直接 立即短转移(8位) 立即近转移(16位) JMP SHORT PROG_S JMP NEAR PTR PROG_N 间接 间接 寄存器(16位) 寄存器(16位) JMP BX JMP WORD PTR 5[BX] 段间转移 直接 间接 立即转移(32位) 存储器(32位) JMP FAR PTR PROG_F JMP DWORD PTR[DI] 下面参照上表,再对无条件转移指令作进一步的说明: 段内直接转移指令 指令格式:JMP SHORT 标号 JMP NEAR PTR 标号(或JMP 标号) 这是一种段内相对转移指令,目的操作数均用标号表示,程序转向的有效地址等于当前IP寄存器内容加上8位或者16位位移量(DISP).如果位移量位是16位,那么表示近转移,说明目的地址与当前的IP的距离在-32768~32767个字节之间。如果转移的范围在-128到127之内,则称为短转移,指令中只需要用8位位移量,它是近转移的一个特例。 在机器语言中,8位或16位位移量用带符号数表示,正的位移量表示向高地址方向转移,负的位移量表示向低地址方向转移,负位移量必须用补码表示。段内近—短转移指令的机器码及其操作功能如下如所示。 段内近转移指令 段内短转移指令 其中,第一个字节为操作码,后面的字节是位移量,注意,由于IP为16位长,当它与8位的位移量相加时,实际上使用符号扩展法将8位位移量扩展成16位数后才相加的。 在汇编语言语句中,目的操作数用符号地址也就是标号表示。对于位移量为16位的近转移,则在标号前加NEAR PTR,该说明符可以不写。对于位移量为8位短转移,则需在标号面前说明符SHORT。 例 JMP SHORT PROG_S ;段内短转移 JMP NEAR PTR PROG_N;段内近转移(或写成JMP PROG_N) 下面是一个含有无条件转移指令的简单程序的列表文件,它是由汇编语言源程序翻译后产生的。即: ;行号 偏移量 机器码 程 序 1 0000 CODE SEGMENT 2 ASSUME CS:CODE 3 0000 0405 PROG_S: ADD AL, 05H 4 0002 90 NOP 5 0003 EBFB

文档评论(0)

ayangjiayu4 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档