汇编语言程序设计第8章80868088分支程序设计.ppt

上传人:wuy****n92 文档编号:80496322 上传时间:2023-03-23 格式:PPT 页数:26 大小:493.50KB
返回 下载 相关 举报
汇编语言程序设计第8章80868088分支程序设计.ppt_第1页
第1页 / 共26页
汇编语言程序设计第8章80868088分支程序设计.ppt_第2页
第2页 / 共26页
点击查看更多>>
资源描述

《汇编语言程序设计第8章80868088分支程序设计.ppt》由会员分享,可在线阅读,更多相关《汇编语言程序设计第8章80868088分支程序设计.ppt(26页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、网络工程系网络工程系汇编语言程序设计汇编语言程序设计汇编语言程序设计汇编语言程序设计安徽工业大学8086/80888086/8088和和ARMARM核核汇编语言程序设计汇编语言程序设计第第8 8章章 分支程序设计分支程序设计2/18/20231第第1章章汇编语言基础知识汇编语言基础知识8章章分支程序设计分支程序设计网络工程系网络工程系汇编语言程序设计汇编语言程序设计汇编语言程序设计汇编语言程序设计安徽工业大学8.1 8.1 分支程序的结构形式分支程序的结构形式8.2 分支结构程序设计分支结构程序设计第第8 8章章 分支程序设计分支程序设计2/18/20232第第1章章汇编语言基础知识汇编语言基

2、础知识8章章分支程序设计分支程序设计网络工程系网络工程系汇编语言程序设计汇编语言程序设计汇编语言程序设计汇编语言程序设计安徽工业大学掌握分支程序设计方法掌握分支程序设计方法熟悉常见程序设计问题:熟悉常见程序设计问题:数据范围判断(数据范围判断(09、AZ、az)、)、字母大小写转换、字母大小写转换、;教学要求教学要求2/18/20233第第1章章汇编语言基础知识汇编语言基础知识8章章分支程序设计分支程序设计网络工程系网络工程系汇编语言程序设计汇编语言程序设计汇编语言程序设计汇编语言程序设计安徽工业大学8.1 8.1 8.1 8.1 分支程序的结构形式分支程序的结构形式分支程序的结构形式分支程序

3、的结构形式分支程序结构分支程序结构是根据条件转向不同程序分支的结果,是根据条件转向不同程序分支的结果,有有3 3种形式:种形式:单分支、双分支结构和多分支结构单分支、双分支结构和多分支结构。2/18/20234第第1章章汇编语言基础知识汇编语言基础知识8章章分支程序设计分支程序设计网络工程系网络工程系汇编语言程序设计汇编语言程序设计汇编语言程序设计汇编语言程序设计安徽工业大学8.1 8.1 8.1 8.1 分支程序的结构形式分支程序的结构形式分支程序的结构形式分支程序的结构形式2/18/20235第第1章章汇编语言基础知识汇编语言基础知识8章章分支程序设计分支程序设计网络工程系网络工程系汇编语

4、言程序设计汇编语言程序设计汇编语言程序设计汇编语言程序设计安徽工业大学8.2 8.2 8.2 8.2 分支结构程序设计分支结构程序设计分支结构程序设计分支结构程序设计分支程序设计分支程序设计首先要在分析实际问题的基础上确定若干个首先要在分析实际问题的基础上确定若干个程序分支,然后在此基础上程序分支,然后在此基础上选用条件转移指令选用条件转移指令、或者是、或者是选用间选用间接寻址无条件转移接寻址无条件转移来转向不同的程序分支。前者是来转向不同的程序分支。前者是测试法分支测试法分支程序设计程序设计,后者是,后者是跳跃表法分支程序设计跳跃表法分支程序设计。分支程序根据条件是真或假决定执行与否分支程序

5、根据条件是真或假决定执行与否判断的条件是各种指令,如判断的条件是各种指令,如CMP、TEST等等执行后形成的状态标志执行后形成的状态标志转移指令转移指令Jcc和和JMP可以实现分支控制可以实现分支控制2/18/20236第第1章章汇编语言基础知识汇编语言基础知识8章章分支程序设计分支程序设计网络工程系网络工程系汇编语言程序设计汇编语言程序设计汇编语言程序设计汇编语言程序设计安徽工业大学8.2 8.2 8.2 8.2 分支结构程序设计分支结构程序设计分支结构程序设计分支结构程序设计分支结构是有若干个条件,每一个条件对应一分支结构是有若干个条件,每一个条件对应一个基本操作。分支程序就是判断产生的条

6、件,哪个个基本操作。分支程序就是判断产生的条件,哪个条件成立,就执行哪个条件对应操作的程序段。也条件成立,就执行哪个条件对应操作的程序段。也就是说,从若干分支中选择一个分支执行。就是说,从若干分支中选择一个分支执行。8.2.1 8.2.1 测试法分支程序设计测试法分支程序设计 例例8.1 已知在内存中有一个字节单元已知在内存中有一个字节单元NUMNUM,存有带符号,存有带符号数据,要求计算出它的绝对值后,放入数据,要求计算出它的绝对值后,放入RESULTRESULT单元中。单元中。2/18/20237第第1章章汇编语言基础知识汇编语言基础知识8章章分支程序设计分支程序设计网络工程系网络工程系汇

7、编语言程序设计汇编语言程序设计汇编语言程序设计汇编语言程序设计安徽工业大学8.2 8.2 8.2 8.2 分支结构分支结构分支结构分支结构程序设计程序设计程序设计程序设计8.2.1 8.2.1 测试法分支程序设计测试法分支程序设计 程序清单:程序清单:DATASEGMENTXDB-25RESULTDB?DATAENDSCODESEGMENTASSUMEDS:DATA,CS:CODESTART:MOVAX,DATAMOVDS,AX;初始化初始化MOVAL,X;X取到取到AL中中TESTAL,80H;测试测试AL正负正负JZNEXT;为正,转为正,转NEXTNEGAL;否则否则AL求补求补NEXT

8、:MOVRESULT,AL;送结果送结果MOVAH,4CHINT21H;返回返回DOSCODEENDSENDSTART;汇编结束汇编结束2/18/20238第第1章章汇编语言基础知识汇编语言基础知识8章章分支程序设计分支程序设计网络工程系网络工程系汇编语言程序设计汇编语言程序设计汇编语言程序设计汇编语言程序设计安徽工业大学8.2 8.2 8.2 8.2 分支结构分支结构分支结构分支结构程序设计程序设计程序设计程序设计8.2.1 8.2.1 测试法分支程序设计测试法分支程序设计 例例8.2 8.2 试编一程序,试编一程序,求三个带符号字数据求三个带符号字数据中的最大值,并将最中的最大值,并将最大

9、值存入大值存入MAXMAX字单元字单元中。设三个带符号数中。设三个带符号数分别在三个字变量分别在三个字变量X X、Y Y、Z Z中存储。中存储。2/18/20239第第1章章汇编语言基础知识汇编语言基础知识8章章分支程序设计分支程序设计网络工程系网络工程系汇编语言程序设计汇编语言程序设计汇编语言程序设计汇编语言程序设计安徽工业大学8.2 8.2 8.2 8.2 分支结构分支结构分支结构分支结构程序设计程序设计程序设计程序设计8.2.1 8.2.1 测试法分支程序设计测试法分支程序设计 DATASEGMENTXDW-0ABHYDW205ZDW200MAXDW?DATAENDSCODESEGMEN

10、TASSUMEDS:DATA,CS:CODESTART:MOVAX,DATAMOVDS,AXMOVAX,XCMPAX,YJGEL1MOVAX,YL1:CMPAX,ZJGEEXITMOVAX,ZEXIT:MOVMAX,AXMOVAH,4CHINT21HCODEENDSENDSTART2/18/202310第第1章章汇编语言基础知识汇编语言基础知识8章章分支程序设计分支程序设计网络工程系网络工程系汇编语言程序设计汇编语言程序设计汇编语言程序设计汇编语言程序设计安徽工业大学第十五讲第十五讲第十五讲第十五讲1、阅读下列程序段,程序执行到、阅读下列程序段,程序执行到HLT时,时,(AX)=(),(),(

11、BX)=()。()。(4分)分)xorax,axmovbx,1movcx,5lop:addax,bxincbxlooplophlt0FH或或15 6 2/18/202311第第1章章汇编语言基础知识汇编语言基础知识8章章分支程序设计分支程序设计网络工程系网络工程系汇编语言程序设计汇编语言程序设计汇编语言程序设计汇编语言程序设计安徽工业大学2、试分析下列程序段,程序执行后,、试分析下列程序段,程序执行后,num2字节单元的内容是什么?字节单元的内容是什么?如果如果num1字节单元的值为字节单元的值为39h,运行后,运行后,num2字节单元的内容又是什么?由字节单元的内容又是什么?由此说明程序完成

