第六章 分支结构程序设计PPT讲稿.ppt
《第六章 分支结构程序设计PPT讲稿.ppt》由会员分享,可在线阅读,更多相关《第六章 分支结构程序设计PPT讲稿.ppt(108页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第六章第六章 分支结构程分支结构程序设计序设计第1页,共108页,编辑于2022年,星期三带着问题学习:1分支程序结构有哪几种?分支程序结构有哪几种?2都有哪些指令可以实现分支?都有哪些指令可以实现分支?3可以对二进制的某一位操作的指令有哪可以对二进制的某一位操作的指令有哪些?些?4.系统是如何把程序调入内存执行的?系统是如何把程序调入内存执行的?5.菜单程序如何设计菜单程序如何设计?第2页,共108页,编辑于2022年,星期三学习要点学习要点掌握分支结构程序设计方法掌握分支结构程序设计方法掌握与分支有关的转移指令掌握与分支有关的转移指令深入分析程序转移的特征深入分析程序转移的特征第3页,共1
2、08页,编辑于2022年,星期三任务任务1 如何将学生姓名字符串如何将学生姓名字符串“Zhang San”变成变成“ZHANG SAN”?任务任务2 如何计算下面函数的值:如何计算下面函数的值:任务任务3 如何判断某一年是否是闰年?如何判断某一年是否是闰年?任务任务4 给出一百分制成绩,如何输出相应的给出一百分制成绩,如何输出相应的A、B、C、D,E等级?等级?第4页,共108页,编辑于2022年,星期三第六章第六章 分支结构程序设计分支结构程序设计6.1 分支结构分支结构6.2 与分支有关的指令与分支有关的指令-控制转移类指令控制转移类指令6.2.1无条件转移类指令无条件转移类指令6.2.2
3、条件转移类指令条件转移类指令6.2.3 与转移地址有关的寻址方式与转移地址有关的寻址方式6.3 分支结构程序设计举例分支结构程序设计举例第5页,共108页,编辑于2022年,星期三任务:任务:从键盘输入一个字符,判断该字符是否是小从键盘输入一个字符,判断该字符是否是小写字母?如果是小写字母,请把它转换成大写字母?如果是小写字母,请把它转换成大写字母输出,否则不转换,原样输出。写字母输出,否则不转换,原样输出。第6页,共108页,编辑于2022年,星期三Ch=z?显示字符显示字符否否是是否否是是将字符转换成大写将字符转换成大写是是否否是是输入一个字符输入一个字符chCh=a?Ch=z?显示字符显
4、示字符否否将字符转换成大写将字符转换成大写第7页,共108页,编辑于2022年,星期三MOV AH,01HINT 21HCMP AL,aJB DISPLAYCMP AL,zJA DISPLAYSUB AL,20HDISPLAY:MOV DL,ALMOV AH,02HINT 21HCh=z?显示字符显示字符否否是是否否是是将字符转换成大写将字符转换成大写第8页,共108页,编辑于2022年,星期三1两路分支结构两路分支结构2多级分支结构多级分支结构3多路分支结构多路分支结构图示图示图示分支结构种类分支结构种类6.1 分支结构分支结构需要满足一定的条件,才能实现分支转移!需要满足一定的条件,才能实
5、现分支转移!第9页,共108页,编辑于2022年,星期三6.2 控制转移类指令控制转移类指令控制转移类指令控制转移类指令用于实现分支、循环、过程等程序结构,用于实现分支、循环、过程等程序结构,是仅次于传送是仅次于传送指令的最常用指令指令的最常用指令 控控制制转转移移类类指指令令通通过过改改变变IP(和和CS)值值,实实现现程序执行顺序的改变程序执行顺序的改变第13页,共108页,编辑于2022年,星期三控制转移类指令控制转移类指令无条件转移指令无条件转移指令JMP条件转移指令条件转移指令JZ/JNZ、JE/JNE、JS/JNS、JO/JNO、JP/JNP、JB/JNB、JL/JNL、JBE/J
6、NBE、JLE/JNLE、JCXZ 循环指令循环指令 LOOP、LOOPZ/LOOPE、LOOPNZ/LOOPNE 子程序调用和返回指令子程序调用和返回指令 CALL、RET中断与中断返回指令中断与中断返回指令 INT、INTO、IRET第14页,共108页,编辑于2022年,星期三6.2.1 无条件转移指令无条件转移指令只要执行无条件转移指令只要执行无条件转移指令JMP,就使程序转到指定,就使程序转到指定的目标地址处,从目标地址处开始执行那里的指令的目标地址处,从目标地址处开始执行那里的指令操作数操作数label是要转移到的是要转移到的目标地址目标地址(目的地址目的地址、转移地址转移地址)J
7、MP指令分成指令分成4种类型:种类型:段内转移、直接寻址段内转移、直接寻址 段内转移、间接寻址段内转移、间接寻址 段间转移、直接寻址段间转移、直接寻址 段间转移、间接寻址段间转移、间接寻址JMP label;程序转向label标号指定的地址JMPJMP第15页,共108页,编辑于2022年,星期三用来确定用来确定转移指令转移指令及及CALL指令指令的转向地址。的转向地址。与转移地址有关的寻址方式:与转移地址有关的寻址方式:段内段内寻址寻址 段内直接段内直接寻址寻址 JMP NEAR PTR NEXT 段内间接段内间接寻址寻址 JMP TABLE BX 段间段间寻址寻址 段间直接段间直接寻址寻址
8、 JMP FAR PTR NEXT 段间间接段间间接寻址寻址 JMP DWORD PTR BX 第16页,共108页,编辑于2022年,星期三目标地址的寻址方式目标地址的寻址方式直接寻址方式直接寻址方式转移地址象立即数一样,直接在指令的机转移地址象立即数一样,直接在指令的机器代码中,就是直接寻址方式器代码中,就是直接寻址方式间接寻址方式间接寻址方式转移地址在寄存器或主存单元中,就是通转移地址在寄存器或主存单元中,就是通过寄存器或存储器的间接寻址方式过寄存器或存储器的间接寻址方式用标号表达用寄存器或存储器操作数表达第17页,共108页,编辑于2022年,星期三目标地址的范围:段内目标地址的范围:
9、段内段内转移段内转移近转移(近转移(near)在当前代码段在当前代码段64KB范围内转移(范围内转移(32KB范围)范围)不需要更改不需要更改CS段地址,段地址,只要改变只要改变IP偏偏移地址移地址段内转移段内转移短转移(短转移(short)转移范围可以用一个字节表达,在段转移范围可以用一个字节表达,在段内内128127范围的转移范围的转移代代码码段段代代码码段段第18页,共108页,编辑于2022年,星期三目标地址的范围:段间目标地址的范围:段间段间转移段间转移远转移(远转移(far)从当前代码段跳转到另一个代码从当前代码段跳转到另一个代码段,可以在段,可以在1MB范围范围需要需要更改更改C
10、S段地址和段地址和IP偏移地址偏移地址目标地址必须用一个目标地址必须用一个32位数表达,位数表达,叫做叫做32位远指针位远指针,它就是逻辑地,它就是逻辑地址址代代码码段段代代码码段段 实实际际编编程程时时,汇汇编编程程序序会会根根据据目目标标地地址址的的距距离离,自自动动处处理理成短转移、近转移或远转移成短转移、近转移或远转移 程序员可用操作符程序员可用操作符short、near ptr 或或far ptr 强制强制第19页,共108页,编辑于2022年,星期三段内转移、直接寻址段内转移、直接寻址JMP labelJMP label;IPIP+IPIP+位移量位移量位移量是紧接着位移量是紧接着
11、JMP指令后的那条指令的偏移地址,到目标指令指令后的那条指令的偏移地址,到目标指令的偏移地址的地址位移的偏移地址的地址位移当向地址增大方向转移时,位移量为正;向地址减小方向转移时,位当向地址增大方向转移时,位移量为正;向地址减小方向转移时,位移量为负移量为负jmp jmp againagain;转移到;转移到againagain处继续执行处继续执行again:again:dec cxdec cx;标号;标号againagain的指令的指令jmp jmp outputoutput;转向;转向outputoutputoutput:output:mov result,almov result,al;
12、标号;标号outputoutput的指令的指令实际为相对寻址第20页,共108页,编辑于2022年,星期三(1)段内直接寻址段内直接寻址转向的有效地址转向的有效地址=当前当前(IP)+位移量位移量(8bit/16bit)第21页,共108页,编辑于2022年,星期三例例:JMP NEAR PTR NEXT 近转移近转移 -32768 +32767 JMP SHORT NEXT 短转移短转移 -128 +127 第22页,共108页,编辑于2022年,星期三段内转移、间接寻址段内转移、间接寻址JMP r16/m16 JMP r16/m16;IPr16/m16IPr16/m16将一个将一个1616
13、位寄存器或主存字单元内容送入位寄存器或主存字单元内容送入IPIP寄存器,作为新的指令指针,但不修改寄存器,作为新的指令指针,但不修改CSCS寄存寄存器的内容器的内容jmp axjmp ax;IPAXIPAXjmp word ptr 2000hjmp word ptr 2000h;IP2000hIP2000h第23页,共108页,编辑于2022年,星期三(2)段内间接寻址段内间接寻址 转向的有效地址转向的有效地址是一个寄存器或存储单元的内容。是一个寄存器或存储单元的内容。(可用除立即数以外的任何一种数据寻址方式得到可用除立即数以外的任何一种数据寻址方式得到)例:例:(BX)=1256H (SI)
14、=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第24页,共108页,编辑于2022年,星期三段间转移、直接寻址段间转移、直接寻址JMP far ptr labelJMP far ptr label;IPlabelIPlabel的偏移地址的偏移地址;CSlabelCSlabel的段地址的段地址将标号所在段的段地址作为新的将
15、标号所在段的段地址作为新的CS值,值,标号在该段内的偏移地址作为新的标号在该段内的偏移地址作为新的IP值;这值;这样,程序跳转到新的代码段执行样,程序跳转到新的代码段执行jmp far ptr othersegjmp far ptr otherseg;远转移到代码段;远转移到代码段2 2的的othersegotherseg第25页,共108页,编辑于2022年,星期三code1 segment jmp far ptr next code1 endscode2 segment next:.code2 ends(3)段间直接寻址段间直接寻址 用指令中提供的用指令中提供的转向段地址转向段地址和和偏移
16、地址偏移地址取代取代CS 和和 IP。例例:第26页,共108页,编辑于2022年,星期三段间转移、间接寻址段间转移、间接寻址JMP far ptr memJMP far ptr mem;IPmemIPmem,CSmem+2CSmem+2用一个双字存储单元表示要跳转的目标地用一个双字存储单元表示要跳转的目标地址。这个目标地址存放在主存中连续的两个址。这个目标地址存放在主存中连续的两个字单元中的,低位字送字单元中的,低位字送IPIP寄存器,高位字送寄存器,高位字送CSCS寄存器寄存器mov word ptr bx,0mov word ptr bx,0mov word ptr bx+2,1500h
17、mov word ptr bx+2,1500hJMP far ptr bx JMP far ptr bx ;转移到;转移到1500h:01500h:0第27页,共108页,编辑于2022年,星期三(4)段间间接寻址段间间接寻址 用存储器中的两个相继字的内容取代用存储器中的两个相继字的内容取代CS 和和 IP。(存储单元的地址可用除立即数和寄存器以外的存储单元的地址可用除立即数和寄存器以外的 任何一种数据寻址方式得到任何一种数据寻址方式得到)例:例:JMP DWORD PTR INTERS+BX第28页,共108页,编辑于2022年,星期三无条件转移指令无条件转移指令段内段内直接短转移:直接短转
18、移:JMP SHORT OPR执行操作:(IP)(IP)+8 位位移量段内段内直接近转移:直接近转移:JMP NEAR PTR OPR执行操作:(IP)(IP)+16 位位移量段内段内间接转移:间接转移:JMP WORD PTR OPR执行操作:(IP)(EA)第29页,共108页,编辑于2022年,星期三无条件转移指令无条件转移指令段间段间直接远转移直接远转移 JMP FAR PTR OPR 执行操作:执行操作:(IP)OPR 的段内偏移地址的段内偏移地址 (CS)OPR 所在段的段地址所在段的段地址段间段间间接转移:间接转移:JMP DWORD PTR OPR执行操作:执行操作:(IP)(
19、EA)(CS)(EA+2)第30页,共108页,编辑于2022年,星期三6.2.2 条件转移指令条件转移指令指定的条件指定的条件cc如果成立,程序转移到由标如果成立,程序转移到由标号号label指定的目标地址去执行指令;条件指定的目标地址去执行指令;条件不成立,则程序将顺序执行下一条指令不成立,则程序将顺序执行下一条指令操作数操作数label是采用短转移,称为相对寻址是采用短转移,称为相对寻址方式方式JccJccJcc label ;条件满足,发生转移:IPIP8位位移量 ;条件不满足,顺序执行第31页,共108页,编辑于2022年,星期三相对寻址方式相对寻址方式Jcc指令的操作数指令的操作数
20、label是一个标号是一个标号一个一个8位位移量,表示位位移量,表示Jcc指令后的那条指令的指令后的那条指令的偏移地址,到目标指令的偏移地址的地址位移偏移地址,到目标指令的偏移地址的地址位移8位位移量是位位移量是相对于相对于当前当前IP的,且距当前的,且距当前IP地地址址128127个单元的范围之内,属于段内个单元的范围之内,属于段内短距离转移短距离转移Jcc目标地址就采用这种目标地址就采用这种相对寻址方式相对寻址方式Jcc指令为指令为2个字节,条件不满足时的顺序个字节,条件不满足时的顺序执行就是当前指令偏移指针执行就是当前指令偏移指针IP加加2JccJcc第32页,共108页,编辑于2022
21、年,星期三Jcc指令的分类指令的分类Jcc指令不影响标志,但要利用标志(表指令不影响标志,但要利用标志(表2.2)。根据利用的标志位不同,)。根据利用的标志位不同,16条指令条指令分成分成3种情况:种情况:1.判断单个标志位状态判断单个标志位状态2.比较无符号数高低比较无符号数高低3.比较有符号数大小比较有符号数大小JccJcc第33页,共108页,编辑于2022年,星期三(1)根据根据单个条件标志单个条件标志的设置情况转移的设置情况转移 格式格式 测试条件测试条件JZ(JE)OPR ZF=1JZ(JE)OPR ZF=1JNZ(JNE)OPR ZF=0JNZ(JNE)OPR ZF=0JS OP
22、R SF=1JS OPR SF=1JNS OPR SF=0JNS OPR SF=0JO OPR OF=1JO OPR OF=1JNO OPR OF=0JNO OPR OF=0JP OPR PF=1JP OPR PF=1JNP OPR PF=0JNP OPR PF=0JC OPR CF=1JC OPR CF=1JNC OPR CF=0JNC OPR CF=0条件转移指令条件转移指令条件转移指令条件转移指令:(只能使用段内直接寻址的只能使用段内直接寻址的只能使用段内直接寻址的只能使用段内直接寻址的 8 8 位位移量位位移量位位移量位位移量 )第34页,共108页,编辑于2022年,星期三 (2)比
23、较比较两个两个两个两个无符号数无符号数,并根据比较结果转移,并根据比较结果转移,并根据比较结果转移,并根据比较结果转移 *格式格式 测试条件测试条件=JNB(JAE,JNC)OPR CF=0 JNBE(JA)OPR CF ZF=0*适用于地址或双精度数低位字的比较适用于地址或双精度数低位字的比较第35页,共108页,编辑于2022年,星期三(3)比较比较两个两个带符号数带符号数,并根据比较结果转移并根据比较结果转移 *格式格式 测试条件测试条件=JNL(JGE)OPR SF JNL(JGE)OPR SF OF=0OF=0=JNLE(J JNLE(JG G)OPR (SF)OPR (SF OF)
24、OF)ZF=0ZF=0适用于带符号数的比较适用于带符号数的比较(4)测试测试CXCX的值,为的值,为0 0则转移则转移 格式格式 测试条件测试条件 JCXZ OPR (CX)=0JCXZ OPR (CX)=0第36页,共108页,编辑于2022年,星期三1.判断单个标志位状态判断单个标志位状态这组指令单独判断这组指令单独判断5个状态标志之一个状态标志之一JZ/JE和和JNZ/JNE:利用零标志:利用零标志ZF,判断结果是否,判断结果是否为零(或相等)为零(或相等)JS和和JNS:利用符号标志:利用符号标志SF,判断结果是正是负,判断结果是正是负JO和和JNO:利用溢出标志:利用溢出标志OF,判
25、断结果是否产生溢,判断结果是否产生溢出出JP/JPE和和JNP/JPO:利用奇偶标志:利用奇偶标志PF,判断结果,判断结果中中“1”的个数是偶是奇的个数是偶是奇JC/JB/JNAE和和JNC/JNB/JAE:利用进位标志:利用进位标志CF,判断结果是否进位或借位判断结果是否进位或借位JccJcc例题例题3.32例题例题3.33例题例题3.34例题例题3.35例题例题3.36第38页,共108页,编辑于2022年,星期三2.比较无符号数高低比较无符号数高低无符号数的大小用高(无符号数的大小用高(Above)低)低(Below)表示)表示利用利用CF确定高低、利用确定高低、利用ZF标志确定相等标志
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第六章 分支结构程序设计PPT讲稿 第六 分支 结构 程序设计 PPT 讲稿
限制150内