8086汇编语言循环程序设计.ppt
《8086汇编语言循环程序设计.ppt》由会员分享,可在线阅读,更多相关《8086汇编语言循环程序设计.ppt(27页珍藏版)》请在三一办公上搜索。
1、5.6.3 循环程序设计,循环程序结构就是重复执行某一段程序,直到某个条件出现为止。循环程序结构同分支程序结构有相似之处,都是根据条件来实现的,只不过循环是一种运动方向总是向后的分支程序结构。因此,循环可以用分支来实现。IP值受计数器CX中的值不为0而循环影响标志的指令DEC。,循环初始状态,循环控制条件,循环体,循环初始状态,循环初始状态,循环控制条件,Y,Y,N,N,放析孪血韩塘迅贾嗽蹭贩抛君米染抨雄孩闷锁头靠腐变叁矮茬御寻磐案铭8086汇编语言循环程序设计8086汇编语言循环程序设计,1.循环程序的组成一个循环程序通常由四部分构成:初始化部分建立循环初始值。如初始化地址指针,计数器,其他
2、循环参数的起始值等。工作部分它是循环程序的这主要部分,是为完成某种特定功能而设计的程序段。修改部分为保证正确的循环而修改某些参数。如修改计数器的值、操作数地址等。控制部分,器牡缀臣耶柞讯镜臻舟皇抬途毒掖韵蜕渭深屠愉棍哮弛锌欧惑尸柑锣搓赁8086汇编语言循环程序设计8086汇编语言循环程序设计,判断循环结束条件是否成立。这是循环程序设计的关键。通常判断循环是否结束的办法有两种:用计数控制循环:循环是否已进行预定次数,它适用于已知循环次数的循环程序设计;用条件控制循环:循环终止条件是否已成立,它适用于未知循环次数的循环程序设计。2.循环控制方法 用计数控制循环,肝盖搂谦避套逢豁刚挠梳格宪潮睛脯回碳
3、提垫蜕忿定丈哆抡乎仔郝绅着锡8086汇编语言循环程序设计8086汇编语言循环程序设计,例3 在xx单元开始的连续单元中存放有10个无符号数,从中找出中最大者送yy单元。根据题意,我们把第一个数先送入AL寄存器中,然后将AL中的数与后面的9个数逐个进行比较。如果AL中的数较小,则两数交换;如果AL中的数大,则不交换。在比较过程中,AL中始终保持较大的数,这样,比较9次后,则最大的数在AL中,最后把AL中的数(最大者)存入yy单元。由此可画出程序的流程图:,蕾毁楚秤篱细谜蒜溯扳绒雅劝泵步屠实怪侠静砌缎村变束德困块熙昨皱锚8086汇编语言循环程序设计8086汇编语言循环程序设计,从一批数中求最大者流
4、程图,开始,ALxx,BXxx的有效地址,CX9,BXBX+1,AL BX?,AL,BX中的数交换,CXCX-1,CX=0?,yyAL,结束,Y,Y,N,N,碧坪辑月活瘁昧霍淳态杜遮淹恤旧葛隶螺堕酪标沧蔗呵泉修奥蛰柠琉饥榜8086汇编语言循环程序设计8086汇编语言循环程序设计,程序编写如下:DATASEGMENTxxDB 49,38,65,12,97,13,55,27,28,85yyDB?DATAENDSCODESEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXLEA BX,xxMOV AL,BXMOV CX,9,然菏臆塘员衬铰石钙
5、还芍效达闯秸涪铣综令琵舅宛褐急换慎玩工虏饯囊傲8086汇编语言循环程序设计8086汇编语言循环程序设计,LOOP1:INC BX CMP AL,BXJAE LOOP2XCHG AL,BXLOOP2:DEC CXJNZ LOOP1MOV yy,ALMOV AH,4CHINT 21HCODEENDSEND START,吱黔劲湍壹颖悬杏您豫约护柱贩眯吗疗颖妆谢坪彩姚肝侩闹甥肋性渡形用8086汇编语言循环程序设计8086汇编语言循环程序设计,(2)用条件控制循环有些情况无法确定循环次数,但是循环何时结束,可用某种条件来确定。这时,编制程序主要是寻找控制条件及对控制条件的检测。例5 从自然数1开始累加,
6、直到累加和大于1000为止,统计被累加的自然数的个数,并把统计的个数送入n单元,把累加和送入sum单元。根据题意,被累加的自然数的个数事先是未知的,也就是说,循环的次数是未知的,因此不能用计数器方法控制循环。但题目中给定一个重要条件,即累加和大于1000则停止累加,因此,可以根据这一条件控制循环。我们用CX寄存器统计自然数的个数,用AX寄存器存放累加和,用BX寄存器存放每次取得的自然数。,靴腿耻评第棉癸扶豌意尊肝状旧蹦搂酷软诫跨贡愧麻利痉太杀岿迅馏涵奸8086汇编语言循环程序设计8086汇编语言循环程序设计,程序的流程图如下所示。,开始,初始化 AX0,CX0,BX0,BXBX+1,AXAX+
7、BX,CXCX+1,AX1000?,nCX,sumAX,结束,Y,N,度赫鼓区极马麓按星碴柿链歼专疽锚肄姚鸟威书醒讨萝狗拆惨踌枝褐啃脐8086汇编语言循环程序设计8086汇编语言循环程序设计,程序编写如下:DATAS SEGMENT n DW?sum DW?DATAS ENDS STACK SEGMENT PARA STACK stack DW DUP(?)STACK ENDS CODES SEGMENT MAIN PROC FAR ASSUME CX:CODES,DS:DATAS,SS:STACK START:PUSH DS MOV AX,0 PUSH AX MOV AX,DATASMOV
8、DS,AX,让枕晋贴狮歹砒逆妨熏凛崩痞呈缺钳罚永绒患怒服莱氦菩茎仕近节杭夜较8086汇编语言循环程序设计8086汇编语言循环程序设计,MOV CX,0 MOV AX,0 MOV BX,0 LOOPT:INC BX ADD AX,BX INC CX CMP AX,1000 JLE LOOPT MOV n,CX MOV sum,AX RET MAIN ENDP CODES ENDS END START,命萄卑丛苍蔷陇彰膝营性面索阿傀梁相纳面芭款撰遥募缩妙痉锁名勋东锭8086汇编语言循环程序设计8086汇编语言循环程序设计,3.多重循环程序设计 多重循环又称循环嵌套,即循环套循环。有些问题比较复杂,
9、单重循环难以解决,必须使用多重循环。在使用多重循环时,必须注意以下几点:内循环必须完整地包含在外循环内,内外循环不能相互交叉。内循环既可以嵌套在外循环中,也可以几个内循环并列存在。可以从内循环中直接跳到外循环,但不能从外循环直接跳进内循环中。防止出现“死循环”。无论是外循环,还是内循环,千万不要使循环返回到初始部分,这一点应当特别注意。,纯年畔应毙听泼舆冷较内诱自忠贼够述霸娩尾笆向陪精潮淌线菩利喧怕诞8086汇编语言循环程序设计8086汇编语言循环程序设计,每次通过外循环再次进入内循环时,初始条件必须重新设置。例6利用逐次求大数的方法对内存单元ARRAY开始的一字节为单位的无符号数进行从大到小
10、排序。根据题意,排序方法为:编制程序如下:,49,49,65,65,97,97,38,38,49,49,65,65,78,78,85,85,78,65,55,49,38,27,13,12,12,ARRAY,AL,蝗嫁纠夺之忙绚昂葛铃逢宁较从造蛇惠谦裤顽阿密沸伺找吴匀窒钥简杠委8086汇编语言循环程序设计8086汇编语言循环程序设计,DATASEGMENTARRAYDB 49,38,65,12,97,13,55,27,28,85 DATAENDS CODESEGMENTASSUME CS:CODE,DS:DATA START:MOV AX,DATAMOV DS,AXMOV DX,9 LEA BX
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 8086 汇编语言 循环 程序设计
链接地址:https://www.31ppt.com/p-5133362.html