12、了什么操作此说明程序完成了什么操作。(。(6分)分)datasegmentnum1db41hnum2db?dataendsCodesegmentassumecs:code,ds:datastart:movax,datamovds,axmovah,num1cmpah,39hJbenextsubah,7next:subah,30hmovnum2,ahmovah,4chint21hcodeendsendstart0AH,09H,此程序可将此程序可将num1字节单元中的字节单元中的ascii字字符符09,AF转换成转换成十六进制数十六进制数09,AF2/18/202312第第1章章汇编语言基础知识汇编

13、语言基础知识8章章分支程序设计分支程序设计网络工程系网络工程系汇编语言程序设计汇编语言程序设计汇编语言程序设计汇编语言程序设计安徽工业大学3、下列程序完成将下列程序完成将BX寄存器的数值以十六进制显示输出,寄存器的数值以十六进制显示输出,完成程序填空完成程序填空。(6分)分)codesegmentassume(1)start:movbx,0DA12Hmovch,4rotate:movcl,4;设置移位指令的移位次数;设置移位指令的移位次数rolbx,clmoval,blandal,0FH;取;取BX寄存器的高四位寄存器的高四位addal,(2);将十六进制数值转换成对应的;将十六进制数值转换成

14、对应的ASCII码码cmpal,3ahjlprintitaddal,(3);处理十六进制数;处理十六进制数A-Fprintit:movDL,al;调用系统功能,显示一位十六进制数对应;调用系统功能,显示一位十六进制数对应的字符的字符Movah,(4)int21hdecch;循环次数;循环次数-1jnzrotate;处理;处理BX后续四位二进制位后续四位二进制位movah,4CHint(5)codeendsend(6)cs:code 30H 07H 02 21H start 2/18/202313第第1章章汇编语言基础知识汇编语言基础知识8章章分支程序设计分支程序设计网络工程系网络工程系汇编语言

