第五章循环与分支结构程序的设计.ppt

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

【例5.1】 在ADDR单元中存放着数Y的地址,试编制一程序把Y中(指数Y所有二进制位中包含)1的个数存入COUNT单元中。(PH163.asm) 要测出Y中1的个数就应逐位测试。一个比较简单的办法是可以根据最高有效位是否为1来计数,然后用移位的方法把各位数逐次移到最高位去。 TITLE 数1的程序 DATA SEGMENT ADDR DW NUMBER NUMBER DW Y COUNT DW ? DATA ENDS CODE SEGMENT MAIN PROC FAR ASSUME CS:CODE,DS:DATA START: PUSH DS SUB AX,AX PUSH AX MOV AX,DATA MOV DS,AX MOV CX,0 MOV BX,ADDR MOV AX,[BX] REPEAT: CMP AX,0 JZ EXIT JNS SHIFT INC CX SHIFT: SHL AX,1 JMP REPEAT EXIT: MOV COUNT,CX RET MAIN ENDP CODE ENDS END START ;运行时,Y应赋具体值 多重循环程序设计 循环可以有多重结构。多重循环程序设计的基本方法和单重循环程序设计的基本方法是一致的,应分别考虑各重循环的控制条件及其程序实现,相互之间不能混淆。此外,应该注意在每次通过外层循环再次进入内层循环时,初始条件必须重新设置。下面举例加以说明。 【例5-5】 有一个首地址为A的N字数组,编制程序使该数组中的数按照从大到小的次序排列。(双循环程序设计ph1732.asm PH173.asm )这里采用起泡排序算法,从第一个数开始依次对相邻两个数进行比较。如次序对,则不做任何操作;如次序不对,则使两个数交换位置。表5-1表示了这种算法的例子。从中可以看出,在做了第一遍的(N?1)次比较后,最小的数已经放到了最后,所以第二遍只需要考虑(N?1)个数,即只需要比较(N?2)次。第三遍则只需要做(N?3)次比较……总共最多(N?1)遍比较就可以完成排序。图5.5表示了起泡排序算法的程序框图,并编制了起泡排序算法的程序。 【例5-7】 在附加段中,有一个按从小到大顺序排列的无符号数数组,其首地址存放在DI寄存器中,数组中的第一个单元存放着数组长度,在AX中有一个无符号数,要求在数组中查找(AX)。如找到,则使CF=0,并在SI中给出该元素在数组中的偏移地址;如未找到,则使CF=1。 折半查找法先取有序数组的中间元素与查找值相比较。如相等则查找成功;如查找值大于中间元素,则再取高半部的中间元素与查找值相比较。如查找值小于中间元素,则再取低半部的中间元素与查找值相比较。如此重复直到查找成功或最终未找到该数为止。 * * 5.1 循环结构程序设计 (1)初始化部分  这是循环的准备部分,为程序操作、地址指针、循环计数、结束条件等设置初始值。 (2)循环体,包括以下3个部分: 循环工作部分------这是循环程序的主体,完成程序的基本操作,循环多少次,这部分语句就执行多少次。 循环修改部分-----修改循环工作部分的变量地址等,这保证每次重复时,参加执行的数据能发生有规律的变化。 循环控制部分-----保证循环条件满足时进入循环;循环结束条件不满足时,退出循环,执行循环体外的后续语句。 (3)循环结束部分 完成循环结束后的处理,如数据分析、结果的存放等。 第五章循环与分支结构程序设计 循环程序典型结构 图5.2 数1的程序框图 循环程序控制方法之一----计数法循环次数已知 1. 正计数法 2. 负计数法 计数器的初值为0,每执行一遍循环,计数器加1,然后与规定的循环次数比较,若相等,则结束循环,否则继续循环。 计数器的初值为循环次数,每执行一遍循环体后,计数器减1,当减为0时,结束循环,否则继续循环。 【例5.2】分别

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档