- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第四章 程序设计的基本方法 微机原理与接口技术 2010.5 4.4 汇编语言程序设计方法 4.4.1 概述 4.4.2 分支程序设计 4.4.3 循环程序设计 4.4.4 子程序设计 4.4.1 概述 汇编语言程序设计的一般步骤 4.4.2 分支程序设计 问题:计算机怎样判断这些分支? 分支程序设计要点 4.4.2.1 转移指令 转移指令的分类 1 无条件转移指令 格式:JMP 标号 作用: ①使CPU无条件地转移到指令指明的目的地址处(标号指定)执行,转移的范围大,灵活性大; ②不能构成分支程序,但可将各分支的出口重新汇集在一起; 2 条件转移指令 条件转移指令语句格式: 操作符 标号 JX 标号 功能:如果转移条件满足,则标号的EA(立即数) → IP 否则,执行紧跟转移指令之后的那条指令。 2 条件转移指令 例如: ┋ JZ NEXT INC AX ┋ NEXT:DEC CX ┋ 2 简单条件转移 特点: 只能是段内直接跳转,即: (1) 用立即数改变IP的值,不改变CS。 (2)为有符号数,0 向前转,否则往回转。 (3)16位段:汇编程序计算的位移量在 IF -128~127之间时,翻译成8位有符号数; ELSE IF -32768~32767间时,翻译成16位有符号数; ELSE ERROR。 (1) 简单条件转移指令 例:分析以下程序段,指出所完成的功能。 ┋ MOV Y,-1 MOV AX,X CMP AX,0 JE EXIT1 ADD AX,1000H JO OVER JNS EXIT1 NEG AX EXIT1: MOV Y,AX EXIT0: MOV AH,4CH INT 21H OVER: LEA DX,OVERF MOV AH,9 INT 21H JMP EXIT0 (2) 无符号数条件转移指令 (3) 有符号数条件转移指令 例1:请实现:(AX)小于0转A处执行。 CMP AX, 0 JL A 例2:(AX)+(-2) = AX, 如果结果小于0转L。 ADD AX,-2 JL L 问题:可以用JS吗? 例3:清除数据段中EA为8002H ~ 2000H号字中的内容为0。 MOV BX,8002H L: MOV WORD PTR[BX],0 SUB BX,2 CMP BX,2000H JAE L ;问题:此处用JGE会怎样?JNB呢? No 1 8 0 01H -32767 0FFFEH -2 7FFFH 此例中不能用JS,因为当(AX)=8001H时(即-7FFFH的补码) 说明两负数相加结果为正,产生溢出,仅用JS不发生转移。而此时OF=1、SF=0, SF ?OF=1,发生转移。 该例说明JL本质上是判断运算结果是否为负,而不仅仅是(OPD)(OPS). 可见,对于有符号数,只用一个标志位来判断是否转移往往会造成错误。要用有符号数条件转移指令,除非是和0进行比较。 不能循环,因为清第一个字后,EA修改为8000H,为负,跳出循环。 地址是一种无符号数。 Chapter 4 汇编语言程序设计 微机原理与接口技术 * 设计一个程序要点: 认真分析问题的需求,选择好解决方法; 针对选定的算法,编写高质量的程序。 一个高质量的程序不仅要满足设计的要求,而且还应尽可能实现以下几点: (1)结构清晰、简明、易读、易调试。结构好 (2)执行速度快。 效率高 (3)占用存储空间少。
文档评论(0)