15、程序设计汇编语言程序设计汇编语言程序设计汇编语言程序设计安徽工业大学8.2 8.2 8.2 8.2 分支结构分支结构分支结构分支结构程序设计程序设计程序设计程序设计8.2.2 8.2.2 跳跃表法跳跃表法例例8.38.3 设某程序有设某程序有8 8路分支,试根据给路分支,试根据给定的定的N N值(值(1 18 8),),将程序的执行转移将程序的执行转移到其中的一路分支。到其中的一路分支。符合条件符合条件2符合条件符合条件1符合条件符合条件8N=?程序段程序段8图图8.3例例8.3流程图流程图开开始始查表地址查表地址TAB+(N-1)*2TAB+(N-1)*2程序段程序段1程序段程序段22/18

16、/202314第第1章章汇编语言基础知识汇编语言基础知识8章章分支程序设计分支程序设计网络工程系网络工程系汇编语言程序设计汇编语言程序设计汇编语言程序设计汇编语言程序设计安徽工业大学8.2 8.2 8.2 8.2 分支结构分支结构分支结构分支结构程序设计程序设计程序设计程序设计8.2.2 8.2.2 跳跃表法跳跃表法DATASEGMENTTABDWP1,P2,P3,P4,P5,P6,P7,P8NDB5DATAENDSCODESEGMENTASSUMEDS:DATA,CS:CODESTART:MOVAX,DATAMOVDS,AX MOVAL,NDECALADDAL,ALMOVBL,ALMOVBH

17、,0JMPTABBXP1:JMPEXITP2:JMPEXITP8:EXIT:MOVAH,4CHINT21HCODEENDSENDSTART2/18/202315第第1章章汇编语言基础知识汇编语言基础知识8章章分支程序设计分支程序设计网络工程系网络工程系汇编语言程序设计汇编语言程序设计汇编语言程序设计汇编语言程序设计安徽工业大学例:根据例:根据AL寄存器中哪一位为寄存器中哪一位为1(从低位到高位),(从低位到高位),把程序转移到把程序转移到8个不同的程序分支个不同的程序分支branch_table dw routine1branch_table dw routine1 dw routine2 d

18、w routine2 dw routine3 dw routine3 dw routine4 dw routine4 dw routine5 dw routine5 dw routine6 dw routine6 dw routine7 dw routine7 dw routine8 dw routine8跳跃表法跳跃表法2/18/202316第第1章章汇编语言基础知识汇编语言基础知识8章章分支程序设计分支程序设计网络工程系网络工程系汇编语言程序设计汇编语言程序设计汇编语言程序设计汇编语言程序设计安徽工业大学 cmp al,0 cmp al,0 ;AL;AL为逻辑尺为逻辑尺 je contin

19、ue je continue lea bx,branch_table lea bx,branch_tableL:L:shr al,1shr al,1 ;逻辑右移逻辑右移 jnc add1jnc add1 jmp word ptrbxjmp word ptrbx ;段内间接转移add1:add1:add bx,type branch_table add bx,type branch_table ;add bx,2add bx,2 jmp L jmp Lcontinue:continue:routine1:routine1:routine2:routine2:(寄存器间接寻址寄存器间接寻址)2/1

