第11次课第10章循环程序设计_第1页
第11次课第10章循环程序设计_第2页
第11次课第10章循环程序设计_第3页
第11次课第10章循环程序设计_第4页
第11次课第10章循环程序设计_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本次课程要点:1、掌握循环程序设计的基本结构。2、掌握多种不同循环程序设计的格式及应用。第 10章 循环程序设计N循环结束工作部分修改部分结束处理部分初始化部分初始化部分Y控制部分初始化部分工作部分修改部分循环结束结束处理部分Y控制部分N一、循环程序基本结构 第 10章 循环程序设计先执行后判断 先判断后执行二、循环控制方法1、用计数控制循环 使用计数器,达到计数器预定值,循环结束。要求循环次数已知。 计数器可以递增、递减 可以选用寄存器、也可用存储单元第 10章 循环程序设计例 1:用正计数法,计算数组 ARRAY所有单元的和。 累加和、计数器、数组指针清 0开始结束累加计数器 =循环次数 ?YN数组指针 ,计数器加 1第 10章 循环程序设计DATA SEGMENTARRAY DB 1,2,3,4,5,6,7,8,9,10COUNT EQU $-ARRAYSUM DW ?DATA ENDSSTACK1 SEGMENT PARA STACKDW 20H DUP(0)STACK1 ENDSCODE SEGMENTASSUME CS: CODE, DS:DATASTART: MOV AX, DATAMOV DS, AXXOR AX,AX ;AX寄存器清 0,累加用MOV CX,0 ;计数器 CX清 0MOV SI, 0 ;数组指针清 0第 10章 循环程序设计NEXT: ADD AL,ARRAYSI ;数组累加INC SI ;数组指针后移INC CX ;计数器加 1CMP CX,COUNT ;计数器值与循环次数比较JL NEXT ;如果小于,继续循环MOV BYTE PTR SUM,AL ;将累计和存入变量MOV AH, 4CHINT 21HCODE ENDSEND START第 10章 循环程序设计例 2:用倒计数法,统计字符串 String中大写字母的个数。 第 10章 循环程序设计二、循环控制方法1、用计数控制循环例 2程序例 3:已知数组 X和 Y各有 10个元素,将两个数组按以下公式计算,结果存入 Z中。 第 10章 循环程序设计二、循环控制方法1、用计数控制循环Z1=X1 AND Y1Z2=X2 XOR Y2Z3=X3 XOR Y3Z4=X4 AND Y4Z5=X5 XOR Y5Z6=X6 AND Y6Z7=X7 XOR Y7Z8=X8 AND Y8Z9=X9 XOR Y9Z10=X10 XOR Y10开始初始化计数器 CX逻辑尺 i位 =0?进行 XOR运算结束流程图进行 AND运算i=0YN结果存入 Zi=i+1CX=0?NY2、用条件控制循环 找出一个终止循环的条件,每循环一次,对条件进行一次检测。满足终止循环的条件,退出循环,否则继续。 通常选用条件转移指令来控制循环是否结束。第 10章 循环程序设计二、循环控制方法例 4:编写程序,求解兔子繁殖问题,给出到指定只兔子数时,需要多少个月。 开始结束新数 给定数 ?YN月数 CX初始化数列初始化交换 AX, BX产生新的斐波那契数月数加 1存储月数时间 初生兔子成熟兔子兔子总数1 1 0 1 2 0 1 1 3 1 1 2 4 1 2 3 5 2 3 5 6 3 5 8 7 5 8 13 8 8 13 21 9 13 21 34 10 21 34 55 第 10章 循环程序设计实现程序如下:DATA SEGMENTRABBITNUM DW 650 ; 存放兔子只数MONTHNUM DB ? ;存放月数DATA ENDSSTACK1 SEGMENT PARA STACKDW 20H DUP (?)STACK1 ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS, AXXOR CX,CX ;计数器清 0MOV AX,0 ;斐波那契数初始值MOV BX,1NEXT: XCHG AX,BXADD AX,BX ;产生一个新的斐波那契数INC CL ;计数器加 1CMP AX,RABBITNUM ;比较产生的新数与给定数JAE RESULT ;如果大于或等于,结束JMP NEXT ;小于,继续循环RESULT: MOV MONTHNUM,CLMOV AH,4CHINT 21HCODE ENDSEND START1、内循环必须完整地包含在外循环内,二者不可以相互交叉。2、当从外循环再次进入内循环时,内循环的初始条件要重新设置。3、一个外循环中可以包含多个内循环,这些内循环可以嵌套,也可以并列存在。4、当内外循环都采用 CX寄存器作为计数器时,由外循环进入内循环时,要保留外循环的次数,可以通过压入堆栈、存入其它寄存器或存储器中实现。5、当外层循环要求内层循环在不同条件下重复执行时,外循环中应该包括对内循环部分参数的修改部分。三、多重循环程序设计第 10章 循环程序设计开始结束CX=0?YN行号 J=0,乘法表指针 DI=0外循环次数 CX=9外循环次数 CX入栈行号 J加 1I*J存入乘法表修改指针 DI加 1列号 I=0,内循环次数 CX=9列号 I加 1内循环次数 CX减 1恢复外循环次数外循环次数 CX减 1CX=0?YN例 5 编写程序,在存储器中构造一个九九乘法表。DATA SEGMENTMULTABLE DB 9*9 DUP(0)DATA ENDSSTACK1 SEGMENT PARA STACKDW 20H DUP (?)STACK1 ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS, AXMOV BH,0 ;将行号初值存入 BHXOR DI, DI ;将乘法表的指针清 0MOV CX,9 ;外循环次数为 9OUTERLOP: PUSH CX ;将外循环次数入栈保护INC BH ;行号加 1MOV BL,0 ;将列号初值存入 BLMOV CX,9 ;内循环次数为 9INNERLOP:INC BL ;列号加 1MOV AL,BH ;将行号存入 ALMUL BL ;将行号 *列号存入 ALMOV MULTABLEDI,AL ;将 AL存入乘法表中INC DI ;修改乘法表指针LOOP INNERLOP ;内循环控制语句POP CX ;恢复外循环次数LOOP OUTERLOP ;外

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论