汇编语言第四章 程序设计基本方法.docVIP

  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文档。上传文档
查看更多
程序设计的基本方法 汇编语言程序中,最常见的几种程序结构形式:顺序程序、分支程序、循环程序、子程序。 转移指令 分支程序的设计 循环程序设计,循环指令 堆栈的概念,进栈、出栈指令 子程序的定义、调用、返回;主程序与子程序的参数传递 转移指令 特点:改变程序的执行顺序,即改变了指令指示器IP的内容。 条件转移 功能:由上一条指令所设的条件码来判别测试条件,满足条件则转移到指令所指地址去执行,否则循环执行。 满足条件时,当前(IP)+符号扩展到16位的位移量→IP。位移范围在-128~127之间。 根据标志位转移 CF标志:JC / JNC JC表示:CF=1时转移。例如两数相减,低于。 JNC表示:CF=0时转移。例如两数相减,高于或等于。 ZF标志:JZ / JNZ JZ表示:结果为0,转移,此时ZF=1。 JNZ表示:结果不为0,转移,此时ZF=0。 SF标志:JS / JNS JS表示:结果为负,转移,此时SF=1。 JNZ表示:结果不为正,转移,此时SF=0。 OF标志:JO /JNO JO表示:结果溢出,转移,此时OF=1。 JNO表示:结果不溢出,转移,此时OF=0。 PF标志:JP / JNP或JPE / JPO JP表示:低8位中1的个数为偶数时转移,此时OF=1。 JNP表示:低8位中1的个数为奇数时转移,此时OF=0。 如:两数相加,结果为0,则转移到P2,否则运行P1。 无符号数的条件转移 此指令跟在比较指令之后,比较的对象为无符号数。结果有:高于、高于等于、低于、低于等于。 Above:高于,below:低于,equal:等于。 JA / JNBE JA表示:高于则转移。 JNBE表示:不低于或等于转移。 测试条件:CF∨ZF=0。 (分析:a-b≥0,此时CF=0;a-b≠0,此时ZF=0。) JAE / JNB JAE表示:高于等于则转移。 JNB表示:不低于则转移。 测试条件:CF=0或ZF=1。 JB / JNAE JB表示:低于则转移。 JNAE表示:不高于且不等于则转移。 测试条件:CF=1。 JBE / JNA JBE表示:低于等于则转移。 JNA表示:不高于则转移。 测试条件:CF∨ZF=1。 带符号数条件转移 比较结果分为4种:大于、大于等于、小于、小于等于。 Great:大于,Little:小于,Equal:等于。 JG / JNLE JG表示:两数相比,大于,则转移。 JNLE表示:两数相比,不小于且不等于,则转移。 测试条件:(SFOF)∨ZF=0。 JGE / JNL JGE表示:两数相比,大于等于,则转移。 JNL表示:两数相比,不小于,则转移。 测试条件:SFOF=0。 JL / JNGE JL表示:两数相比,小于,则转移。 JNGE表示:两数相比,不大于且不等于,则转移。 测试条件:SFOF=1。 JLE / JNG JLE表示:两数相比,小于等于,则转移。 JNG表示:两数相比,不大于,则转移。 测试条件:(SFOF)∨ZF=1。 使用转移指令时应注意: 注意: CMP比较指令本身无法分别有、无符号数,它比较的是否有符号,由后面的转移指令确定。 例: 若将JG换为JA,就变成无符号数了,此时,(AL)=(-40H)补=C0H>50H,转移。 转移指令的转移范围-128~127。 无条件转移指令 功能:无条件地转移到目的地址执行。可以分为两类:段内、段间。 段内直接近转移 格式:JMP NEAR PTR 标号; 功能:(IP)+16位偏移量→IP。转移范围32K。 段内间接转移 格式:JMP WORD PTR OPD; 功能:(OPD)→IP。 如:JMP WORD PTR [BX+TABLE] 作用:([BX+TABLE])→IP,偏移地址[BX+TABLE]所指单元的内容送IP。 假定:(DS)=2000H,(BX)=1256H,TABLE=20A1H,(232F7H)=3280H。 则:PA = (DS)左移4位+(BX)+TABLE = 232F7H 执行后:(IP)=3280H 段间直接转移 格式:JMP FAR PTR 标号; 功能:标号的偏移地址→IP,标号所在段地址→CS。 如: 段间间接转移 格式:JMP DWORD PTR OPD 功能:(OPD)→IP,(OPD+2)→CS。 如:JMP DWORD PTR [BX] ([BX])→IP,([BX]+2)→CS。注意是偏移地址[BX]所指内容。 分支程序设计 特点:计算机根据不同情况自动作出判断,有选择地执行相应处理程序。 两种结构形式 结构特点:运行方向是向前的,条件确定,只能执行分支中的一个。 程序设计方法 程序分支一般用条件转移指令产生,不同条件是通过FLAGS的标志状态反映出来。注意

文档评论(0)

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

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

1亿VIP精品文档

相关文档