第四章_第01讲_程序设计的基本方法.ppt

  1. 1、本文档共48页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第四章_第01讲_程序设计的基本方法

简单条件转移指令具有如下的特点:1.简单条件转移指令是根据单一标志位的状态来确定转移的方向的;2.由于在简单转移指令中,只能够使用短标号,当超出了转移的范围时,必须使用JMP无条件转移指令搭桥跳转;3.另外,简单条件转移指令不能作段间转移,也不能用作间接转移;4.最后强调一下,简单条件转移指令,不影响标志位的值,可以连续使用简单条件转移指令,产生多个分支。 * 学习了简单条件转移指令,下面我们来学习无符号数条件转移指令。无符号数条件转移指令往往跟在比较指令之后,根据与无符号数特征有关的标志位CF和ZF的组合来决定转移的方向。分别是JA、JAE和JB、JBE,代表大于、大于等于和小于、小于等于。与简单条件转移指令一样,在无符号数条件转移指令中,只能够使用短标号。即只能够在段内进行跳转。 * 首先来看一看无符号数大于转移指令JA,当CF=0并且ZF=0的时候,JA指令进行跳转。他的作用是用于两个无符号数大小的比较,通常跟在CMP指令的后面,只有目的操作数大于源操作数的时候,才进行跳转。 * 了解了JA指令的工作原理,就很容易理解JAE、JB和JBE指令了,这些指令都比较简单,在这里不再多述了,同学们应该能根据这些指令的特点分类学习和记忆。 * 关于无符号数条件转移指令,在使用时,首先将目的操作数和源操作数看成是无符号数,并且执行目的操作数减源操作数的操作,如果目的操作数大于源操作数,那么CF标志位一定为0,并且ZF标志位一定为0,此时可以使用JA指令。如果目的操作数小于源操作数,那么CF的值为1,ZF的值为0,此时可以使用JB指令。当目的操作数和源操作数相等时,CF的值为0,ZF的值为1,此时可以使用JAE指令或者是JBE指令。 * 那么CF和ZF标志位是否可以用作判断有符号数大小比较的标志位呢。首先,我们来看一看有符号数相减的结果,如表所示。结果显示不用用CF和ZF的组合来判断有符号数的大小,必须使用SF、OF和ZF的组合来判断有符号数的大小。 * 有符号数条件转移指令分别是JG、JGE、JL和JLE指令。当SF=OF并且ZF=0时,使用JG表示大于转移指令。当SF=OF并且ZF=1时,使用JGE表示大于等于转移指令。当SFOF并且ZF=0时,使用JL表示小于转移指令。当SFOF并且ZF=1时,使用JLE表示小于等于转移指令。 * 我们以JL指令为例来分析有符号数条件转移指令。当SFOF并且ZF为0的时候,表明目的操作数小于源操作数,此时将进行跳转,具体我们来分析一下,两个有符号数进行相减时,有SF和OF有哪几种情况。分析可以看出,当SFOF时,均表示有符号的目的操作数小于有符号的源操作数。 * 关于有符号数的大于等于、大于和小于等于的指令涵义,同学们可以自己实验和体会,在这里不再多述。 * 下面对有条件转移指令进行总结。在80X86汇编语言中,有条件的转移指令分为3类,分别是简单条件转移指令、有符号数条件转移指令和无符号数条件转移指令。他们都只能使用短标号,也就是说他们都只能在段内进行跳转。与简单条件跳转指令相关的标志位包括SF、CF、ZF、OF和PF,共10条指令。当进行有符号数大小比较的时候,使用JG、JGE、JL和JLE指令。当进行无符号数大小比较的时候,使用JA、JAE、JB和JBE指令。条件转移指令均可以用于分支程序的设计,他们都不影响标志位,可以连续使用设计多路跳转的程序。 * 那么,在80X86程序设计时,到底该如何选择条件转移指令呢。选择什么指令,是依据解题的要求和被判断对象的特点进行的。首先运算或者比较指令是不管当前的数到底是有符号数还是无符号数的,他们根据运算结果既按照有符号数来设置标志位,同时也按照无符号数来设置标志位,只等条件转移指令来选择相应的标志位进行判断跳转。在之前的学习中,已经指出,在80X86汇编语言中,数字本身到底是有符号数还是无符号数,不是由自身的写法决定,而是由能够区分它们的指令来决定的,如果想按照有符号数处理,就选择有符号数的处理指令。如果想按照无符号数处理,就选择无符号数的处理指令。另外在选择指令时,一定要了解指令是否对标志位产生了影响,如果指令对标志位没有产生影响,那么就不能选择对应的跳转指令了。例如,INC、DEC指令对CF标志位都没有影响,因此选择JC和JNC指令都是错误的指令。 * 以上是条件转移指令的一个应用实例,同学们可以自己分析,理解该程序实现的功能。 * 学习了条件转移指令,现在我们来学习无条件转移指令。无条件转移指令的符号是JMP,所谓无条件转移指令,就是无论当前标志位寄存器的状态如何,都是的CPU无条件的转移到指令指明的目标位置执行,无条件转移指令转移的范围大,灵活性好。但是,在这里需要提醒同学们注意的是,JMP指令不能构成分支程序,但是可以将各个分支的出口重新汇

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档