求循环结构程序流程图 循环

流程图―循环结构_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
流程图―循环结构
上传于||暂无简介
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
你可能喜欢4.6.4 循环结构程序设计
微机原理与接口技术多媒体教学课件
位置:--第六节
4.6.4 循环结构程序设计
  在程序中重复执行的程序段可用循环程序实现,80486微机系统中有专门的循环控制指令来简化循环程序的设计。
1.循环程序的结构形式&&
&&& 常见的循环程序结构有两种形式:DO-WHILE结构和DO-UNTIL结构,程序流程如图4.17和4.18所示。
(1)DO-WHILE结构
  这种结构的设计思想是:当循环控制条件满足时,执行循环体程序,否则退出循环。
(2)DO-UNTIL结构
  这种结构的设计思想是:先执行一次循环体程序,再判断循环控制条件是否满足。若不满足,再次执行循环体程序,直到满足循环控制条件时,才退出循环。
  这两种循环结构的基本结构都一样,通常由四部分组成。
(1)初始化部分
  这部分主要为循环做准备工作。包括建立指针,设置循环次数的计数初始值,设置其他变量的初始值等。
(2)循环体
  循环体是循环程序的核心部分,是每次循环都要重复执行的程序段,用于完成各种具体操作。
(3)修改部分
  为执行循环而修改某些参数,如地址指针、计数器或某些变量,为下次循环做准备。
(4)控制部分
  判断循环是否结束。这部分是循环程序设计的关键,每个循环程序必须选择一个控制循环程序运行和结束的条件。通常判断循环是否结束主要有两种方法。
① 计数器控制循环:这种方式一般用于循环次数已知的情况。
② 条件控制循环:用于循环次数未知的情况,根据条件决定是否结束。
2.循环程序设计
【例4.33】
  假设这10个已知数为字类型,已连续存放在内存中以AA为首址的存储区域中,其相加的和仍为字数据存放在BB字单元。
  解题思路:分析题意可知,求a1+a2+…+a10的和,要用10条加法指令来完成,这样程序太长,书写麻烦。由于数据是有规律存放的,并且每加一项所用的指令都一样,只是数据的地址不同,所以可用间接寻址的方法,将数据地址放在寄存器中,用寄存器加1指令修改地址来取得每个待加的数据,将相加的程序作为一个公共执行的程序段,重复执行10次来实现本题的累加过程。程序流程如图4.19所示。
程序如下:
a1, a2, a3, …, a10
&&&&&& ASSUME
CS: CODE, DS: DATA&&&&&&&&&&&&&&&
&&&&&& MOV
DS, AX&&&&&&&&&&&&&&&&&&&&
&&&&&& MOV
& ; 累加器AX清0
&&&&&& MOV
& ; 设置计数器初始值
&&&&&& MOV
BX, OFFSET
& ; BX←数据首地址
&&&&&& MOV
DI, OFFSET
& ; DI←存放结果地址
& ; 累加一个数据
&&&&&& INC
& ; 修改地址指针指向下一个数据
&&&&&& INC
&&&&&& LOOP
& ; CX-1≠0继续循环累加
&&&&&& MOV
CX=0, 循环结束, 存入结果
&&&&&& MOV
&&&&&& INT
&&&&&& END
若将AA定义为:
100H, 200H, 300H, 400H, 500H, 600H, 700H,
800H, 900H, 1000H
则运行结果为:
&&& AA: 100H, 200H, 300H, 400H, 500H, 600H, 700H, 800H,
900H, 1000H
  本例中已假定10个数据相加的和仍为一个字类型数据,即表明累加和不产生溢出。若这10个字数据的数值比较大时,应该用双字数据来表示相加的和,程序应如何编制呢
【例4.34】
设有两个字数组XX和YY,各包含10个元素x0~x9及y0~y9,试编制程序计算
z0=x0+y0&& z5=x5+y5
z1=x1+y1 & z6=x6-y6
z2=x2-y2&& z7=x7-y7
z3=x3-y3 & z8=x8+y8
z4=x4-y4 & z9=x9+y9
并将运算结果存入ZZ数组。
  解题思路:这是个循环次数已知的过程,每循环一次,由XX和YY数组各取一个数据进行相应的运算,并将运算结果存入ZZ数组。由于每次循环所做的运算不同,有加法也有减法,就必须建立一个标志位,若为“0”做加法,为“1”则做减法,这样一来,只要判断标志位就可确定本次循环该做什么操作了。另外,题目要求进行10次运算,应该建立10个标志位,并存放在一个存储单元中,称为逻辑尺。根据z0~z9的运算类型,设定逻辑尺如下:
