第三章8086指令系统.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[例]从2000H:0100H处取一个字放在AX中。 CLD MOV AX,2000H MOV DS,AX MOV SI,0100H LODSW 3.4.5 控制转移(Control Jump)类指令 1. 无条件转移、调用和返回指令 (1)无条件转移指令(JUMP) 指令格式: JMP 目标标号(TARGET) 这类指令又分成两种类型: 第一种类型段内转移或近(NEAR)转移。 第二种类型段间转移,又称为远(FAR)转移。 不论是段内还是段间转移,又可分为两种方式: ①直接转移,指令码中直接给出转移的目的地址。 ②间接转移,目的地址包含在某个16位R/M中,CPU 必须根据R/M寻址方式,间接地求出转移地址。 ① 段内直接转移。 指令格式为: JMP 标号 建议写成: JMP NEAR PTR 标号;IP ?IP+16位位移量,NEAR PTR为运算符。 若位移量是8位,则为段内短转移, 转移范围在–128~+127之间。 段内短转移写成: JMP SHORT 标号 ;IP ? IP+8位位移量,SHORT为运算符。 ② 段内间接转移。 用寄存器间接寻址的段内转移指令,要转向的有效地址存放在寄存器中,执行的操作为:IP ? 寄存器内容。 JMP BX JMP WORD PTR [SI] ③ 段间直接转移。 目标在其它代码段中,指令中用远标号直接给出了转 向的段地址和偏移量,所以只要用指令中的偏移地址 取代IP寄存器的内容,用指令中指定的段地址取代 CS寄存器的内容,就可使程序从一个代码段转到另 一个代码段去执行。 指令格式: JMP FAR PTR 标号 ④ 段间间接转移。 将目的地址的段地址和偏移量事先放在存储器中的 4个连续地址单元中,其中前两个字节为偏移量,后 两个字节为段地址,转移指令中只需给出存放目标 地址的存储单元的首字节的偏移地址即可。这种指 令的目的操作数前常加运算符DWORD PTR,表示 转移地址需取双字。低字取代当前的IP,高字取代 当前的CS。 JMP DWORD PTR [BX][SI] ; (2)调用指令CALL 在编写程序时,往往把某些能完成特定功能而又经 常要用到的程序段,编写成独立的模块,并把它称为 过程,习惯上也称作子程序,然后在程序中用CALL语句调用这些过程,调用过程的程序称为主程序。 CALL指令迫使CPU暂停执行后续的下一条指令(形成断点),转去执行指定的过程,待过程执行完毕再返回断点继续运行。 格式: CALL NEAR PTR 过程名;段内调用 CALL FAR PTR 过程名;段间调用 (3)返回指令RET RET指令应安排在过程的出口处,它的功能是从堆栈中弹出由CALL指令压入的断点地址值,迫使 CPU返回到主程序的断点去继续执行。RET指令 为子程序最后执行的一条指令。 CALL与RET应配对使用。 返回指令的一般格式: RET 2. 条件转移指令 指令格式: JCC 目标标号 CC为转移条件,根据上一条指令执行后标志寄存器 F的状态决定是否转移。所有条件转移均为短转移, 指令机器码为2字节,第一字节为操作码; 第二字节 为8位地址位移量,范围为–128~+127。 条件不满足,程序仍顺序执行; 条件满足, 转移至目标地址去执行。 条件转移指令通常用在比较指令或算术逻辑运算指 令之后,根据比较或运算结果,转向不同的目的地 址。注意:所有条件转移指令均不影响标志位。 条件转移指令共有18条,可以归类成以下几大类。 (1)根据单个标志为条件进行测试 这类转移指令在指令助记符中,直接给出标志状态 的测试条件,它们以CF、ZF、SF、OF和PF等5个 标志的10种状态为判断的条件,共形成10条指令。 (2)根据标志间的组合条件进行测试 (3)根据CX中的值来决定是否转移 指令格式: JCXZ 目标标号 ;不对CX的内容进行操作,只根据CX的内容控制转 移,CX=0时转移,否则顺序执行。 举例:P120,例3-26 3. 循环控制指令 控制一段程序的重复执行,重复次数由CX决定。 这类指令均不影响标志F。 (1) LOOP循环指令 指令格式: LOOP 目标标号 功能:控制重复执行一系列指令。先将重复次数放在 CX中,每执行一次LOOP指令,CX自动减1(但不影响 标志)。如果减1后CX≠0,则继续循环; 若自动减1后 CX=0,则结束循环,转去执行后继指令。一条LOOP 指令在功能上相当于执行以下两条指令的功能: DEC CX JNZ 目标标号 应用:延时 AGAIN LOOP AGAIN LOOP指令执行循环用9个时钟周期,退出用5个. (2)LOOPE/LOOPZ相等或结果为零时的循环指令 格式: L

文档评论(0)

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

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

1亿VIP精品文档

相关文档