资源描述:
《汇编语言程序设计 第8章_80868088分支程序设计课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、8086/8088和ARM核汇编语言程序设计第8章8086/8088分支程序设计8.1分支程序的结构形式8.2分支结构程序设计第8章8086/8088分支程序设计8.1分支程序的结构形式分支程序结构是根据条件转向不同程序分支的结果,有3种形式:单分支、双分支结构和多分支结构。8.1分支程序的结构形式8.2分支结构程序设计分支程序设计首先要在分析实际问题的基础上确定若干个程序分支,然后在此基础上选用条件转移指令、或者是选用间接寻址无条件转移来转向不同的程序分支。测试法分支程序设计跳跃表法分支程序设计分支结构是有若干个条件,每一个条件对应一个基本操
2、作。分支程序就是判断产生的条件,哪个条件成立,就执行哪个条件对应操作的程序段。也就是说,从若干分支中选择一个分支执行。8.2.1测试法分支程序设计例8.1已知在内存中有一个字节单元NUM,存有带符号数据,要求计算出它的绝对值后,放入RESULT单元中。8.2分支结构程序设计8.2分支结构程序设计8.2.1测试法分支程序设计程序清单:DATASEGMENTXDB-25RESULTDB?DATAENDSCODESEGMENTASSUMEDS:DATA,CS:CODESTART:MOVAX,DATAMOVDS,AX;初始化MOVAL,X;X取到AL中
3、TESTAL,80H;测试AL正负JZNEXT;为正,转NEXTNEGAL;否则AL求补NEXT:MOVRESULT,AL;送结果MOVAH,4CHINT21H;返回DOSCODEENDSENDSTART;汇编结束8.2分支结构程序设计8.2.1测试法分支程序设计例8.2试编一程序,求三个带符号字数据中的最大值,并将最大值存入MAX字单元中。设三个带符号数分别在三个字变量X、Y、Z中存储。8.2分支结构程序设计8.2.1测试法分支程序设计8.2分支结构程序设计8.2.1测试法分支程序设计DATASEGMENTXDW-0ABHYDW205ZDW2
4、00MAXDW?DATAENDSCODESEGMENTASSUMEDS:DATA,CS:CODESTART:MOVAX,DATAMOVDS,AXMOVAX,XCMPAX,YJGEL1MOVAX,YL1:CMPAX,ZJGEEXITMOVAX,ZEXIT:MOVMAX,AXMOVAH,4CHINT21HCODEENDSENDSTART8.2分支结构程序设计8.2.2跳跃表法例8.3设某程序有8路分支,试根据给定的N值(1~8),将程序的执行转移到其中的一路分支。符合条件2┅┅符合条件1符合条件8N=?程序段8图8.3例8.3流程图开始查表地址=T
5、AB+(N-1)*2程序段1程序段28.2分支结构程序设计8.2.2跳跃表法DATASEGMENTTABDWP1,P2,P3,P4,P5,P6,P7,P8NDB5DATAENDSCODESEGMENTASSUMEDS:DATA,CS:CODESTART:MOVAX,DATAMOVDS,AX┆MOVAL,NDECALADDAL,ALMOVBL,ALMOVBH,0JMPTAB[BX]P1:……┆JMPEXITP2:……┆JMPEXITP8: ……┆EXIT:MOVAH,4CHINT21HCODEENDSENDSTART8.2分支结构程序设计8.2.
6、3举例例8.4在附加段中,有一个按从小到大顺序排列的无符号字节数组ARRAY,要求在数组中查找字节X,若找到则使CF=0,并在ADDR中给出该元素在数组中的偏移地址;如未找到则使CF=1。算法分析:折半查找法是先取有序数组的中间元素与查找值相比较,如相等则查找成功;如查找值大于中间元素,则再取高半部的中间元素与查找值相比较;如查找值小于中间元素,则再取低半部的中间元素与查找值相比较;如此重复直到查找成功或者最终未找到该数(查找不成功)为止。对于长度为N的表格,折半查找法的平均比较次数为log2N,而顺序查找法平均要作N/2次比较。11,22,3
7、3,44,55,66,77,88,99,111,222,3338.2分支结构程序设计8.2.3举例112233445566778899111222333123456789101112(ax)=55low1145high12555(si)=08hCf=0(ax)=90low17789high1212888(si)=0EhCf=1折半算法8.2分支结构程序设计8.2.3举例DSEGSEGMENTARRAYDW114H,128H,256H,259H,325H,14ADH,34DEH,4D34H,5FDAHXDW256HADDRDW?LO
8、W1DW?HIGH1DW?LEN1=(X-ARRAY)/2DSEGENDSCSEGSEGMENTASSUMECS:CSEG,DS:DSEG,ES:DS