其中最末位的状态对应z0的操作,应做加法,其余位依次类推,最高的6位无意义。程序流程如图4.20所。
程序如下。
&& SEGMENT
& X1, X2, X3, X4, X5, X6, X7, X8, X9,
& Y1, Y2, Y3, Y4, Y5, Y6, Y7, Y8, Y9,
& 10 DUP(
&& ENDS&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
CODE, DS: DATA&&&
&&&&&&&&&&&&&&& &
&&&&&& MOV
&&&&&& MOV
& ; 设置地址指针
&&&&&& MOV
& ; 设置计数器初始值
&&&&&& MOV
DX, LOGRULE
DX←逻辑尺的内容
AX, XX[BX]
取一个Xi值
& ; 逻辑尺内容右移一位, 末位→CF
& ; CF=1, 转移
& ; CF=0, 做Xi+Yi运算
AX, YY[BX]
CF=1做Xi-Yi运算
ZZ[BX], AX
存结果→Zi单元
& ; 修改地址指针
&&&&& LOOP
& ; CX≠0循环继续进行下一次运算
100H, 200H, 300H, 400H, 500H, 600H, 700H, 800H,
900H, 1000H
200H, 300H, 400H, 100H, 1FFH, 500H, 800H, 700H,
1FFH, 2C00H
则运行结果为:
XX: 100H, 200H, 300H, 400H, 500H, 600H, 700H,
800H, 900H, 1000H
YY:200H, 300H, 400H, 100H, 1FFH, 500H, 800H, 700H,
1FFH, 2C00H
H FF00H 0300H
H FF00H 0100H 0AFFH 3C00H
  以上例题给出的程序属于单循环,也称为简单循环程序。然而在程序设计中,有一些比较复杂的过程,仅采用单重循环是不能解决问题的,这就出现了多重循环程序结构。所谓多重循环就是在循环程序的循环体内又包含着循环结构,称为循环嵌套。
  多重循环结构中最常用的是二重循环,二重循环是指在一个循环中还包含有另一个完整的循环结构,外面一层循环称为外层循环,里面一层循环称为内层循环。
  多重循环程序的设计方法和单重循环程序的设计方法是一致的,应分别考虑各重循环的控制条件及其程序实现,相互之间不能混淆。要注意的是:内循环必须完整地被包含在外循环中,循环可以嵌套、并列,但不可以交叉。另外,还应分清循环层次,避免出现死循环。
 下面举例说明多重循环程序的设计方法。
【例4.35】
设有一个首地址为ARRAY的n字数组,试编制程序使该数组中的数按从大到小的次序排列。
  解题思路:对于这样一个数组排列问题,通常采用气泡排序算法。从数组的第一个元素开始,依次进行相邻两个元素的大小比较。若符合排序规定,则不做任何操作;若不符合排序规定,则将两数交换位置。第一遍比较(共进行n-1次相邻两元素比较)完后,数组中最小的数已经排在了最后。然后以同样的做法,再进行第二遍比较,为了加快处理速度,最后一个数将不再参与比较,所以只需对n-1个数进行考虑,需进行n-2次相邻两元素比较过程。同样,第三遍比较只有n-2个数需要考虑(又有一个较小的数排在后面),需进行n-3次相邻两元素的比较过程。对于n个数组元素,最多需进行n-1遍比较就可完成排序过程。气泡排序的过程见表4.4。
  由表可知,六个数据排序,仅进行了三遍比较就按从大到小的顺序排好了。因而每遍比较结束后,应判断一下,在本次比较排序过程中,有没有发生相邻两个数据的交换,若发生了交换,则表明数组顺序还未排好,应进行下一轮比较排序,若在这次比较排序过程中,没有发生相邻两数据的交换,则表明数组元素已按规定顺序排好,可以提前结束循环,这样可以缩短CPU执行程序的时间。本例中设置DL寄存器为交换标志,DL=00时表明无交换,DL=01H时表明发生了相邻两数据的交换。程序流程如图4.21所示。
程序如下。
定义N字数组
&&&&&& ASSUME
CS: CSEG, DS: DSEG
&&&&&& MOV
&&&&&& MOV
设置内循环计数器初始值&&
设置外循环计数器初始值&&&&&&&&&
设地址指针BX=0000H&
清交换标志(置成不交换状态)
AX, ARRAY[BX]
相邻两数比较
AX, ARRAY[BX+2]
若符合排序规定, 转移
&&&&& XCHG
AX, ARRAY[BX+2]
若不符合排序规定, 两数交换
ARRAY[BX],
置交换标志
修改地址指针
&&&&& LOOP
若一遍未比较完, 继续
外循环次数减1
外循环结束, 转移
DL, DL ; 外循环没有结束, 检测交换
标志DL的状态, DL=01H,继续循环, 否则排序结束
20, 15, 67, 312, 46, 37
则运行结果为:
OLD ARRAY:
NEW ARRAY:312
       【图文】流程图 循环结构1_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
流程图 循环结构1
上传于||文档简介
&&循​环​结​构​的​第​一​节
大小:469.00KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢1.2.3流程图――循环结构_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
1.2.3流程图――循环结构
上传于||暂无简介
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
下载文档到电脑,查找使用更方便
还剩1页未读,继续阅读
你可能喜欢}

我要回帖

更多关于 销售与收款循环流程图 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信