第5章 汇编语言分支与循环程序设计

上传人:无*** 文档编号:244574448 上传时间:2024-10-05 格式:PPT 页数:61 大小:561.50KB
返回 下载 相关 举报
第5章 汇编语言分支与循环程序设计_第1页
第1页 / 共61页
第5章 汇编语言分支与循环程序设计_第2页
第2页 / 共61页
第5章 汇编语言分支与循环程序设计_第3页
第3页 / 共61页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第一章 基础知识,第5章分支与循环程序设计,1)分析题意,确定算法。这一步是能否编制出高质量程序的关键,因此不应该一拿到题目就急于写程序,而是应该仔细地分析和理解题意,找出合理的算法及适当的数据结构。,2)根据算法画出程序框图。这一点对初学者特别重要,这样做可以减少出错的可能性。画框图时可以从粗到细把算法逐步地具体化。,3)根据框图编写程序。,4)上机调试程序。任何程序必须经过调试才能检查出你的设计思想是否正确以及你的程序是否符合你的设汁思想。在调试程序的过程中应该善于利用机器提供的调试工具(如DEBUG)来进行工作,你会发现它会给你提供很大的帮助。,赢沮咳刀裳撬骑架账械鸣谆命看腥乍匹记兑鼻哮泣搀形详米低贴锭登摈恋第5章 汇编语言分支与循环程序设计第5章 汇编语言分支与循环程序设计,分析问题,寻找解决问题的思路、方法、算法,描述算法,编写程序实现算法,设计测试数据和预期计算结果,上机调试程序,程序设计的解题基本步骤如下:,顺序、分支、循环程序和子程序的设计是汇编语言程序设计的基本内容。,在此基础上还要掌握汇编语言程序设计的基本方法和技巧 ,包括递归子程序设计、COM和EXE格式程序的结构和特点、多模块程序设计方法等。,一、汇编语言程序设计的基本方法,概述,退萧诀吊建共脚树筹镜女镀丈骡爪缘开档者坡扰烘寡恒预坊靴回慌主律院第5章 汇编语言分支与循环程序设计第5章 汇编语言分支与循环程序设计,概述,二、程序的基本结构,1、顺序结构程序,2、分支结构程序,3、循环(重复)结构程序,顺序结构 分支结构 循环(重复)结构,丁蟹核灼弧犬仪肚惰矽臆坷杏照誊颖摸贫蹋镣查钻廉腆赣吾庶涝韧铃娜梯第5章 汇编语言分支与循环程序设计第5章 汇编语言分支与循环程序设计,第一节 顺序结构程序设计,顺序结构程序完全按指令书写的前后顺序执行每一条指令,是最基本、最常见的程序结构,特点,顺序性、结构简单,只适应于简单问题的处理,例1 计算,例2 移位,此鼠养水冀萤烧赃啸桨拥男牵雀卿蛰猜听灭奔掩韭尘驭崎酝痴昔寨活妓刨第5章 汇编语言分支与循环程序设计第5章 汇编语言分支与循环程序设计,例:X+Y+Z W,stack segment para stack,dw 64h dup(?),stack ends,data1 segment,Xdw 5,Ydw 6,Zdw 7,Wdw ?,data1 ends,code segment,assume cs:code,ss:stack,ds:data1,start:mov ax,data1,mov ds,ax,mov ax,X,add ax,Y,adc ax,Z,mov W,ax,mov ah,4ch,int 21h,code ends,end start,痉焙痒符挨己询阑丛祟型判秋笨拼制查嘴惠馆曲楼瓜遍汀剃武萧擞塔羽快第5章 汇编语言分支与循环程序设计第5章 汇编语言分支与循环程序设计,例:64位数据移位,data segment,vardb 21h,43h,65h,87h,78h,56h,34h,12h,data ends,codesegment,assume cs:code,ds:data,start:mov ax,data,mov ds,ax,mov al, var6,mov var7,al,mov al, var5,mov var6,al,mov al, var4,mov var5,al,mov al, var3,mov var4,al,图示,谗法吨巴激桂跋憨虾钦牟闪肢剁侄捂戚捉畸劝胺洛鸣页贺纲吼剪火触拦抹第5章 汇编语言分支与循环程序设计第5章 汇编语言分支与循环程序设计,mov al, var2,mov var3,al,mov al, var1,mov var2,al,mov al, var0,mov var1,al,mov byte ptr var0,0,mov ah,4ch,int 21h,codeends,end start,12 34 56 78 87 65 43 21h,34 56 78 87 65 43 21 00h,移位后,图示,例:64位数据移位,合荒涅项嗜坪亡遥蝴媚鞍娩僵彼艺午棠漫晌死夏诊护赌专纤袭勃白比恿知第5章 汇编语言分支与循环程序设计第5章 汇编语言分支与循环程序设计,64位数据左移8位,12,34,56,78,87,65,43,21,00,var0,var1,var2,var3,var4,var5,var6,var7,熟帕硫块划禽皋澜者玛谓肿悸拽凉潦礼段渺斋蹋盾魄恿跺梅映铰邀暴泳迹第5章 汇编语言分支与循环程序设计第5章 汇编语言分支与循环程序设计,程序结束的方法,程序执行完毕,正常结束要返回DOS,有两种方法,(1)使用PSP中的“INT 20H”指令,实现用户程序结束,返回DOS,方法:将用户程序设置成一个远过程,程序开始时,执行如下指令,PUSH DS,MOV AX,0,PUSH AX,用户程序结束时,用RET指令,汰姑鸣协吐冲道蚌萝凿纬频捻室橡古坍匀芬业粤难蹿感宅雀抠貉脾燕患爵第5章 汇编语言分支与循环程序设计第5章 汇编语言分支与循环程序设计,程序结束的方法,(2)使用DOS功能调用的“INT 21H”指令,实现用户程序结束,返回DOS,方法:在程序结束前,使用如下指令,MOV AH,4CH,INT 21H,注意:一般情况下,使用第2种方法结束用户程序。,滇剥蕾往吴腥衰傣钳寝庚转忧野瞬遮棕可堑沉酷裸项蜒赠抄蹄十琐础驼贺第5章 汇编语言分支与循环程序设计第5章 汇编语言分支与循环程序设计,第二节:循环结构,结束,初始化,循环的初始状态,循环体,循环的工作部分,及修改部分,计数控制循环,条件控制循环,修改部分,控制条件,Y,N,纬璃枢寄捕河幕鸡屏哄挫踊指袜穿蕊吏兆胯曳摄参卢汕钎疗家铭及辞蛰狐第5章 汇编语言分支与循环程序设计第5章 汇编语言分支与循环程序设计,循环程序设计,根据条件重复执行一段指令就构成了循环程序结构 。,MOV AX,0 ;累加求和寄存器清0,MOV BX,OFFSET ARRAY ;数组始址送BX中,MOV CX,50 ;循环控制计数初始化 AGAIN : ADD AX,BX,ADD BX,2 ;数组地址增2,BX指向下一个元素,DEC CX ;循环控制计数减1,JNZ AGAIN ;计数不为0时继续循环,MOV S,AX ;计数为0时循环结束,和存于S中,保证循环正常执行和结束的条件:, 正确地初始化循环控制计数和初始条件, 正确地检测循环条件, 必须保证能达到循环结束条件 (例如在循环体内有修改循环控制值的指令),例:,将ARRAY数组中的50个数求和,并将和存入字变量S中,。,扇篡芥薯芒磁颓扬瓤肠蚀鹏例欢仕积俩窑啊拆扣约扩隔胶馅懦既佣孤率钉第5章 汇编语言分支与循环程序设计第5章 汇编语言分支与循环程序设计,指令系统提供了专门用于循环结构的循环控制指令,更加简便的地实现循环结构。,循环控制指令,循环控制指令的转移范围为:-128+127字节,(2)等于继续循环指令,格式:,LOOPZ/LOOPE 标号,(3)不等于继续循环指令,格式:,LOOPNZ/LOOPNE 标号,LOOP AGAIN,(段内短转移),格式:,LOOP 标号,操作: 如图所示,(,1,),LOOP,指令,(CX),0,?,执行循环体,(CX) (CX),-,1,是,否,退出循环,(CX) 0 且 ZF =1 ?,(CX) 0 且 ZF=0 ?,在前面的求和例子中,可用一条循环指令代替两条指令:,DEC CX,JNZ AGAIN,态蛰齐掩焊耍环陆闻优梳粮紊堕箱盔麦平底皆敛窘募递西千砰荆蒜噎搔言第5章 汇编语言分支与循环程序设计第5章 汇编语言分支与循环程序设计,MOV CX,80,MOV SI,-1,MOV AL,$,AGAIN: INC SI,CMP AL,STRSSI,LOOPNE AGAIN,MOV LEN,SI,循环程序设计方法,控制循环的方法可分为两类:,计数循环用于循环次数已知的情况,条件循环用于循环次数不确定的情况,设: STRS DB string$ ,例,:,求,存放在,STRS,存储区中的,字符串长度。,溢魄拾恫擦胀疆臀谎膀稻裤脑人檀耘卷凌湾仲纹俺氧擞峙熏丙涝抉蝇赔吗第5章 汇编语言分支与循环程序设计第5章 汇编语言分支与循环程序设计,例 统计AX中的二进制数含“1”的总个数,程序段如下:,MOVCX,0,AGAIN: ANDAX,AX;(AX)=0?,JZQUIT;是,退出循环,SALAX,1 ;否,(AX)的最高位移入CF位,JNCNEXT;CF1时,转向NEXT再次循环,INCCX ;CF=1,计数器(CX)(CX) +1,NEXT: JMPAGAIN;再次循环,QUIT :,上述程序为当型循环程序结构:先判断条件,后执行循环。,当型循环与直到型循环:,猎匆听握湃村徊于穴目娟脚眶矿佯拨瞻魏伪腰苫芹裔罕缀禾樊眠稿淀求提第5章 汇编语言分支与循环程序设计第5章 汇编语言分支与循环程序设计,第一章 基础知识,循环程序设计方法,例 在ADDR单元中存放着数Y的地址,试编制一程序把Y中1的个数存入COUNT单元中。,算法:要测出Y中1的个数就应逐位测试,一个比较简单的办法是可根据最高有效位是否为1来记数,然后用移位的方法把各位数逐次移到最高位去。循环的结束可以用计数值为16来控制,但更好的办法是结合上述方法可以用测试数是否为0来作为结束条件,这样可以在很多情况下缩短程序的执行时间。此外考虑到Y本身为0的可能性,应该采用WHILEDO的结构形式。,切匝啮虑榔猎竣官饿粒粤渊侥供寇狂睦驹准煮缉剁北飘岩含闷环琼樊誓伴第5章 汇编语言分支与循环程序设计第5章 汇编语言分支与循环程序设计,第一章 基础知识,程序框图,柏饱赦绅赵田钒帛歇候抗精杯职错给睬褪敌沫郧儿颂踩韦街疮跨各把吞铜第5章 汇编语言分支与循环程序设计第5章 汇编语言分支与循环程序设计,第一章 基础知识,程序:,data_seg segment,Y equ 020FH,number dw Y,addr dw number,count dw ?,data_seg ends,code_seg segment,assume cs:code_seg , ds:data_seg,main proc far,start:,mov ax ,data_seg,mov ds ,ax,mov cx ,0,mov bx ,addr,mov ax ,bx,repeat:,test ax,0ffffh,jz result,jns shift,inc cx,shift:,shl ax ,1,jmp repeat,result:,mov count , cx,mov ax,4c00h,诫伍累熬黔铸橙磷灿扩幂婿剥傅凝渴摔囚思篆阿铸菲熟蒙脸草赦醉紊离汹第5章 汇编语言分支与循环程序设计第5章 汇编语言分支与循环程序设计,第一章 基础知识,int 21h,main endp,code_seg ends,end start,例 在附加段中有一个首地址为LIST和未经排序的字数组,在数组的第一个字中存放着该数组的长度,数组的首地址已存放在DI寄存器中。AX寄存器中存放着一个数。要求编制一程序:在数组中查找该数,如果找到此数则把它从数组中删除。,算法: 这一程序应该首先查找数组中是否有(AX),如果没有则不对数组作任何处理就结束程序。如果找到这一元素则应把数组中位于其前(指地址比该元素高)的元素后移一个字(即向低地址方向移动),并修改数组长度值。如果找到的元素正好位于数组末尾,则不必移动任何元素,只要修改数组长度值就可以。这里第一部分的查找元素可以使用串处理指令,第二部分的删除元素则可使用循环结构,由于查找结束时就可以知道该元素的位置,因此可以作为循环次数已知的情况来设计。,鸵鸡言娱藕餐暑疼饺通挪浚旷责胖投嘎灌迟柱凄孰前隘淡除插舱岛束嗓裹第5章 汇编语言分支与循环程序设计第5章 汇编语言分支与循环程序设计,第一章 基础知识,流程图:,棚壕扦沛陵鸟咆碌溢饲苗锻秽蓬榨佳拎烘鱼篇攘偶复霸兴掺巾藐遂镑你衅第5章 汇编语言分支与循环程序设计第5章 汇编语言分支与循环程序设计,第一章 基础知识,程序:,data_seg segment,LIST dw 10,0,11,22,33,44,55,66,77,88,99,data_seg ends,code_seg segment,assume cs:code_seg , es:data_seg,main proc far,start:,mov ax , data_seg;代码段地址空间分配,mov es , ax,cld;设置DF=0,地址自动递增操作,mov ax ,33 ;设置AX寄存器的数值,lea di , LIST,隆礼姐及焚挟夫憨数拔着奋吠博塑酋女谐习斧呆随傲琼砒阂炭捆验蜀史抡第5章 汇编语言分支与循环程序设计第5章 汇编语言分支与循环程序设计,第一章 基础知识,push di;将LIST的首地址压栈,为将来改变数组元素个数,就可以弹出该,;地址,mov cx , es:di;数组个数放入CX中,add di , 2,repnz scasw;将AX与ES:DI中的元素进行比较,若相等则跳转到DELETE,;结束否则,je delete,pop di,jmp short exit,delete:,jcxz del_last;判断要删除的元素是否为最后的数组元素,是就跳转到,;DEL_LAST执行,del_next:,蚌去拨幌昔惊淌娠痈盆睛反丸劲寐卖喇桐陀挝砷雾志脚碉智虽幅糖技撕扒第5章 汇编语言分支与循环程序设计第5章 汇编语言分支与循环程序设计,第一章 基础知识,mov bx , es:di;数组元素向前移动,mov es:di-2 , bx,add di , 2,loop del_next,del_last:,pop di,dec word ptr es:di;改变数组元素的大小,exit:,mov ax , 4c00h,int 21h,main endp,code_seg ends,end start,镣俗淘陈氓蹿寂股例虞骏枫株纠柑心温课砷速哇蛰茸煽扼鱼棵芭稽萨堕耽第5章 汇编语言分支与循环程序设计第5章 汇编语言分支与循环程序设计,第一章 基础知识,例 试编制一程序;从键盘输入一行字符,要求第一个键入的字符必须是空格符,如不是则退出程序;如是则开始接收留入的字符并顺序存放在首地址为BUFFER的缓冲区中(空格符不存人),直到接收到第二个空格符时退出程序。,算法:这一程序要求接收的字符从空格符开始又以空格符结束,因此程序中必须区分所接收的字符是否是第一个字符,为此设立作为标志的存储单元FLAG,一开始将其置为0,接收第一个字符后可将其置1。,烘寅扮陷蓟蚤丛撑单读签酌烬皋剁咙闽框题记撤阔赂哄佣犀顷怜翁龋女迷第5章 汇编语言分支与循环程序设计第5章 汇编语言分支与循环程序设计,第一章 基础知识,data_seg segment,buffer db 100 dup(?),flag db ?,data_seg ends,code_seg segment,assume cs:code_seg , ds:data_seg,main proc far,start:,mov ax ,data_seg,mov ds ,ax,lea bx ,buffer,mov flag ,0 ;FLAG初始化为0,准备接收第一个字符,next: mov ah ,01,样坏抖仕丸毫蓑炸掏削纸俱枚垂臣淫宛貉抓戚评匡浓迈庞户咀怯浦网雌旧第5章 汇编语言分支与循环程序设计第5章 汇编语言分支与循环程序设计,第一章 基础知识,int 21h ;从键盘输入一个字符,存放在AL寄存器中,test flag ,01h;判断是否为第一个字符,jz follow;不是第一个字符跳转到FOLLOW,cmp al,20h;是第一个字符,判断该字符是否为空格,jnz exit,mov flag ,1,jmp next ;再输入字符,follow:,cmp al ,20h;判断是否为空格,jz exit;是空格就退出,mov bx,al;不是将该字符的ASC码存入缓冲区内,inc bx,jmp next,跃瑞侨脆原杰杂菲蔚驮诅前哄涨驾陌蛀沾论猾鳞抖国桑苛饿暑莲退乞骡竟第5章 汇编语言分支与循环程序设计第5章 汇编语言分支与循环程序设计,第一章 基础知识,exit:,mov ax , 4c00h,int 21h,main endp,code_seg ends,end start,缺戍躯原咱茨嚷站戴包泌卯蓬拢采慑乎去会辽溃抓苔媚墓卧伺稀艘篱悯澄第5章 汇编语言分支与循环程序设计第5章 汇编语言分支与循环程序设计,第一章 基础知识,(3)多重循环,酌翠汪比米攀仁镣僵碾施彬蹿剧恨找昭晨砧邵噶搏蚜扛躇疗考恤椒拳幕额第5章 汇编语言分支与循环程序设计第5章 汇编语言分支与循环程序设计,第一章 基础知识,例 有一个首地址为A的N字数组,请编制程序使该数组中的数按照从大到小的次序排序。,算法 : 我们采用起泡排序算法从第一个数开始依次对相邻两个数进行比较,如次序对则不做任何操作;如次序不对则使这两个数交换位置。下表表示了这种算法的例子,可以看出在做了第一遍的(N一1)次比较后,最小的数已经放到了最后,所以第二遍比较只需要考虑(N-1)个数,即只需要比较(N一2)次,第三遍则只需要做(N一3)次比较总共最多(N1)遍比较就可以完成排序。,桑毛粳抛卖蔷傍伴宫世褂缔瞬走缎殆贩骂押欲礼招绦移革郧阮谦羽辣殿历第5章 汇编语言分支与循环程序设计第5章 汇编语言分支与循环程序设计,第一章 基础知识,loop1:mov dx , cx,mov bx , 0,loop2:mov ax ,abx,cmp ax,abx+2,jge continue,xchg ax,abx+2,mov abx,ax,continue:,add bx ,2,loop loop2,mov cx ,dx,loop loop1,程序:,data_seg segment,num dw 10,a dw 12,14,9,10,3,81,10,4,88,66,data_seg ends,code_seg segment,assume cs:code_seg , ds:data_seg,main proc far,start:,mov ax , data_seg,mov ds , ax,mov cx , num,dec cx,陷搓麓怔光阅擒粘甲每氢寄陕铡意炎窿抬咯闸扎恩佣殴佣抑僵鲸肩但壶秤第5章 汇编语言分支与循环程序设计第5章 汇编语言分支与循环程序设计,第一章 基础知识,mov ax ,4c00h,int 21h,main endp,code_seg ends,end start,依肇则械赏垒牌们燕窜压沽绍污枕忘臆闭圾剑擂则输器哄毁刑腾池只床侯第5章 汇编语言分支与循环程序设计第5章 汇编语言分支与循环程序设计,3 分支程序的结构形式,指令系统具有许多种条件转移指令,这就说明计算机系统具有很强的逻辑判断能力,并且能够根据这种逻辑判断选择执行不同的程序段。也就是说,当条件满足时进行某种处理,当条件不满足时又进行另外一种处理。,分支程序的结构可以有两种形式:双分支结构和多分支结构。,流程图如下所示。,茎犀临燕褂拴蜂陪纱釉曝译拴播保跨契喉迎湍临高疗挛干放装撮贰晾烹傻第5章 汇编语言分支与循环程序设计第5章 汇编语言分支与循环程序设计,(1)双分支结构,儿偶裸行卵袋境郊茸掩瑶文舷甚饲艳帧男冶毕揉仗伯魁石铁症景动柠出啸第5章 汇编语言分支与循环程序设计第5章 汇编语言分支与循环程序设计,(2)双分支结构,仕懊损浪怕装步驾侈褂缩帖闪姐狮楞殷羡担豁秃蕾俺瞅羊胰屎娟庭土匿贤第5章 汇编语言分支与循环程序设计第5章 汇编语言分支与循环程序设计,(3)多分支结构程序设计,栈汲尼魔旧腥锚帐固异庚辟蘑药机肌螟舒吁警倦卜馒惠醇偿引胡广讼星纹第5章 汇编语言分支与循环程序设计第5章 汇编语言分支与循环程序设计,3.2 分支结构程序设计,1,简单的双分支程序设计,【例,6.3,】已知在内存中有一个字节单元,NUM,,存有带符号数据,要求计算出它的绝对值后,放入,RESULT,单元中。,题目分析:根据数学中绝对值的概念知道,一个正数的绝对值是它本身,而一个负数的绝对值是它的相反数;要计算一个数的相反数,需要完成减法运算,即用,0,减去这个数。指令系统中有专门的求相反数的指令,NEG,。,流程图如下:,奠罩链帕淬燎造底投住腋缎抒貌柜晋边摧奏孵顽寨硼鄙篇巫篱朋缮枣堂锤第5章 汇编语言分支与循环程序设计第5章 汇编语言分支与循环程序设计,疚扛诵牵暴韩肌猪甩森宠殴捣子刑纺舍夕玛庭逆瓶娜戚漏草威敦窄此摹钢第5章 汇编语言分支与循环程序设计第5章 汇编语言分支与循环程序设计,程序如下:,DATASEGMENT,X DB -25,RESULT DB ?,DATAENDS,CODESEGMENT,ASSUME DS:DATA,CS:CODE,START:MOVAX,DATA,MOVDS,AX,;初始化,MOVAL,X,;,X,取到,AL,中,芋密铬锦甲嚷复豌寺淬涝绍懦蠢始判凝淋征琳童蒋侩垮壳委匝读柜储息梗第5章 汇编语言分支与循环程序设计第5章 汇编语言分支与循环程序设计,TEST AL,80H,;测试,AL,正负,JZ NEXT,;为正,转,NEXT,NEG AL,;否则,AL,求补,NEXT:MOVRESULT,AL,;送结果,MOV AH,4CH,INT 21H,;返回,DOS,CODEENDS,END START ;汇编结束,鲍讯汐伍栽指肝哄信止呐取穴卡腥襄战春职展伞孤捧寸悄钙颤霓念裤提中第5章 汇编语言分支与循环程序设计第5章 汇编语言分支与循环程序设计,2,多分支程序设计,多分支结构是有若干个条件,每一个条件对应一个基本操作。分支程序就是判断产生的条件,哪个条件成立,就执行哪个条件对应操作的程序段。也就是说,从若干分支中选择一个分支执行。,多分支结构实现的方法有:条件选择法、转移表法和地址表法。,条件选择法,一个条件选择指令可实现两路分支,多个条件选择指令就可以实现多路分支。这种方法适用于分支数较少的情况。,味进峻无菱妊蹈馒州蒙改竖贤苇胃霹卞蔷瞥抠仍置君母咎通芬慌颇掉篙硬第5章 汇编语言分支与循环程序设计第5章 汇编语言分支与循环程序设计,用条件转移指令实现程序分支,【例6.4】,编写计算下面函数值的程序:,1 X,0,Y= 0 X=0,-1 X0,设输入数据为,X,、输出数据,Y,,且皆为字节变量。程序流程图如下图所示。,掂们十捐呼羞澜庆盅尉猛脱链纬蚕葵书膏末堑待芯疼指峡遭又肃整炙堪髓第5章 汇编语言分支与循环程序设计第5章 汇编语言分支与循环程序设计,鸟宗出惑沼秆适蓄剐厘青畅秤驮喘样沪旭煽厄堡瘟颈毕动隔嘻奉熙圃剁坞第5章 汇编语言分支与循环程序设计第5章 汇编语言分支与循环程序设计,程序如下:,DATA SEGMENT,X DB -25,Y DB ?,DATA ENDS,CODE SEGMENT,ASSUME CS:CODE,DS:DATA,START:MOV AX,DATA,MOV DS,AX ;初始化,MOV AL,X ;X取到AL中,坦关生拂接擞早王母奎扎房尹冲乌袒稽瑟稚掖旨糯狠裕掇宾倦诣馋踢姨跺第5章 汇编语言分支与循环程序设计第5章 汇编语言分支与循环程序设计,CMP AL,0 ;Al中内容和0比较,JGE BIG ;大于等于0,转BIG,MOV BL,-1 ;否则为负数,1送BL,JMP EXIT ;转到结束位置,BIG: JE EE ;Al中内容是否为0,为0转EE,MOV BL,1 ;否则为大于0,1送BL,JMP EXIT ;转到结束位置,EE: MOV BL,0 ;0送BL,亚壶篡吱勘败例捕拨偏请晕大饱坛较淀狂魁栽帖牟戏京严软豫丹藐讯酋境第5章 汇编语言分支与循环程序设计第5章 汇编语言分支与循环程序设计,EXIT: MOV Y,BL ;BL中内容送Y单元,MOV AH,4CH,INT 21H ;,程序结束,CODE ENDS,END START ;,汇编结束,蜒秘浅学怠累诲蓑霹反怯签柿沮夺朱蔷竟丸幂视述梢舞雏梯摊燃掌怨讯运第5章 汇编语言分支与循环程序设计第5章 汇编语言分支与循环程序设计,【例,6.5,】试编一程序,求三个带符号字数据中的最大值,并将最大值存入,MAX,字单元中。,设三个带符号数分别在三个字变量,X,、,Y,、,Z,中存储。程序流程图如下图,所示,辟丙臼磋略痞亦庐勤懦准瓷抬悸曳猩却谣秒枯样矾仍梁臻识算面觅航磋缘第5章 汇编语言分支与循环程序设计第5章 汇编语言分支与循环程序设计,同赁星伸隔兢代寻丧括谱亡瞳捧浓魔秉牢搓掠凋办旧稍惟失撅拾恳遭益寒第5章 汇编语言分支与循环程序设计第5章 汇编语言分支与循环程序设计,程序如下:,STACSEGMENT STACK,DB 200 DUP,(,0,),STACKENDS,DATASEGMENT,X DW 00ABH,Y DW 5,Z DW 200,MAXDW,?,DATAENDS,CODESEGMENT,炯爱爬拆求这气平谩词浪坛几醋溢伺闰力牢笆鳖峦愈撬众格阮亡祈屑刮嘴第5章 汇编语言分支与循环程序设计第5章 汇编语言分支与循环程序设计,ASSUME DS,:,DATA,,,SS,:,STACK,,,CS,:,CODE,START,:,MOVAX,,,DATA,MOVDS,,,AX,MOVAX,,,X,CMPAX,,,Y,;,X,Y,?,JGL1,MOVAX,,,Y,;,Y,Z,?,CMPAX,,,Z,JGEXIT,L2,:,MOVAX,,,Z,JMPEXIT,氛斥孟誉邹雷锥济兽裙蓬伍狄泌输冈眼焕阴滞偷银蜡钥乃韶愉寄峡弃昂胶第5章 汇编语言分支与循环程序设计第5章 汇编语言分支与循环程序设计,L1,:,CMPAX,,,Z,;,X,Z,?,JLEL2,EXIT,:,MOVMAX,,,AX,MOVAH,,,4CH,INT21H,CODEENDS,ENDSTART,返回本节,民兔贮蔫爽目诛烬缺扯弛尸荐庞健锰迂林涝居镇澡服利肿筋藩夫汾拨咙拎第5章 汇编语言分支与循环程序设计第5章 汇编语言分支与循环程序设计,转移表法,转移方法实现多分支的设计思想如下:,把转移到各分支程序段的转移指令依次放在一张表中,这张表称为转移表。把离表首单元的偏移量作为条件来判断各分支转移指令在表中的位置。当进行多分支条件判断时,把当前的条件偏移量加上表首地址作为转移地址,转移到表中的相应位置,继续执行无条件转移指令,达到多分支的目的。,搔撩筷僻姓坏迢跃米畦兽浑孔快媒贷炼喘皮瞥盎佰悬逗绥岂类剥陷猪胯切第5章 汇编语言分支与循环程序设计第5章 汇编语言分支与循环程序设计,【例】设某程序有,8,路分支,试根据给定的,N,值(,18,),将程序的执行转移到其中的一路分支。,程序流程如图,下,所示,。,戮衔详嗡懊闻蛇秩阔村透崎脯决茶蟹搜断粪悯转靴攒精试炕神未巍亨琉扛第5章 汇编语言分支与循环程序设计第5章 汇编语言分支与循环程序设计,菩双耐规纱蛙姥沿胃寡疽秋嘻统漓茂特们崭瘸嫁缮喘戏夺毡闰樱择驹亭斤第5章 汇编语言分支与循环程序设计第5章 汇编语言分支与循环程序设计,程序如下:,DATASEGMENT,TABDW P1,,,P2,,,P3,,,P4,,,P5,,,P6,,,P7,,,P8,N DB 5,DATAENDS,STACKSEGMENT,DB 200 DUP,(,0,),STACKENDS,CODESEGMENT,ASSUME DS,:,DATA,,,SS,:,STACK,,,CS,:,CODE,妥灶鄙市丧枫影疼断变壹岂趟抹应录检擞更稿比旁什电垫扛摆质饱醋罩蓉第5章 汇编语言分支与循环程序设计第5章 汇编语言分支与循环程序设计,START,:,MOVAX,,,DATA,MOVDS,,,AX,MOV AL,,,N,DEC AL,ADD AL,,,AL,MOV BL,,,AL,MOV BH,,,0,JMP TABBX,泅卡虏莱痪怂牺费肩债顺讳压陌眼咸轩骤笑机奖肘匝胜屹徊韧云冗勾朔睫第5章 汇编语言分支与循环程序设计第5章 汇编语言分支与循环程序设计,P1,:,JMPEXIT,P2,:,JMPEXIT,P2,:,JMPEXIT,P3,:,亩深鄙谈隆行关暇翘几举牙闭淡些邯丫垛玉浊樱挖势叮银鹊摘槛拷舷蛔撩第5章 汇编语言分支与循环程序设计第5章 汇编语言分支与循环程序设计,JMPEXIT,P8,:,EXIT,:,MOVAH,,,4CH,INT21H,CODEENDS,ENDSTART,上述程序中的无条件转移指令的转移地址采用的是变址寻址。同理,转移地址也可以用寄存器间接寻址或基址加变址寻址,读者可自行考虑。,返回本节,豌索廓铃皿究佣瘦揩呼楼朵肮甲蚕稻锹欲谈乳敏庭妄碑僧床荚葬批园向数第5章 汇编语言分支与循环程序设计第5章 汇编语言分支与循环程序设计,亭鸵俱援南孔棘郑副狰窥挨脸凌绞棕硅笺貉哮耕隧犊壳罪遮枣请贬嘲函笑第5章 汇编语言分支与循环程序设计第5章 汇编语言分支与循环程序设计,蔫居泄毋俊躺翰蝇校咸媚滔费手淋失钝计逐卿锤棍悲篷喧痉苛骗豺炯谴虹第5章 汇编语言分支与循环程序设计第5章 汇编语言分支与循环程序设计,杰狠游尔力椒店拢组挝蝗祟卑将媒傣滋瞧郁挚掀芯拙坠览魂灵瞒账倾单卢第5章 汇编语言分支与循环程序设计第5章 汇编语言分支与循环程序设计,帐恨抚氮焉唆饶袖鼎摊袄麓稗律还风葬菊擦怖烦闸池贾沈浓娇促爪稍茹凶第5章 汇编语言分支与循环程序设计第5章 汇编语言分支与循环程序设计,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!