二分支程序设计.ppt
《二分支程序设计.ppt》由会员分享,可在线阅读,更多相关《二分支程序设计.ppt(41页珍藏版)》请在三一办公上搜索。
1、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
2、 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位;用于条
3、件转移时只能是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注意:这种寻址方式只能用于无条件转
4、移,且要用WORD PTR标志内存 单元的类型是有效地址的字类型。,2023/5/31,宁波大学科技学院计算机系,7,段间直接寻址(目的地址由标号给出)完成从一个段到另一个段的转移。CS和IP两项都要修改。用指令中提供的转移目标的段地址和偏移地址取代CS 和 IP。注意:只能用于无条件转移,且要用far ptr说明目标标号的属性。例:执行时:将next的段属性值送CS,将其有效地址值送IP。,2023/5/31,宁波大学科技学院计算机系,8,段间间接寻址(目的地址在存储器中)完成从一个段到另一个段的转移。用存储器中的两个相继字的内容取代CS 和 IP。(存储单元的地址可用除立即数和寄存器以外的
5、 任何一种数据寻址方式得到)只能用于无条件转移。例: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):
6、分类:段内转移只改变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
7、 所在段的段地址例如: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
8、 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=
9、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则输出=
10、,大于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 含义 表
11、示的条件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则不
12、求补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:,2
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二分 程序设计

链接地址:https://www.31ppt.com/p-5045239.html