- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第6章循环程序设计
6.4 多重循环 1. 内循环和外循环的控制 双重循环需要两个循环控制变量I,J。 多重循环嵌套时,不允许内外循环交叉。 6.4.1多重循环结构 2.内循环和外循环的跳转 在多重循环程序编写过程中,要注意循环体内条件转移指令的转移方向。一般来说,可以从内循环跳入外循环,或者跳出外循环;不允许从外循环跳入内循环或者直接从循环外跳入循环内。 6.4.2排序程序 双重循环程序的典型应用是排序。排序采用冒泡算法。 冒泡算法的主要思想是从第一个元素开始,依次对两个相邻的元素进行比较,如果第一个元素比第二个大,则两数交换位置,第一遍N-1次比较之后,最大的数排在最后;再做第二遍N-2次比较,比较出第二大的数……;以此类推,最多进行N-1遍比较,所有的数按从小到大升序排序。 设计思路: (1)用两条LOOP指令实现双重循环时,对CX寄存器有冲突。采用PUSH CX指令将外循环的CX值入栈保存,内循环的LOOP结束后,再将外循环的CX恢复; (2)用相对寄存器寻址取出两数进行比较。 示例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,ax mov cx,sign-part ;数组长度 shr cx,1 ;元素个数 dec cx loop1: push cx ;保存外循环次数 mov bx,0 loop2: mov ax,part[bx] cmp ax,part[bx+2] jle next ;升序 xchg ax,part[bx+2] ;交换 mov part[bx],ax next: add bx,2 loop loop2 pop cx ;恢复外循环次数 loop loop1 mov ah,4ch int 21h code ends end start 练习: 数组TABLE中存放8个小写字母computer。编程序,将它们按降序排序。 6.5 循环程序举例 如X=5488114433225634H,Y=3499754783645231H,Z=8921868BB686A865H 设计思路: (1)在数据段中定义两个多字节变量,低字节单元存放低位,高字节单元存放高位; (2)字节的个数N采用EQU赋值伪指令计算获得; (3)多字节相加用带进位加指令ADC; 示例6-6 编程序实现两个多字节数相加运算。Z=X+Y 程序如下: ;program 6-6.asm 两个多字节数相加运算 data segment x db 34h,56h,22h,33h,44h,11h,88h,54h y db 31h,52h,64h,83h,47h,75h,99h,34h n equ $-y ;n,字节个数 z db n dup(?) data ends code segment assume cs:code,ds:data start: mov ax,data mov ds,ax mov cx,n mov bx,0 clc ;将进位标志CF清0 let1: mov al,x[bx] ;从低位开始 adc al,y[bx] mov z[bx],al inc bx loop let1 mov ah,4ch int 21h code ends end start 运行结果: 可以看出,从0号~7号前8个字节单元是X,8号~F号8个单元是Y,10H号~17H号单元中为相加的结果Z。 6.6 实例六 循环之循环 由于循环指令和转移指令都会改变程序的走向,如果程序有编写思路错误,则不容易找到出错原因。最简便的方法是直接用DEBUG工具和记事本打开源程序,边调试边修改。 6.6.1 循环的执行 (1)把程序调入DEBUG,用U命令反汇编,显示出机器指令和对应的汇编指令 (2)用G命令先执行到断点处,再用D DS:0命令查看数据段情况 (3)再用单步调试T命令单步执行,并观察结果 (4)打开两个窗口 (5)执行LOOP指令 (6)查看结果 第六章 循环程序设计 设问: 1.怎样用分支结构构成循环? 2.循环指令有哪些? 3.串处理操作是循环执行的吗? 4. 多重循环有什么特点? 5.
您可能关注的文档
最近下载
- 2022年北京市十二中初三(上)期中数学试卷及答案.pdf VIP
- 鲁教版初中九年级化学各章节知识点归纳复习提纲.doc
- 海鲜市场项目可行性研究幻灯片.pptx VIP
- 微电网能量管理:技术、策略与发展路径探究.docx VIP
- 某污水处理工艺设备安装施工方案.docx VIP
- 理智与情感:爱情的心理文化之旅 智慧树网课章节测试答案.docx VIP
- 03.1 20CS03-1 一体化预制泵站选用与安装(一).docx VIP
- 2025年公司组织架构图及各部门职能要求模板参考(架构图可编辑).pdf VIP
- 级配碎石施工技术课件.ppt VIP
- 神话传说故事与中国文化 智慧树 知到答案.docx VIP
文档评论(0)