20、8/202317第第1章章汇编语言基础知识汇编语言基础知识8章章分支程序设计分支程序设计网络工程系网络工程系汇编语言程序设计汇编语言程序设计汇编语言程序设计汇编语言程序设计安徽工业大学(寄存器相对寻址寄存器相对寻址)cmp al,0 cmp al,0 je continue je continue mov si,0 mov si,0 L:shr al,1 L:shr al,1 ;逻辑右移逻辑右移 jnc add1 jnc add1 jmp branch_tablesi jmp branch_tablesi ;段内间接转移add1:add1:add si,type branch_table ad

21、d si,type branch_table jmp L jmp Lcontinue:continue:routine1:routine1:routine2:routine2:2/18/202318第第1章章汇编语言基础知识汇编语言基础知识8章章分支程序设计分支程序设计网络工程系网络工程系汇编语言程序设计汇编语言程序设计汇编语言程序设计汇编语言程序设计安徽工业大学(基址变址寻址基址变址寻址)cmp al,0cmp al,0 je continue je continue lea bx,branch_table lea bx,branch_table mov si,7*type branch_t

22、able mov si,7*type branch_table mov cx,8 mov cx,8L:shl al,1 L:shl al,1 ;逻辑左移逻辑左移 jnc sub1 jnc sub1 jmp word ptr bxsi jmp word ptr bxsi ;段内间接转移sub1:sub si,type branch_table sub1:sub si,type branch_table;(si)-2;(si)-2 loop L loop Lcontinue:continue:routine1:routine1:routine2:routine2:2/18/202319第第1章章汇

23、编语言基础知识汇编语言基础知识8章章分支程序设计分支程序设计网络工程系网络工程系汇编语言程序设计汇编语言程序设计汇编语言程序设计汇编语言程序设计安徽工业大学8.2 8.2 8.2 8.2 分支结构分支结构分支结构分支结构程序设计程序设计程序设计程序设计举例举例例例8.4 8.4 在附加段中,有一个按从小到大顺序排列的无符号字节数组在附加段中,有一个按从小到大顺序排列的无符号字节数组ARRAYARRAY,要求在数组中查找字节,要求在数组中查找字节X X,若找到则使,若找到则使CF=0CF=0,并在,并在ADDRADDR中给出该元素在中给出该元素在数组中的偏移地址;如未找到则使数组中的偏移地址;如

24、未找到则使CF=1CF=1。算法分析:算法分析:折半查找法是先取有序数组的折半查找法是先取有序数组的中间元素中间元素与与查找值查找值相比较,如相比较,如相等相等则查找成则查找成功;如查找值功;如查找值大于大于中间元素,则再取中间元素,则再取高半部的中间元素高半部的中间元素与与查找值查找值相比较;相比较;如如查找值查找值小于小于中间元素中间元素,则再取,则再取低半部的中间元素低半部的中间元素与与查找值查找值相比较;如此相比较;如此重复直到查找成功或者最终未找到该数(查找不成功)为止。对于长度为重复直到查找成功或者最终未找到该数(查找不成功)为止。对于长度为N的表格,折半查找法的平均比较次数为的表

25、格,折半查找法的平均比较次数为log2N,而顺序查找法平均要作,而顺序查找法平均要作N/2次比较。次比较。2/18/202320第第1章章汇编语言基础知识汇编语言基础知识8章章分支程序设计分支程序设计网络工程系网络工程系汇编语言程序设计汇编语言程序设计汇编语言程序设计汇编语言程序设计安徽工业大学8.2 8.2 8.2 8.2 分支结构分支结构分支结构分支结构程序设计程序设计程序设计程序设计举例举例2/18/202321第第1章章汇编语言基础知识汇编语言基础知识8章章分支程序设计分支程序设计网络工程系网络工程系汇编语言程序设计汇编语言程序设计汇编语言程序设计汇编语言程序设计安徽工业大学8.2 8

26、.2 8.2 8.2 分支结构分支结构分支结构分支结构程序设计程序设计程序设计程序设计举例举例DSEGSEGMENTARRAYDW114H,128H,256H,259H,325H,14ADH,34DEH,4D34H,5FDAHXDW256HADDRDW?LOW1DW?HIGH1DW?LEN1=(X-ARRAY)/2DSEGENDSCSEGSEGMENTASSUMECS:CSEG,DS:DSEG,ES:DSEGSTART:PUSHDSXORAX,AXPUSHAXMOVAX,DSEGMOVDS,AXMOVES,AXMOVAX,X2/18/202322第第1章章汇编语言基础知识汇编语言基础知识8章章

