中职计算机原理(主编瞿正刚等_北理工版)课件模块三_指令系统_5.pptVIP

中职计算机原理(主编瞿正刚等_北理工版)课件模块三_指令系统_5.ppt

  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文档。上传文档
查看更多
中职计算机原理(主编瞿正刚等_北理工版)课件模块三_指令系统_5

任务3 8086指令系统 2.条件转移指令 8086指令系统的条件转移指令以某些标志位的状态或有关标志位的逻辑运算结果作为依据,以此决定是否转移。 这些标志位通常由条件转移指令的上一条指令所设置。条件转移指令将根据这些标志位的状态,判断是否满足对应的测试条件。若满足条件,则转移到指令指定的地方,否则继续执行条件转移指令之后的指令。 此外还有无符号数比较转移指令和带符号数比较转移指令两类,这两类指令一般在CMP指令后使用。 条件转移指令的助记符、指令名称、转移条件如表3-4所示。 下一页 返回 上一页 表3-4条件转移指令转移条件 返回 任务3 8086指令系统 [例3-7]已知在内存中有两个无符号字节数据X1和X2,比较两个数是否相等,若相等,则将RESULT单元置1,否则置0。其程序段如下。 MOV AL,X1 ;将第1个数取出送至AL中 CMP AL,X2 ;和第2个数进行比较 JZ NEXT ;相等则转到NEXT位置执行 MOV RESULT,0 ;否则,将RESULT单元置。 JMP EXIT ;然后转到EXIT位置 NEXT:MOV RESULT,1 ;将RESULT单元置1 EXIT:HLT 下一页 返回 上一页 任务3 8086指令系统 [例3-8]已知在内存中有两个无符号字节数据NUM1和NUM2,找出其中的最大数送到MAX单元。其程序段如下。 MOV AL,NUM1 ;将第1个数取出送到AL中 CMP AL,NUM2 ;和第2个数进行比较 JA NEXT ;第1个数大于第2个数则转到NEXT位置 MOV AL,NUM2 ;否则将第2个数取出送到AL中 NEXT:MOV MAX,AL ;AL中为最大数送到MAX单元 本题若改为带符号数,则程序段如下。 MOV AL,NUM1;将第1个数取出送到AL中 下一页 返回 上一页 任务3 8086指令系统 CMP AL,NUM2 ;和第2个数进行比较 JG NEXT ;第1个数大于第2个数则转到NEXT位置 MOV AL,NUM2 ;否则将第2个数取出送到AL中 NEXT:MOV MAX,AL ;AL中为最大数,送到MAX单元 3.循环控制指令 循环程序是一种常用的程序结构,为了加快对循环程序的控制,8086系统专门设置了一组循环控制指令,如表3-5所示,循环计数值在CX中。 下一页 返回 上一页 表3-5循环控制指令 返回 任务3 8086指令系统 循环控制指令只是根据结果的标志位状态进行控制操作,指令本身不影响标志位。循环控制指令用于控制程序的循环,其控制转向的目的地址是在以当前指令指针IP内容为中心的-128~+127的范围内,指令采用CX作为计数器,每执行一次循环,CX内容减1,直到为0,循环结束。 LOOP指令是以寄存器CX的内容作为计数控制,做(CX) ←(CX)-1的操作,并判断CX;当(CX)≠ 0时,转移到由操作数指示的目的地址,即(IP) ~(IP)+位移量,进行循环;当(CX)=0时,结束循环。 LOOPZ/LOOPE指令可完成当ZF=1且(CX)≠0条件下的循环操作。在LOOPZ或LOOPE所做的控制循环操作过程中,除了进行(CX)←(CX)-1的操作,还要判断(CX)是否为零。此外,还将判断标志位ZF的值。 下一页 返回 上一页 任务3 8086指令系统 LOOPNZ或LOOPNE指令可完成当ZF=0且(CX)≠0的条件下的循环控制操作。其操作过程类似于LOOPZ或LOOPE指令。 [例3-9]在内存中有一个具有CN个字节的数据串,首单元地址为DATA-BUF,找出第1个不为0的数据的地址并送到ADDR单元中。其程序如下。 MOV SI,OFFSET DATA-BUF ;取首单元地址 MOV CX,CN;计数器初值 MOV AL,O;AL清零 DEC SI;循环初始化 LP:INC SI;指针增1 CMP AL,[SI] ;内存中的数据和AL中的内容比较 LOOPZ LP;为0且未比较到末尾转LP位置继续 JZ EXIT;否则判断ZF,若为1,转EXIT MOV ADDR,SI;ZF为O,SI中的内容送ADDR 下一页 返回 上一页 任务3 8086指令系统 EXIT:HLT 该程序段中循环结束的情况有两种:一种是找到了不为0的数据,一种是CN个数据比较结束后未找到。所以,退出循环后要判断ZF是否为1,ZF -1说明所有数据都为0,否则就是找到了不为0的数据,并且由SI指示其存储地址。 4.子程序调用和返回指令 在程序设计过程中,通常把功能分解为若干个小的模块。每一个小功能模块对应一个过程。在汇编语言中,过程又称为子程序。程序中可由调用程序(称为主程序)调用这些子程序,子程序执行完毕后返回主程序继续执行。 子程序调用分为段内和段间

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档