欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    二分支程序设计.ppt

    • 资源ID:5045239       资源大小:216KB        全文页数:41页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    二分支程序设计.ppt

    2023/5/31,宁波大学科技学院计算机系,1,第五章(二)分支程序设计,2023/5/31,宁波大学科技学院计算机系,2,二.分支程序设计,CASE 结构 IF-THEN-ELSE 结构,分支实现方法:(1)逻辑分解法(2)地址表法(3)转移表法(跳跃表法)(值与地址有对应关系的表)逻辑尺法,2023/5/31,宁波大学科技学院计算机系,3,一、与转移地址有关的寻址方式:,1、段内寻址 段内直接寻址 JMP NEAR PTR 标号名 段内间接寻址 JMP BX JMP WORD PTR 存储单元寻址2、段间寻址 段间直接寻址 JMP FAR PTR 标号名 段间间接寻址 JMP DWORD PTR 存储单元寻址,用来确定转移指令及CALL指令的转移地址。与转移有关的寻址方式(参见P28):,2023/5/31,宁波大学科技学院计算机系,4,(1)段内直接寻址(目的地址由标号给出),转向的有效地址=当前(IP)+位移量(8bit/16bit)位移量位移量64KB,IP,2023/5/31,宁波大学科技学院计算机系,5,目的地址是相对于IP当前地址来转移的,它是相对寻址方式。例:JMP NEAR PTR NEXT 近转移16位-32768+32767 JMP SHORT NEXT 短转移8位-128+127 EA CS:EA 指令地址注意:用于无条件转移时可以是16位或8位;用于条件转移时只能是8位。,位移量,IP当前值,2023/5/31,宁波大学科技学院计算机系,6,(2)段内间接寻址(目的地址在存储器中)转向的有效地址EA在一个寄存器或存储单元中。(可以用除了立即数以外的任何一种寻址方式得到)例:(BX)=1256H(SI)=528EH TABLE=20A2H(DS)=2000H(232F8H)=3280H(264E4H)=2450H JMP BX;(IP)=1256H JMP TABLEBX JMP WORD PTR TABLEBX;(IP)=3280H JMP BXSI JMP WORD PTR BXSI;(IP)=2450H注意:这种寻址方式只能用于无条件转移,且要用WORD PTR标志内存 单元的类型是有效地址的字类型。,2023/5/31,宁波大学科技学院计算机系,7,段间直接寻址(目的地址由标号给出)完成从一个段到另一个段的转移。CS和IP两项都要修改。用指令中提供的转移目标的段地址和偏移地址取代CS 和 IP。注意:只能用于无条件转移,且要用far ptr说明目标标号的属性。例:执行时:将next的段属性值送CS,将其有效地址值送IP。,2023/5/31,宁波大学科技学院计算机系,8,段间间接寻址(目的地址在存储器中)完成从一个段到另一个段的转移。用存储器中的两个相继字的内容取代CS 和 IP。(存储单元的地址可用除立即数和寄存器以外的 任何一种数据寻址方式得到)只能用于无条件转移。例:JMP DWORD PTR INTERS+BX,2023/5/31,宁波大学科技学院计算机系,9,二、控制转移指令:无条件转移指令 JMP 条件转移指令JZ/JNZ、JE/JNE、JS/JNS、JO/JNO、JP/JNP、JB/JNB、JL/JNL、JBE/JNBE、JLE/JNLE、JCXZ 循环指令 LOOP、LOOPZ/LOOPE、LOOPNZ/LOOPNE 子程序调用和返回指令 CALL、RET 中断与中断返回指令 INT、INTO、IRET,2023/5/31,宁波大学科技学院计算机系,10,1、无条件转移指令JMP(参见P47):分类:段内转移只改变IP的值段间转移既改变IP的值又改变CS的值段内直接短转移:JMP SHORT OPR 执行操作:(IP)(IP)+8位位移量(OPR$)例如:JMP SHORT NEXT段内直接近转移:JMP NEAR PTR OPR 执行操作:(IP)(IP)+16位位移量(OPR$)例如:JMP NEAR PTR NEXT段内间接转移:JMP WORD PTR OPR 执行操作:(IP)(EA)例如:JMP WORD PTR BX,2023/5/31,宁波大学科技学院计算机系,11,段间直接远转移:JMP FAR PTR OPR 执行操作:(IP)OPR 的段内偏移地址(CS)OPR 所在段的段地址例如:JMP FAR PTR NEXT段间间接转移:JMP DWORD PTR OPR 执行操作:(IP)(EA)(CS)(EA+2)例如:JMP DWORD PTR BX其中:EA为OPR所给定的寻址方式的EA JMP指令不影响标志位,2023/5/31,宁波大学科技学院计算机系,12,2、条件转移指令:注意:只能使用段内直接寻址的8 位位移量(-128+127)(1)根据单个条件标志的设置情况转移 格式 测试条件JZ(JE)OPR ZF=1JNZ(JNE)OPR ZF=0JS OPR SF=1JNS OPR SF=0JO OPR OF=1JNO OPR OF=0JP OPR PF=1JNP OPR PF=0JC OPR CF=1JNC OPR CF=0其中:OPR只能是标号,不能是存储单元寻址。,2023/5/31,宁波大学科技学院计算机系,13,课堂练习,一位有符号十进制数的输入、输出:1、键盘输入X(9X7)2、求Y=X+2(7Y9)3、输出Y注意:X的输入要判断符号位如果是负数则需要输入两次,第二次接收值,且要求补码;正数只要输入一次。Y的输出也一样对负数要先输出负号,其值要求补码再输出。,2023/5/31,宁波大学科技学院计算机系,14,JS/JNS 否 是CMP AL,否 是 JZ/JNZ JMP B B JMP A A,开始,输入AL,AL=,X=AL-30H,输入AL,AL-30H,X=AL求补,ALX,Y=AL+2,Y是负数,求Y的绝对值,输出,DLY+30H,输出Y,返回DOS,结束,2023/5/31,宁波大学科技学院计算机系,15,比较两个无符号数,并根据比较结果转移 格式 测试条件=JNB(JAE,JNC)OPR CF=0 JNBE(JA)OPR CFZF=0其中:CF ZF CFZF 含义 表示的条件0 0 0 无借位,不为0 0 1 1 无借位,为0=1 0 1 有借位,不为0 1 1 1 有借位,为0=适用于地址或双精度数低位字的比较,2023/5/31,宁波大学科技学院计算机系,16,例如:判断X,等于100则输出=,大于100输出,小于100输出,100=100 100,程序段:MOV AL,XCMP AL,100JA NEXTA;100转NEXTAJZ NEXTE;=100转NEXTEMOV DL,JMP EXITNEXTE:MOV DL,=EXIT:MOV AH,2;输出一个字符 INT 21H,AL(X),AL与100比较,DL=,DL=,DL=,输出,2023/5/31,宁波大学科技学院计算机系,17,(3)比较两个带符号数,并根据比较结果转移 格式 测试条件=JNL(JGE)OPR SFOF=0 JNLE(JG)OPR(SFOF)ZF=0适用于带符号数的比较其中:SF OF SFOF 含义 表示的条件0 0 0 为正或0,无溢出 0 1 1 为正或0,有溢出 1 0 1 为负,无溢出 1 1 0 为负,有溢出 若有溢出则为其逆条件,2023/5/31,宁波大学科技学院计算机系,18,SF OF ZF SFOF(SFOF)ZF含义表示的条件 0 0 000为正,不为0,无溢出 0 0 101为0 0 1 011见前页 0 1 111 1 0 011 1 0 011 1 1 000为负,溢出 1 1 101为0,2023/5/31,宁波大学科技学院计算机系,19,例:求A字节单元中数据的绝对值,存放到B字节单元中。程序段:MOVAL,ACMP AL,0;与0比较JGE NEXT;0则不求补NEG AL;否则求补NEXT:MOV B,AL,2023/5/31,宁波大学科技学院计算机系,20,例:如果有符号数 X50,转到TOO_HIGH;否则计算 XY,如果溢出则转到 OVERFLOW;否则|XY|RESULT,JGJOJNS,2023/5/31,宁波大学科技学院计算机系,21,例:A、B 是有符号双精度数,分别存于 DX,AX 及 BX,CX 中,A B 时转 GREATER,否则转 LESS。分析:先比较高字,若相等再比较低字;高字要考虑符号。,CMP DX,BX JG GREATER JL LESS CMP AX,CX JA GREATERLESS:GREATER:,2023/5/31,宁波大学科技学院计算机系,22,思考,P142/4,2023/5/31,宁波大学科技学院计算机系,23,三.多分支程序设计,用来完成多分支的实现,类似于高级语言中的CASE语句。实现方法:1、逻辑分解法利用条件语句实现,用于双分支或多分支。2、转移表法转移的入口地址集中放到程序中,用标号表示起始地址,段内短转移每地址占2字节,近转移则3字节。3、跳跃表法(地址表法)将转移的入口地址集中放到数据段,其起始地址用变量名表示,因为地址占2字节,所以表地址=地址表首址+控制字*24、逻辑尺法利用一个控制字作为逻辑尺,根据其中的每一位是0还是1来作为是或不是两种不同操作的判断依据。操作前必须事先根据需要设置好逻辑尺的数据。,2023/5/31,宁波大学科技学院计算机系,24,1、逻辑分解法,否 是 否 是,程序段:MOV AL,X MOV BL,Y CMP AL,BL JZ ZERO JL LESS MOV DL,JMP EXITLESS:MOV DL,JMP EXITZERO:MOV DL,=EXIT:MOV AH,02H INT 21H,开始,输入X、Y,XY?,XY?,输出,输出,输出,返回DOS,结束,2023/5/31,宁波大学科技学院计算机系,25,2、转移表法,格式:转移指令集中放在在代码段中START:LEA BX,TABLE;转移表首址BX MOV AH,01H INT 21H;输入控制字AL SUB AL,30H MOV AH,0 ADD AX,AX;控制字*2,因为短转移占2字节 ADD BX,AX;BX基址+偏移地址 JMP BX;注意!BX不能加,因为目标;地址在指令中,而不是在存储单元中。TABLE:JMP SHORT MODE0;转移表 JMP SHORT MODE1 JMP SHORT MODE2,2023/5/31,宁波大学科技学院计算机系,26,MODE0:;相应的分支程序JMP EXITMODE1:JMP EXITMODE2:JMP EXITEXIT:,2023/5/31,宁波大学科技学院计算机系,27,3、跳跃表法(地址表法),格式:转移地址集中放在在数据段中做成一个表DATA SEGMENTX DB?;转移地址序号TABLE DWADDR0,ADDR1,ADDR2,;转移地址表DATA ENDS 如果分支地址比较多也可以表示为:TABLEDWADDR0DWADDR1DWADDR2,2023/5/31,宁波大学科技学院计算机系,28,CODE SEGMENTMOV AH,01H;输入控制字INT 21HSUB AL,30HMOV X,ALMOV AH,0;扩展到AXADD AX,AX;AX*2,因为每个地址占2字节 MOV SI,AX;偏移量SILEA BX,TABLESI;转移地址BXJMP BX;取数据段中的地址值,;注意BX的 不能少,2023/5/31,宁波大学科技学院计算机系,29,ADDR0:JMP EXITADDR1:JMP EXITADDR2:JMP EXITEXIT:,2023/5/31,宁波大学科技学院计算机系,30,课堂练习1,分别用逻辑分解法、转移表法和跳跃表法实现:键盘输入一位数(04),根据其值分别输出MODE0MODE4,2023/5/31,宁波大学科技学院计算机系,31,1、逻辑分解法,DATA SEGMENTNUM DB?TB0 DB MODE0$TB1 DB MODE1$TB2 DB MODE2$TB3 DB MODE3$TB4 DB MODE4$DATA ENDSCODE SEGMENT,2023/5/31,宁波大学科技学院计算机系,32,接收键盘输入AL LEA DX,TB4AL30HNUM JMP EXIT另起一行EXIT0:LEA DX,TB0MOV AL,NUM JMP EXITCMP AL,0EXIT1:LEA DX,TB1JZ EXIT0 JMP EXITCMP AL,1EXIT2:LEA DX,TB2JZ EXIT1 JMP EXITCMP AL,2EXIT3:LEA DX,TB3JZ EXIT2EXIT:MOV AH,09HCMP AL,3 INT 21HJZ EXIT3 CODE ENDSEND START,2023/5/31,宁波大学科技学院计算机系,33,2、转移表法,DATA SEGMENTNUM DB?TB0 DB MODE0$TB1 DB MODE1$TB2 DB MODE2$TB3 DB MODE3$TB4 DB MODE4$DATA ENDSCODE SEGMENT,2023/5/31,宁波大学科技学院计算机系,34,接收键盘输入ALAL30H NUM换行MOV AL,NUMLEA BX,BTABMOV AH,0SHL AX,1ADD BX,AXJMP BXBTAB:JMP SHORT MD0JMP SHORT MD1JMP SHORT MD2JMP SHORT MD3 JMP SHORT MD4,MD0:LEA DX,TB0 JMP EXIT MD1:LEA DX,TB1 JMP EXITMD2:LEA DX,TB2 JMP EXIT MD3:LEA DX,TB3 JMP EXITMD4:LEA DX,TB4EXIT:MOV AH,09H INT 21HCODE ENDS END START,2023/5/31,宁波大学科技学院计算机系,35,3、地址表法(跳跃表法),DATA SEGMENTNUM DB?ADTAB DW MD0,MD1,MD2,MD3,MD4TB0 DB MODE0$TB1 DB MODE1$TB2 DB MODE2$TB3 DB MODE3$TB4 DB MODE4$DATA ENDSCODE SEGMENT,2023/5/31,宁波大学科技学院计算机系,36,接收键盘输入ALAL30H NUM换行MOV AL,NUMMOV AH,0ADD AX,AXMOV SI,AXMOV BX,ADTABSIJMP BX,MD0:LEA DX,TB0 JMP EXIT MD1:LEA DX,TB1 JMP EXITMD2:LEA DX,TB2 JMP EXIT MD3:LEA DX,TB3 JMP EXITMD4:LEA DX,TB4EXIT:MOV AH,09H INT 21H CODE ENDS END START,2023/5/31,宁波大学科技学院计算机系,37,4、逻辑尺法,对于被控对象进行两种不同的处理时可以使用逻辑尺方法,逻辑尺中每一位控制一个对象,根据其为0或为1的不同来决定对对象的不同操作,所以逻辑尺的长度取决于被控对象的个数。方法:1、使用一个字节(字)来控制8(16)个对象设计逻辑尺:其中0表示处理序列0,1表示处理序列1 2、逻辑尺左移/右移一位 3、判CF=0/1?若为0则转移到处理序列0,否则转移 到处理序列1 4、循环转移到2、进行下一个对象的控制,直到全部处 理完毕。所以逻辑尺方法往往用于循环结构中来实现,目前只能用条件语句来控制循环。,1 1 0 1 0 1 0 0,2023/5/31,宁波大学科技学院计算机系,38,例如:在STR中存放了8个不同的字符,已知逻辑尺的值已经放在AL中,1表示输出该位对应的字符,0表示不输出。DATA SEGMENTSTR DB ABCDEFGHDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATA NEXT:INC BXMOV DS,AX DEC CXLEA BX,STR JNZ LOPMOV CX,8 MOV AH,4CH LOP:ROR AL,1 INT 21H JNC NEXT;不输出 CODE ENDS MOV DL,BX;输出 END STARTMOV AH,02HINT 21H,2023/5/31,宁波大学科技学院计算机系,39,课堂练习2,用逻辑尺法实现:键盘输入一位数(1、2、4、8),根据其值分别输出MODE1MODE8data segment num db?adtab dw addr1,addr2,addr4,addr8 tb1 db mode1$tb2 db mode2$tb4 db mode4$tb8 db mode8$next db 0dh,0ah,$data ends,2023/5/31,宁波大学科技学院计算机系,40,code segment assume cs:code,ds:datastart:mov ax,data mov ds,ax mov ah,01h;输入一个数 int 21h sub al,30h;得其值 mov num,al lea dx,next;换行 mov ah,09h int 21h mov al,num lea bx,adtablop:shr ax,1;判是1、2、4、8吗?jnc nxt;不是 jmp word ptr bx;是nxt:add bx,type adtab;修改指针 jmp lop;继续判断,addr1:lea dx,tb1 mov ah,09h int 21h jmp exitaddr2:lea dx,tb2 mov ah,09h int 21h jmp exitaddr4:lea dx,tb4 mov ah,09h int 21h jmp exitaddr8:lea dx,tb8 mov ah,09h int 21hexit:mov ah,4ch int 21hcode ends end start,2023/5/31,宁波大学科技学院计算机系,41,思考,Page 142 4 5 6,

    注意事项

    本文(二分支程序设计.ppt)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开