27、分支程序设计分支程序设计网络工程系网络工程系汇编语言程序设计汇编语言程序设计汇编语言程序设计汇编语言程序设计安徽工业大学8.2 8.2 8.2 8.2 分支结构分支结构分支结构分支结构程序设计程序设计程序设计程序设计举例举例LEADI,ARRAYCMPAX,ES:DIJALAB1;大于最小数大于最小数LEASI,ES:DIJEEXIT;找到,结束找到,结束STC;未找到未找到JMPEXIT1LAB1:MOVSI,LEN1-1SHLSI,1ADDSI,DI;使使SI指向最后一个元素指向最后一个元素CMPAX,ES:SIJBLAB2;小于最大数,则转去查询小于最大数,则转去查询JEEXITSTCJ

28、MPEXIT1LAB2:MOVLOW1,1MOVBX,LEN1MOVHIGH1,BXMOVBX,DI2/18/202323第第1章章汇编语言基础知识汇编语言基础知识8章章分支程序设计分支程序设计网络工程系网络工程系汇编语言程序设计汇编语言程序设计汇编语言程序设计汇编语言程序设计安徽工业大学8.2 8.2 8.2 8.2 分支结构分支结构分支结构分支结构程序设计程序设计程序设计程序设计举例举例LABM:MOVCX,LOW1MOVDX,HIGH1CMPCX,DXJANOFOUNDADDCX,DXSHRCX,1MOVSI,CXSHLSI,1COMP:CMPAX,ES:BX+SIJEEXITJALAB

29、HDECCXMOVHIGH1,CXJMPLABMLABH:INCCXMOVLOW1,CXJMPLABMNOFOUND:STCJMPEXIT1EXIT:MOVADDR,SIEXIT1:RETCSEGENDSENDSTART2/18/202324第第1章章汇编语言基础知识汇编语言基础知识8章章分支程序设计分支程序设计网络工程系网络工程系汇编语言程序设计汇编语言程序设计汇编语言程序设计汇编语言程序设计安徽工业大学8.2 8.2 8.2 8.2 分支结构分支结构分支结构分支结构程序设计程序设计程序设计程序设计举例举例需要注意的是:需要注意的是:用测试法进行多分支程序设计时,流程图中对各个条件的测试的先

30、后用测试法进行多分支程序设计时,流程图中对各个条件的测试的先后次序应尽量和所涉及的具体问题的提出次序相符;编程中为形成多分支次序应尽量和所涉及的具体问题的提出次序相符;编程中为形成多分支而使用的转移指令的先后次序也应尽量与流程图一致。这样可以使得编而使用的转移指令的先后次序也应尽量与流程图一致。这样可以使得编程思路更清晰,易于阅读和修改。程思路更清晰,易于阅读和修改。要根据题意为每个程序分支安排出口,避免某个程序分支错误地顺序要根据题意为每个程序分支安排出口,避免某个程序分支错误地顺序进入另一个程序分支,通常可以采用在程序分支的结束处使用无条件转进入另一个程序分支,通常可以采用在程序分支的结束

31、处使用无条件转移指令使程序转向正确的目的位置。移指令使程序转向正确的目的位置。对于既可以使用双分支,又可以使用单分支结构编写程序时,宜使用对于既可以使用双分支,又可以使用单分支结构编写程序时,宜使用单分支,这样处理可以减少转移次数,程序结构简单。单分支,这样处理可以减少转移次数,程序结构简单。对于多分支的程序,选用跳转表法可以使程序具有转移次数少、结构对于多分支的程序,选用跳转表法可以使程序具有转移次数少、结构简单。简单。在对分支程序进行测试时,应该使用不同的实验数据来检查每一个程在对分支程序进行测试时,应该使用不同的实验数据来检查每一个程序分支是否正确,这样才能保证整个程序的正确性。序分支是否正确,这样才能保证整个程序的正确性。2/18/202325第第1章章汇编语言基础知识汇编语言基础知识8章章分支程序设计分支程序设计第第8章:教学要求章:教学要求掌握基分支程序设计方法掌握基分支程序设计方法熟悉常见程序设计问题:熟悉常见程序设计问题:数据范围判断(数据范围判断(09、AZ、az)、)、字母大小写转换、字母大小写转换、;作业作业:P130:一、一、1,2,3;三、;三、3,42/18/202326第第1章章汇编语言基础知识汇编语言基础知识8章章分支程序设计分支程序设计

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