资源描述:
《汇编语言程序设计 第8章 8086 8088分支程序设计课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第8章8086/8088分支程序设计8.1分支程序的结构形式8.2分支结构程序设计第8章8086/8088分支程序设计8.1分支程序的结构形式分支程序结构是根据条件转向不同程序分支的结果,有3种形式:单分支、双分支结构和多分支结构。8.1分支程序的结构形式分支程序根据条件是真或假决定执行与否判断的条件是各种指令,如CMP、TEST等执行后形成的状态标志8.2分支结构程序设计分支程序设计首先要在分析实际问题的基础上确定若干个程序分支,然后在此基础上:选用条件转移指令测试法分支选用间接寻址无条件转移跳跃表法分支分支结构是有若干个条件,每一个条件对应一个基本操作。分支程序就是判断产生的
2、条件,哪个条件成立,就执行哪个条件对应操作的程序段。也就是说,从若干分支中选择一个分支执行。8.2.1测试法分支程序设计例8.1已知在内存中有一个字节单元NUM,存有带符号数据,要求计算出它的绝对值后,放入RESULT单元中。8.2分支结构程序设计8.2.1测试法分支程序设计程序清单:DATASEGMENTXDB-25RESULTDB?DATAENDSCODESEGMENTASSUMEDS:DATA,CS:CODESTART:MOVAX,DATAMOVDS,AX;初始化MOVAL,X;X取到AL中TESTAL,80H;测试AL正负JZNEXT;为正,转NEXTNEGAL;否则AL求补
3、NEXT:MOVRESULT,AL;送结果MOVAH,4CHINT21H;返回DOSCODEENDSENDSTART;汇编结束调试8.2分支结构程序设计8.2.1测试法分支程序设计例8.2试编一程序,求三个带符号字数据中的最大值,并将最大值存入MAX字单元中。设三个带符号数分别在三个字变量X、Y、Z中存储。8.2分支结构程序设计8.2.1测试法分支程序设计DATASEGMENTXDW-0ABHYDW205ZDW200MAXDW?DATAENDSCODESEGMENTASSUMEDS:DATA,CS:CODESTART:MOVAX,DATAMOVDS,AXMOVAX,XCMPAX,YJ
4、GEL1MOVAX,YL1:CMPAX,ZJGEEXITMOVAX,ZEXIT:MOVMAX,AXMOVAH,4CHINT21HCODEENDSENDSTART调试例:顺序查找在数据段中,有一个按从小到大顺序排列的无符号数字数组list。给定一个无符号数X,要求在数组中查找X,如果找到,将元素下标记入pos;如未找到,则显示“notfound”datasegmentlistdw12h,22h,11h,33h,44h,35h,56h,42hlendw($-list)/2Xdw35hposdw?msgdb'notfound',0dh,0ah,'$'dataendscodesegmenta
5、ssumecs:code,ds:datastart:movbx,datamovds,bxmovcx,lenleasi,listmovax,xagain:cmpax,[si]jefoundincsiincsiloopagainnotfound:leadx,msgmovah,9int21hjmpexitfound:shrsi,1movpos,siexit:movah,4chint21hcodeendsendstart例:折半查找算法.在数据段中,有一个按从小到大顺序排列的无符号数字数组ARRAY。给定一个无符号数x,要求在数组中查找x,如果找到,则使CF=0,并在SI中给出该元素在数组中
6、的偏移地址;如未找到,则使CF=1。8.2分支结构程序设计在一个长度为n的有序数组r中,查找元素k的折半查找算法可描述如下:(1)初始化被查找数组的首尾下标,low1,highn;(2)若low>high,则查找失败,置CF=1,退出程序。否则,计算中点mid[(low+high)/2];(3)k与中点元素r[mid]比较。若k=r[mid],则查找成功,程序结束;若kr[mid],则转(5);(4)低半部分查找,highmid-1,返回(2),继续查找;(5)高半部分查找,lowmid+1,返回(2),继续查找。8.2分支结构程序设计8.
7、2.3举例datasegmentlistdw11h,22h,33h,44h,55h,66h,77h,88h,99hlendw($-list)/2Xdw66hposdw?low_indexdw?high_indexdw?msgdb'notfound',0dh,0ah,'$'dataendscodesegmentassumecs:code,ds:datastart:movbx,datamovds,bx8.2分支结构程序设计8.2.3举例movlow_index