《控制转移指令》PPT课件.ppt
《《控制转移指令》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《控制转移指令》PPT课件.ppt(71页珍藏版)》请在三一办公上搜索。
1、1,3.2.5 控制转移指令(P130),专用于控制程序执行流程。通过对(CS)和(IP)的修改来改变程序执行的流程。,包括四种:,转移指令,过程调用指令,循环控制指令,中断指令,2,注意:,段内转移和段间转移,段内转移:目标地址在当前段内 属性为NEAR,段间转移:目标地址不在当前段内 属性为FAR,段间转移,转移指令修改(IP),转移指令修改(CS)和(IP),3,除中断指令,其它指令均不影响标志位。,直接转移和间接转移,直接转移:目标地址直接 出现在指令中,间接转移:目标地址间接存储 于寄存器或存储单元中,间接转移,4,1、转移指令,两种:,JMP 无条件转移指令,Jcc 条件转移指令,
2、5,1)、JMP无条件转移指令,五种格式:,段内直接短转移段内直接近转移段内间接转移段间直接远转移段间间接转移,6,(1)、段内直接短转移,格式:,JMP SHORT 目的地址标号,;(IP)当前(IP)+disp8,7,注意:,双字节指令,机器码:E8 KK KK为disp8,带符号数的补码,范围-128+127。,目的地址的偏移地址=当前(IP)+disp8=跳转指令地址+2+disp8,转移范围:从当前IP位置开始,向前128(减80H)个字节,向后127(加7FH)个字节。,例:,JMP SHORT NEXT,向前到(1000H)-80H=0F80H向后到(1000H)+7FH=107
3、FH,NEXT所指地址范围:,E8H50H,指令机器码:,10,8位位移量D8的范围在(-128 127)之间,否则出错。,11,实际使用时,在汇编指令中出现的直接是目的地址的标号,对于编程者,关心的是这个标号所指位置是否超出了本指令的跳转范围。,12,(2)、段内直接近转移,格式:,JMP NEAR PTR 目的地址标号,;(IP)当前(IP)+disp16,13,注意:,三字节指令,机器码:E8 KK JJ JJKK为disp16,带符号数补码,范围-32768+32767,目的地址的偏移地址=当前(IP)+disp16=跳转指令地址+3+disp16,14,转移范围:从当前IP位置开始,
4、向前32768(减8000H)个字节,向后32767(加7FFFH)个字节。但不超出本段。,15,(3)、段内间接转移,格式:,JMP WORD PTR OPR,;(IP)(EA)或(IP)(reg16),OPR 为16位寄存器、存储器,16,例:,JMP AXJMP WORD PTR BPDI,转移范围:当前段,17,(4)、段间直接转移,格式:,JMP FAR PTR 目的地址标号,;(IP)目的地址标号的偏移地址(CS)目的地址标号的段地址,18,JMP FAR PTR NEXT NEXT:MOV AL,SI,例:,19,转移范围:整个存储器1M空间,20,(5)、段间间接转移,格式:,
5、JMP DWORD PTR OPR,;(IP)OPR低16位(CS)OPR高16位,21,例:,JMP DWORD PTR BPDI,转移范围:整个存储器1M空间,22,2、条件转移指令,两种:,比较转移指令,判位转移指令,均采用相对短转移,即:(IP)当前(IP)+disp8,转移范围:从当前(IP)所指单元开始-128+127。,23,1)、比较转移指令,根据前一条比较指令结果(对标志位的影响)作测试条件。决定是否转移。,分为:无符号数比较转移指令 带符号数比较转移指令。,无符号数比较的结果作为转移条件(P134),两个带符号数比较的结果作为转移条件,25,例:数据段RESULT开始的30
6、个单元中存放着某班30个同学的某门课程的考试成绩。要求统计成绩在80分以上的学生人数,将其存放在BL中。,26,MOV AL,80 LEA DI,RESULT MOV CX,30 MOV BL,0 AGN:JMP AL,DI JA NEXT INC BL,NEXT:INC DI DEC CX JNZ AGN HLT;停机,27,2)、判位转移指令,根据当前某标志位的状态来决定是否进行转移,28,3)、判CX转移指令,既是一条转移指令,也可用来控制循环,但循环控制条件与LOOP相反。,29,2、循环控制指令,三种:,LOOP,LOOPE/LOOPZ,LOOPNE/LOOPNZ,30,格式:,LO
7、OPxx符号地址,执行操作:,(CX)(CX)-1 此操作不影响标志 检查转移条件xx,满足转向目标地址去执行;不满足执行LOOPxx后一条指令,31,只允许段内直接短转移方式,跳转范围-128127,都用CX作为循环计数器,循环指令说明:LOOP退出循环条件是(CX)=0 LOOPZ和LOOPNZ提供了提前结束循环的可能。,在串中查找字符,查到了,退出,用LOOPNZ,不相等时继续查找。比较两串时,当有字符不等,退出,两字符串不等。可用LOOPZ,当相等时继续比较。执行完 LOOPNZ或LOOPZ后,判断ZF的值 对查找字符,ZF=1,说明找到;否则没有找到。对串比较,ZF=1,说明两串相等
8、;否则不等。,LOOP,相当于:DEC CX JNZ 目的地址标号,例:在数据段DATA开始的30个单元中存放着某班30位同学的某门考试成绩,求总分和平均成绩,结果分别保存在DX,AL中。,35,MOV DX,0 LEA SI,DATA MOV CX,30 NEXT:ADD DL,BYTE PTR SI ADC DH,0 INC SI LOOP NEXT MOV CL,30 MOV AX,DX DIV CL,例:在string字符串中查找空格字符,串长度为N。,MOV CX,N MOV AX,SEG string MOV DS,AX LEA BX,string MOV AL,20H next:
9、CMP AL,BX JZ findINC BX DEC CX JNZ next 未找到处理JMP exit find:找到处理exit:结束出口,用条件转移:JZ,MOV CX,NMOV AX,SEG stringMOV DS,AXLEA BX,string MOV AL,20H next:CMP AL,BX PUSH FINC BXPOPFLOOPNZ nextJZ find未找到处理 JMP exit find:找到处理exit:结束出口,用循环指令:LOOPNZ,39,思考:去掉指令JMP exit,程序执行结果会怎样?PUSH F、POPF可否去掉?若要去掉,程序如何修改?执行完LOO
10、PNZ后,可否根据CX=0来判断查找结果?CX=0,即说明没找到,对吗?,40,3、过程(子程序)调用指令,子程序具有独立功能的独立程序模块。,子程序(过程)定义格式:子程序名 PROC 类型 子程序名 ENDP,子程序调用和返回调用:CALL 返回:RET,41,过程与调用语句间的位置,有两类:NEAR类:调用指令与过程在同一个段中FAR类:调用指令与过程不在同一个段中,子程序调用和返回调用:CALL 返回:RET,42,1)、CALL调用,CALL调用指令有4种:段内直接调用段间直接调用 段内间接调用段间间接调用,CALL指令出现在主程序中,43,(1)、段内直接调用,格式:,;(SP)(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 控制转移指令 控制 转移 指令 PPT 课件

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