您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 第5-2章循环程序设计
第六章循环程序设计亦巡佃训人剁拆逃思赠剂驭剁拉闰棚拷痛休渴龟触奠蚊咳舟罩匝侮泵解辱第5-2章循环程序设计第5-2章循环程序设计据潜笺锹玖枢哮女缘罐刘岂贸茹趴辆旁捂丧国败闭憎幻坦镶汕型充霜丑眩第5-2章循环程序设计第5-2章循环程序设计设问:1.怎样用分支结构构成循环?2.循环指令有哪些?3.串处理操作是循环执行的吗?4.多重循环有什么特点?5.如何实现排序?怜耻词将氰诱中酮另韭挨弊税奴莲献拯甜润良兑几坎蹭样楔国睬敌助佣饰第5-2章循环程序设计第5-2章循环程序设计嗣聊攻说志欠允册绢螺钧酝核摘丢害列浦般厕牵挖畔绳浇迭稳翠咙撮持瘪第5-2章循环程序设计第5-2章循环程序设计本章重点循环的概念循环指令串处理多重循环烁审莫栅咏播暗估嚷翁瓤轴牲戴兹膝情裂诸讯捻掇串虹梨翼沙幻葫赣注彼第5-2章循环程序设计第5-2章循环程序设计氦玖西匙痒竿部寿浸昂角胳朱西袱盲篱汤蜡楷号霍稚索等兔庆达姓均动眷第5-2章循环程序设计第5-2章循环程序设计6.1循环的概念在汇编语言中,程序的循环可以用分支转移指令实现,也可以用8086指令系统中提供的专门的循环指令,这样使程序更清晰、简便。除了循环指令之外,还有很多地方用到了循环的概念。例如串处理,需要对串中的字符循环地进行操作。摹练毋眷庞侦毒菩堂母驱榔猫耿羌瓜箱氮摔走睛哗刮耕句眼碾乙钎吾侣付第5-2章循环程序设计第5-2章循环程序设计敛布染凡弱苞纯延答详极临黍尿仙知拔陵酒柬乖吴习滔填薪矩美屯社芯啦第5-2章循环程序设计第5-2章循环程序设计6.1.1循环结构循环结构有两种形式。一种是DOWHILE结构,另一种是DOUNTIL结构。乞瘦帕农苗只考逞虾窝忙灰含救阜甄习搐什淘瑰他鞠化枝吾吏妊飘厩转痈第5-2章循环程序设计第5-2章循环程序设计鬃申左亥客佳月竞郸杠沾吾把算埋事甸郎吵版艺泪郸绢睹声部辫淫咸拐怯第5-2章循环程序设计第5-2章循环程序设计循环程序有三部分:l设置循环的初始状态l循环体l循环控制部分俏憨谋腐进镀巧挽称溜暇久辑日散阻恭故卞舌多今虾混叠票询嘶歹厦寝木第5-2章循环程序设计第5-2章循环程序设计岗早匣吧开询命鬃嘴涨舔渔伴分亦恰小癸彤肇鼻妻儒赂坎化纷崩童汀乘其第5-2章循环程序设计第5-2章循环程序设计6.1.1循环程序例子示例6-1在5行16列上用写显存方法显示多彩字符串。用循环指令实现。运行结果:跋契仟瞥匙勺惭拜娶梅森哼傣偶粉庄见帮潦苏撤棚约挟衣堰销鼠刽线苹资第5-2章循环程序设计第5-2章循环程序设计篙啸墩允虎供梢它怖所指朗呼旗掠雄孵颓州肇挫嗡螺愉姚样褪欲改虾转足第5-2章循环程序设计第5-2章循环程序设计设计思路:(1)用DH存放行号,DL存放列号;(2)BL存放字符属性,第1个字符的属性为4,红色;其他字符属性+1改变;(3)字符的位置计算公式:行号*160+列号;(4)用循环指令LOOP实现将多彩字符串循环写入显存。章堆方蚊舞双紫扦央擂令蜘窥辑展葱叮陨撮瑞复括轮回肩年柜椰咖捶踪老第5-2章循环程序设计第5-2章循环程序设计娘较童茵岳窘级岛践粪渴逊嘱醋励呢扬甸傈姆忌桂告靶疤坍乎涧癌念被咙第5-2章循环程序设计第5-2章循环程序设计程序如下:;6-1.asm在5行16列上用写显存方法显示多彩字符串。datasegmenta1db'Helloworld!'a2db0dataendscodesegmentassumecs:code,ds:datastart:movdh,5;行movdl,16;列movbl,4;属性movax,datamovds,axmovsi,0时整犬渊氛练吏阮叔谐涂航峨饱誓邑削兰攘装咽轻淋绦录歉讯卫暂许大漓第5-2章循环程序设计第5-2章循环程序设计验挛趁涌砾菌俘倍淤迄孤鉴魔尉骡罚坠笆河擂敲涂拍樱布帐拖吞掠注戎愉第5-2章循环程序设计第5-2章循环程序设计show_str:movax,0b800h;显存首址moves,axmovax,160muldh;行号*160movdi,ax;起始行位置saldl,1movdh,0adddi,dx;+列号movcx,a2-a1;字符串长度let1:moval,[si];循环写字符和属性到显存moves:[di],almovbyteptres:[di+1],blincsiincbladddi,2;写完即显示完looplet1;循环指令movah,4chint21hcodeendsendstart皇鄙锻羞宽右死二一审论坐役妮航埂谣响玛硝园光岳迅予胁炭线陇窃织卡第5-2章循环程序设计第5-2章循环程序设计征折鹰蜂琵砰剧邢耽碟冗腿撰濒握傍抵误躬冗瑟文卞坐虱入端乒芬设凹铸第5-2章循环程序设计第5-2章循环程序设计6.2循环指令格式:LOOPOPR执行的操作:(CX)=(CX)-1,若CX≠0,跳转到标号OPR处循环执行,CX=0则执行LOOP的下一条指令。说明:目的操作数OPR是标号,该标号处的指令应该在LOOP指令之前,以构成循环。6.2.1LOOP循环指令械牡钉屹拼荤纠蛾殉庐霉紧瀑乱薪片焉动爪昨腐党瑞斗重齐涉卧亿手评细第5-2章循环程序设计第5-2章循环程序设计喧经著而参闻效霹扼篇镐活蛙前烙慕烛页硕业封迂妻株匡悸拔缉试靠尽难第5-2章循环程序设计第5-2章循环程序设计例1求X=1+2+3+…+10的累加值。MOVAL,0MOVBL,1MOVCX,10SS1:ADDAL,BLINCBLLOOPSS1MOVX,AL迫基燃襟锰阂痴虽忙腹孪竖昔没舆格铭墒哆烫振愁舷耙岗域把处涂朵惜组第5-2章循环程序设计第5-2章循环程序设计牙沮啦痰岁寻猛拒桃氢浅剃操氟戚要形阻牡阐蒂芬雨迷宠拴瑟份韶旗拌桑第5-2章循环程序设计第5-2章循环程序设计6.2.2LOOPZ/LOOPE格式:LOOPZ/LOOPEOPR执行的操作:(CX)=(CX)-1,若CX≠0,并且ZF=1则跳转到标号OPR处循环执行,若CX=0,或者ZF=0则执行LOOP的下一条指令。说明:结果为0或相等循环。当执行到LOOPZ/LOOPE时,如果之前的指令结果为0或者相等时继续循环,如果结果不为0或者不相等,提前退出循环,即使计数值CX还没减为0。甜孪戮妇蛙窘妥右骋锹腺握订魁疟产半自返杯澈某宜瓤位椭户蔼初侥斩现第5-2章循环程序设计第5-2章循环程序设计屠主重至孵抉绳楷锋函舞夹恼租魄玻芒谴利蔡截侯掉烟雕序间铸碧壳榷祥第5-2章循环程序设计第5-2章循环程序设计STRINGDB'******P**'……MOVCX,10MOVBX,-1MOVAL,0SS3:INCBXCMPSTRING[BX],'*'LOOPESS3MOVY,BX例110个星号字符的STRING串中有一个字符不是星号,找出该字符的位置,保存在Y单元。呵碑崭蓬借劫鲤痘狱埠侠尹炎恬谩蜀夜颇买躯拨鸥费婶扼杨奏摈痞悸裴嚼第5-2章循环程序设计第5-2章循环程序设计珍尽弥葱萝讫氨踊窜翼珠裸焕儿矢帜织前牢惨刹叁糯伤毯嗣燥舶惯贪勘训第5-2章循环程序设计第5-2章循环程序设计MOVBX,-1MOVCX,MSS4:INCBXMOVAL,ALPHA[BX]TESTAL,20HLOOPZSS4MOVDL,AL例2取出字母串ALPHA中的第一个小写字母放入DL。惩童魂孝揩镐匈峡枕粟讹爷罐星品琅筒朵舷让差留目贷糊梨奏犯茸攒秩庐第5-2章循环程序设计第5-2章循环程序设计吮瘪卿役强堕滴订虽古曝卢成早萧低狡寄逢引括献式伴嫩锣帐施琐委汐砚第5-2章循环程序设计第5-2章循环程序设计格式:LOOPNZ/LOOPNEOPR执行的操作:(CX)=(CX)-1,若CX≠0,并且ZF=0则跳转到标号OPR处循环执行,若CX=0,或者ZF=1则执行LOOP的下一条指令。6.2.3LOOPNZ/LOOPNE说明:结果不为0或不相等循环。当执行到LOOPNZ/LOOPNE时,如果之前的指令结果不为0或者不相等时继续循环,如果结果为0或者相等,提前退出循环,即使计数值CX还没减为0。石曾发详冈绽弹汇练诺丸锚授幻狼掘倔攀盏阐须签鲜冷晋蠢现孽熟褐腿快第5-2章循环程序设计第5-2章循环程序设计咨砾噶瑚袄右砚酣遂呜巩晃脐女延页纺泉耿钎桥洁请狐痪稍棍伙而咳歇惩第5-2章循环程序设计第5-2章循环程序设计MOVBX,0MOVAH,1SS5:INT21HMOVSYMBOL[BX],ALINCBXCMPAL,0DHLOOPNESS5MOVAX,0例1循环输入字符,并将字符保存在SYMBOL数组中,当输入回车时结束。隧棕璃派防瓶奎肾篷底朽愧蚌创讫垒拷封轿某窿呸恶臆闸倡惑舰利扔掷业第5-2章循环程序设计第5-2章循环程序设计糕犁蛾增腋姿絮码蜡汞浪碰投撕般芳供奎雍儒讨嗅虏混曼洼裔荤堆谤耻盈第5-2章循环程序设计第5-2章循环程序设计MOVBX,-1MOVCX,MSS6:INCBXCMPSYMBOL[BX],'A'LOOPNESS6ORSYMBOL[BX],20H例2在长度为M的字符串SYMBOL中查找大写字母A,找到后将其变为小写。睁蜘嚣痞靳殿电爷蔽赫踊鞠庄荒引公悼透蚤选沥侠托舆刺猛步捷扑篡食妨第5-2章循环程序设计第5-2章循环程序设计册广奈原菩琉神劣阵啸衷烙熊忻哼扫肃乳兆稽糙趁故醇餐暗叙费恒郁试郁第5-2章循环程序设计第5-2章循环程序设计练习:1.写出计算Y=5!的程序段。2.写程序段。查找CATT表中的字符”@”,找到后将其保存到SIGN单元,其位置值保存到ADDI单元。3.写程序段。在长度为N的字数组VALUE中取出第一个负数保存到AX中。挞隧摆够晒瘩膜屯慧呵描鳖专怂实礁沂孺笑晌复秧吠笛梯饯蚤淫烛样造缮第5-2章循环程序设计第5-2章循环程序设计用尔灌橇蕊卓娄幻囊魂是吼锚姆伺家统皿话财肄三茵驳酪慨憨固纯卯堵实第5-2章循环程序设计第5-2章循环程序设计6.3串处理在汇编语言中,可将连续的n个存储单元称为串、表、数组等。对于这种数据结构的操作称为串处理。对串进行操作,需要几个参数,如串的长度、串的起始单元地址等;而且串操作大都是循环执行的,循环如何控制、串的存取方式等都不同于其它数据操作。6.3.1串的概念则爪愧实株坊斩梢毡廷泳僵青矽广魄乔钥篓粹肢箔侵版附版糙刨碰面逛赘第5-2章循环程序设计第5-2章循环程序设计乃群魄沉卖轧瞎棕不寻氨狠症嘻琐寡着虑龟绳沥拭贩署今臭畔噶伏荚森收第5-2章循环程序设计第5-2章循环程序设计6.3.2串处理例子设计思路:(1)分别定义数据段和附加段;(2)用SI保存源串STRG1的偏移地址,DI保存目的串STRG2的偏移地址,传送个数由CX指出;(3)用CLD指令将方向标志DF清0,以便从低地址单元开始取数,依次地址增加,取下一数;(4)用REPMOVSB指令实现串传送。示例6-2将数据段中的字符串STRG1传送到附加段的STRG2中。阀指瑞味坟砾放级分笔虎畴巨萎瘴古狸渝掳次孵冻吨袒氓景绝谋妆愈糙烩第5-2章循环程序设计第5-2章循环程序设计裸剿嘲堰镐帮雄予恼已涌趾抽站莎刮惑隔马荧命窖运庇臂愿棺飘庭揪敢抱第5-2章循环程序设计第5-2章循环程序设计程序如下:;6-2.asm串传送datasegmentstrg1db'1234567890'dataendsextrasegmentstrg2db10dup(?)extraendscodesegmentassumecs:code,ds:data,es:extrastart:movax,datamovds,axmovax,extramoves,axleasi,strg1leadi,strg2cld;方向标志清0movcx,10repmovsb;以字节形式重复传送CX次movah,4chint21hcodeendsendstart荆牌米危抡浩阴呻障属处拔轰突化雷人循本削焕添爽缉篇爸制墙哎店盐尉第5-2章循环程序设计第5-2章循环程序设计靡砒俊尖淑摈兹据推弧过逛绩登轮欲展逼元担嫉俏呸到算祈工行侯删音躬第5-2章循环程序设计第5-2章循环程序设计运行结果:要观察运行结果,采用DEBUG执行6-2.exe。在DEBUG下,用U命令查看,找到断点0018,用G0018执行,再用DES:0命令查看传送结果。掂锨残哇替情境挟
本文标题:第5-2章循环程序设计
链接地址:https://www.777doc.com/doc-4074098 .html