《分支程序设计》PPT课件.ppt
《《分支程序设计》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《分支程序设计》PPT课件.ppt(52页珍藏版)》请在三一办公上搜索。
1、第5讲 分支结构程序设计,掌握:顺序结构程序设计分支结构程序设计,5.1 顺序结构程序设计,完全按程序中的书写顺序逐条执行,称为顺序程序。顺序程序往往是复杂程序结构的一部分。如分支结构的一个分支,循环结构的循环体等。,实例分析,已知某班学生的英语成绩按学号(从1开始)从小到大的顺序排列在TAB表中,要查的学生学号放在变量NO中,查出的英语成绩放在变量EN中。,实例分析,DATA SEGMENTTABDB 68,78,42,84,80,85,56,77,87,56NODB6ENDB?DATA ENDSCODE SEGMENTASSUMECS:CODE,DS:DATASTART:MOV AX,DA
2、TAMOV DS,AXMOV BL,NO;学号送AL寄存器MOV BH,0DEC BXMOV AL,TABBXMOV EN,AL;结果保存在ENGLISH单元MOV AX,4C00HINT 21HCODE ENDS END START,52分支结构程序设计,521分支程序结构,522转移指令,1无条件转移指令 JMP,无条件转移指令的功能是无条件转移到指定的地址去执行从该地址开始的指令。,段内转移 段内直接转移 段内间接转移 段间转移 段间直接转移 段间间接转移,分类,程序举例:manyseg.asm,(1)段内直接转移 段内直接短转移 格式:JMP SHORT 标号 功能:IPIP+8位偏移
3、量,转移范围为-128+127 段内直接近转移 格式:JMP NEAR PTR 标号 功能:IPIP+16位偏移量,转移范围为-32768+32767(2)段内间接转移 格式:JMP WORD PTR OPR 功能:IP(EA)OPR是16位的通用寄存器或字存储器。,段内转移,段内转移指令举例,JMP SHORT L_PRO1 JMP NEAR PTR L_PRO2 JMP SI JMP BX JMP WORD PTRBX JMP WORD PTRBP+DI+20H,段间转移,(4)段间直接转移格式:JMP FAR PTR 标号功能:IPOPR的偏移地址,CSOPR的段地址(5)段间间接转移格
4、式:JMP DWORD PTR OPR功能:IP(EA),CS(EA+2)OPR是存储器,段间转移指令举例,1 CODE2 SEGMENT CODE1 SEGMENT PRO1:MOV JMP FAR PTR PRO1 CODE1 ENDS CODE2 ENDS2 JMP DWORD PTRBX+DI DS=4000H,BX=1230H,DI=02H 计算物理地址:40000H+1230H+2=41232H,说明:,无条件转移指令不影响标志位,2.条件转移指令:(1)判断单个状态标志,格式测试条件JC/JNC地址标号;CF=1/CF=0,有进位/无进位则转移JE/JNE地址标号;ZF=1/ZF
5、=0,结果相等/不相等则转移JZ/JNZ地址标号;ZF=1/ZF=0,结果为零/不为零则转移JS/JNS地址标号;SF=1/SF=0,结果为负/为正则转移JO/JNO地址标号;OF=1/OF=0,结果溢出/不溢出则转移JP/JNP地址标号;PF=1/PF=0,奇偶位为1/奇偶位为0则转移,计算 X-Y,X和Y为16位操作数,结果存入result。MOV AX,X;SUB AX,Y;JNS NO_NEG;(X-Y)如为正数,不求绝对值 NEG AX;求绝对值 NO_NEG:MOV result,AX;保存结果2.设字符的ASCII码在AL,给字符加上奇校验位。AND AL,7FH;D7置0,D6
6、D0不变,测“1”个数 JNP NEXT;D6D0已有奇数个“1”,不处理 OR AL,80H;偶数个“1”,校验位置“1”NEXT:,指令举例,助记符 标志 说 明 JB/JNAE/JC CF=1 低于/不高于不等于()JNB/JAE/JNC CF=0 不低于/高于或等于()JBE/JNA CF=1或ZF=1 低于或等于/不高于()JNBE/JA CF=0且ZF=0 不低于不等于/高于()指令举例:AX和BX为无符号数,比较大小,将较大的数放入AX CMP AX,BX;JNB NEXT;如AXBX,不处理 XCHG AX,BX;AXBX,AX与BX交换 NEXT:,(2)比较无符号数高低(条
7、件为一个标志或标志组合),A:高于,B:低于,E:等于,助记符 标志 说 明 JL/JNGE SFOF 小于/不大于且不等于()JNL/JGE SFOF 不小于/大于或等于()JLE/JNG SFOF或ZF=1 小于或等于/不大于()JNLE/JG SFOF且ZF=0 不小于且不等于/大于()指令举例:AX和BX为有符号数,比较大小,将较大的数放入AX CMP AX,BX;JNL NEXT;如AXBX,不处理 XCHG AX,BX;AXBX,AX与BX交换 NEXT:,(3)比较有符号数大小(条件为标志组合),G:大于,L:小于,E:等于,(4)JCXZ指令,CX值为0则转移,说明,条件转移指
8、令不影响标志位条件转移指令只能实现段内转移,8086转移范围是128127,条件转移指令和无条件转移指令JMP用于实现程序的分支结构。条件转移指令是以当前标志位的状态为条件,其前要安排设置标志位的指令,如加减法、比较、测试等指令。,5.2.3 分支程序设计,根据NUM中的值(04),执行不同的操作,用逻辑分解法编写程序。DATA SEGMENT NUM DB 2 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV AL,NUM CMP AL,0 JZ NEXT0;AL=0转 CMP AL,1
9、 JZ NEXT1;AL=1转 CMP AL,2,1.逻辑分解法分支程序设计,JZ NEXT2;AL=2转 CMP AL,3 JZ NEXT3;AL=3转 CMP AL,4 JZ NEXT4;AL=4转 NEXT0:MOV DL,30H JMP EXIT NEXT1:MOV DL,31H JMP EXIT NEXT2:MOV DL,32H JMP EXIT NEXT3:MOV DL,33H JMP EXIT NEXT4:MOV DL,34H EXIT:MOV AH,2 INT 21H MOV AH,4CH INT 21H CODE ENDS END START,逻辑分解法多分支程序设计2,设数
10、据X、Y均为字节型变量,编写计算下面函数值的程序。.MODEL SMALL.STACK.DATA X DB-5 Y DB?.CODESTART:MOVAX,DATA MOVDS,AX CMPX,0 JGE CASE1;当X0时,则到CASE1 MOVY,-1;当X0时,-1Y JMPDONECASE1:JGCASE2;当X0时,则转到 CASE2 MOVY,0;当X=0时,0Y JMPDONECASE2:MOVY,1;X0时,1YDONE:MOVAX,4C00H INT21H END START,2.地址表法多分支程序设计,把各分支程序段的入口地址(一般是偏移地址)依次存放在一起,形成地址表。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 分支程序设计 分支 程序设计 PPT 课件

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