第5-2章循环程序设计课件.pptVIP

  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文档。上传文档
查看更多
设问: 本章重点 循环的概念 循环指令 串处理 多重循环 6.1 循环的概念 6.1.1 循环结构 循环程序有三部分: l?? 设置循环的初始状态 l?? 循环体 l 循环控制部分 6.1.1 循环程序例子 运行结果: 6.2 循环指令 例1 求X=1+2+3+…+10的累加值。 MOV AL,0 MOV BL,1 MOV CX,10 SS1:ADD AL,BL INC BL LOOP SS1 MOV X,AL 6.2.2 LOOPZ/LOOPE 格式: LOOPZ/LOOPE OPR 执行的操作:(CX)=(CX)-1,若CX≠0,并且ZF=1则跳转到标号OPR处循环执行,若CX=0,或者ZF=0则执行LOOP的下一条指令。 6.3 串处理 在汇编语言中,可将连续的n个存储单元称为串、表、数组等。 对于这种数据结构的操作称为串处理。 对串进行操作,需要几个参数,如串的长度、串的起始单元地址等;而且串操作大都是循环执行的,循环如何控制、串的存取方式等都不同于其它数据操作。 6.3.2 串处理例子 此时,数据段的段地址为0B45H,而附加段的段地址为0B46H。查看的结果在附加段中。 6.3.3 串处理指令 示例6-3 比较两个字串BUNCH1和BUNCH2是否相同,相同打印‘Y’,不相同打印‘N’。 6.3.4 串与循环 例1 将ALPHA数组送入100个’a’。 (1)用条件转移指令实现循环 MOV CX,100 MOV SI,0 SS0: MOV ALPHA[SI],’a’ INC SI DEC CX JNZ SS0 …… 6.4 多重循环 6.4.2排序程序 设计思路: (1)用两条LOOP指令实现双重循环时,对CX寄存器有冲突。采用PUSH CX指令将外循环的CX值入栈保存,内循环的LOOP结束后,再将外循环的CX恢复; (2)用相对寄存器寻址取出两数进行比较。 练习: 数组TABLE中存放8个小写字母computer。编程序,将它们按降序排序。 6.5 循环程序举例 6.6 实例六 循环之循环 (1)把程序调入DEBUG,用U命令反汇编,显示出机器指令和对应的汇编指令 (2)用G命令先执行到断点处,再用D DS:0命令查看数据段情况 (3)再用单步调试T命令单步执行,并观察结果 (4)打开两个窗口 (5)执行LOOP指令 (6)查看结果 6.6.2 实验示例 设计思路: (1)外循环控制行数,内循环控制列数并完成最大值判断; (2)内外循环都用LOOP指令,用堆栈保存外循环计数值CX,从外循环进入内循环时要恢复内循环的计数值CX; (3)用已存入一维矩阵MAX 的数据与A矩阵的数据做比较,较大的数放入MAX后再与其它数继续比较。 6.6.3 实验任务 习题六 (2)用LOOP指令实现循环 MOV CX,100 MOV SI,0 SS0: MOV ALPHA[SI],’a’ INC SI LOOP SS0 …… (3)用串处理REP前缀实现循环 MOV CX,100 MOV DI,OFFSET ALPHA MOV AL,’a’ REP STOSB 分析:由于问题简单,只是做赋值操作,且循环次数已知,所以可以用这三种方法实现。 1. 内循环和外循环的控制 双重循环需要两个循环控制变量I,J。 多重循环嵌套时,不允许内外循环交叉。 6.4.1多重循环结构 2.内循环和外循环的跳转 在多重循环程序编写过程中,要注意循环体内条件转移指令的转移方向。一般来说,可以从内循环跳入外循环,或者跳出外循环;不允许从外循环跳入内循环或者直接从循环外跳入循环内。 双重循环程序的典型应用是排序。排序采用冒泡算法。 冒泡算法的主要思想是从第一个元素开始,依次对两个相邻的元素进行比较,如果第一个元素比第二个大,则两数交换位置,第一遍N-1次比较之后,最大的数排在最后;再做第二遍N-2次比较,比较出第二大的数……;以此类推,最多进行N-1遍比较,所有的数按从小到大升序排序。 示例6-5 将字数组PART按升序排序。 程序如下: ;6-5.asm 将字数组part按升序排序。 data segment part dw 15,32,6,-27,8 sign dw ? data ends code segment assume cs:code,ds:data start: mov ax,data mov ds

文档评论(0)

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

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

1亿VIP精品文档

相关文档