控制转移指令.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《控制转移指令.ppt》由会员分享,可在线阅读,更多相关《控制转移指令.ppt(71页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、转转移指令移指令注意:注意:段内转移和段间转移段内转移和段间转移段内转移:段内转移:目标地址在当前段内目标地址在当前段内目标地址在当前段内目标地址在当前段内 属性为属性为属性为属性为NEARNEAR段间转移:段间转移:目标地址不在当前段内目标地址不在当前段内目标地址不在当前段内目标地址不在当前段内 属性为属性为属性为属性为FAR FAR 段间转移段间转移转移指令修改(转移指令修改(转移指令修改(转移指令修改(IPIP)转移指令修改转移指令修改转移指令修改转移指令修改(CSCS)和(和(和(和(IPIP)除中断指令,其它指令均不影响标志位除中断指令,其它指令均不影响标志位。直接转移和间接转移直接
2、转移和间接转移直接转移:直接转移:目标地址直接目标地址直接目标地址直接目标地址直接 出现在指令中出现在指令中出现在指令中出现在指令中 间接转移:间接转移:目标地址间接存储目标地址间接存储目标地址间接存储目标地址间接存储 于寄存器或存储单元中于寄存器或存储单元中于寄存器或存储单元中于寄存器或存储单元中 间接转移间接转移1 1、转转移指令移指令两种:两种:JMP 无条件转移指令无条件转移指令Jcc 条件转移指令条件转移指令1)1)、JMPJMP无条件无条件转转移指令移指令五种格式:五种格式:q段内直接短转移段内直接短转移q段内直接近转移段内直接近转移q段内间接转移段内间接转移q段间直接远转移段间直
3、接远转移q段间间接转移段间间接转移(1)1)、段内直接短段内直接短转转移移 格式:格式:JMP SHORT 目的地址标号目的地址标号;(IP)当前(当前(IP)+disp8 注意:注意:双字节指令,机器码:双字节指令,机器码:E8 KK KKKK为为为为disp8disp8,带符号数的补码,范围带符号数的补码,范围带符号数的补码,范围带符号数的补码,范围-128-128+127+127。目的地址的偏移地址目的地址的偏移地址 =当前(当前(IP)+disp8=跳转指令地址跳转指令地址+2+disp8转转移移范范围围:从从当当前前IP位位置置开开始始,向向前前128(减减80H)个字节,向后个字节
4、,向后127(加(加7FH)个字节。个字节。例:例:JMP SHORT NEXT向前到(向前到(10001000H H)-80H=0F80H-80H=0F80H向后到(向后到(10001000H H)+7FH=107FH+7FH=107FH NEXTNEXTNEXTNEXT所指地址范所指地址范所指地址范所指地址范围围围围:E8HE8H5050H H指令机器码:指令机器码:指令机器码:指令机器码:8 8位位移量位位移量位位移量位位移量D D8 8的范围在(的范围在(的范围在(的范围在(-128 127-128 127)之间)之间)之间)之间,否则出否则出否则出否则出错错错错。实实际际使使用用时时
5、,在在汇汇编编指指令令中中出出现现的的直直接接是是目目的的地地址址的的标标号号,对对于于编编程程者者,关关心心的的是是这这个个标标号号所所指位置是否超出了本指令的跳转范围。指位置是否超出了本指令的跳转范围。(2)2)、段内直接段内直接近近转转移移 格式:格式:JMP NEAR PTR 目的地址标号目的地址标号;(IP)当前(当前(IP)+disp16 注意:注意:三字节指令,机器码:三字节指令,机器码:E8 KK JJ JJKKJJKK为为为为disp16disp16,带符号数补码,范围带符号数补码,范围带符号数补码,范围带符号数补码,范围-32768-32768+32767+32767 目的
6、地址的偏移地址目的地址的偏移地址 =当前(当前(IP)+disp16=跳转指令地址跳转指令地址+3+disp16转转移移范范围围:从从当当前前IP位位置置开开始始,向向前前32768(减减8000H)个个字字节节,向向后后32767(加加7FFFH)个字节。个字节。但不超出本段。但不超出本段。(3)3)、段内段内间间接接转转移移 格式:格式:JMP WORD PTR OPR;(IP)(EA)或(或(IP)(reg16)OPR OPR 为为为为1616位寄存器、存储器位寄存器、存储器位寄存器、存储器位寄存器、存储器例例:JMP AXJMP WORD PTR BPDI转移范围:当前段转移范围:当前
7、段(4)4)、段段间间直接直接转转移移 格式:格式:JMP FAR PTR 目的地址标号目的地址标号 ;(IP)目的地址标号的偏移地址目的地址标号的偏移地址 (CS)目的地址标号的段地址目的地址标号的段地址 JMP FAR PTR NEXT JMP FAR PTR NEXT NEXT NEXT:MOV AL MOV AL,SISI 例:例:转移范围:整个存储器转移范围:整个存储器1M空间空间(5)5)、段段间间间间接接转转移移 格式:格式:JMP DWORD PTR OPR;(IP)OPR低低16位位 (CS)OPR高高16位位 例例:JMP DWORD PTR BPDI转移范围:整个存储器转
8、移范围:整个存储器1M空间空间2 2、条件条件转转移指令移指令 两种:两种:比较转移指令比较转移指令判位转移指令判位转移指令均采用相对短转移,即:均采用相对短转移,即:(IP)当前(当前(IP)+disp8转移范围:转移范围:从当前(从当前(IP)所指单元开始所指单元开始-128+127。1)1)、比比较转较转移指令移指令 根据前一条比较指令结果(对标志位的根据前一条比较指令结果(对标志位的影响)作测试条件。决定是否转移。影响)作测试条件。决定是否转移。分为分为:无符号数比较转移指令无符号数比较转移指令 带符号数比较转移指令。带符号数比较转移指令。助记符助记符转移条件转移条件JA/JNBECF
9、ZF=0高于高于/不低于等于不低于等于JAE/JNB/JNCCF=0 高于或等于高于或等于/不低于不低于/无进位无进位JB/JNAE/JCCF=1 低于低于/不高于等于不高于等于/有进位有进位JBE/JNACFZF=1 低于或等于低于或等于/不高于不高于无符号数比较的结果作为转移条件(无符号数比较的结果作为转移条件(P134)两个带符号数比较的结果作为转移条件两个带符号数比较的结果作为转移条件助记符助记符转移条件转移条件JG/JNLE(SF OF)ZF=0大于大于/不小于等于不小于等于JGE/JNL SF OF=0 大于或等于大于或等于/不小于不小于JL/JNGE SF OF=1 小于小于/不
10、大于等于不大于等于JLE/JNG(SF OF)ZF=1小于或等于小于或等于/不大于不大于例:例:数据段数据段RESULT开始的开始的30个单元中存放着某班个单元中存放着某班30个同学的某门课程的考试成绩。要求统计成绩在个同学的某门课程的考试成绩。要求统计成绩在80分以上的学生人数,将其存放在分以上的学生人数,将其存放在BL中。中。MOV ALMOV AL,8080 LEA DI LEA DI,RESULTRESULT MOV CX MOV CX,3030 MOV BL MOV BL,0 0 AGN AGN:JMP ALJMP AL,DI DI JA NEXT JA NEXT INC BL IN
11、C BL NEXTNEXT:INC DIINC DI DEC CX DEC CX JNZ AGNJNZ AGN HLT HLT ;停机停机停机停机2)2)、判位判位转转移指令移指令 根据当前某标志位的状态来决定是否进行转移根据当前某标志位的状态来决定是否进行转移 助记符助记符转移条转移条件件助记符助记符转移条件转移条件JZ/JEZF=1JNZ/JNEZF=0JSSF=1JNSSF=0JOOF=1JNOOF=0JP/JPEPF=1JNP/JPOPF=0JCCF=1JNCCF=03)3)、判判CXCX转转移指令移指令 助记符助记符转移条件转移条件 JCXZCX=0既既是是一一条条转转移移指指令令,
12、也也可可用用来来控控制制循循环环,但但循循环控制条件与环控制条件与LOOP相反。相反。2 2、循循环环控制指令控制指令三种:三种:LOOPLOOPE/LOOPZLOOPNE/LOOPNZ 格式:格式:LOOPxx符号地址符号地址执行操作执行操作 :(CXCX)(CXCX)-1 -1 此操作不影响标志此操作不影响标志此操作不影响标志此操作不影响标志 检查转移条件检查转移条件检查转移条件检查转移条件xxxx,满足转向目标地址去执行满足转向目标地址去执行满足转向目标地址去执行满足转向目标地址去执行;不满足执行不满足执行不满足执行不满足执行LOOPxxLOOPxx后一条指令后一条指令后一条指令后一条指
13、令助记符助记符循环条件循环条件退出循环条件退出循环条件LOOPCX0CX=0LOOPZCX0且且ZF=1CX=0或或ZF=0LOOPNZCX0且且ZF=0CX=0或或ZF=1只允许段内直接短转移方式,跳转范围只允许段内直接短转移方式,跳转范围只允许段内直接短转移方式,跳转范围只允许段内直接短转移方式,跳转范围-128127-128127都用都用都用都用CXCX作为循环计数器作为循环计数器作为循环计数器作为循环计数器 循环指令说明:循环指令说明:LOOP LOOP退出循环条件是(退出循环条件是(退出循环条件是(退出循环条件是(CXCX)=0=0 LOOPZ LOOPZ和和和和LOOPNZLOOP
14、NZ提供了提前结束循环的可能。提供了提前结束循环的可能。提供了提前结束循环的可能。提供了提前结束循环的可能。在串中查找字符,查到了,退出,在串中查找字符,查到了,退出,用用LOOPNZ,不相等时继续查找。不相等时继续查找。比较两串时,当有字符不等,退出,两字符串不等。比较两串时,当有字符不等,退出,两字符串不等。可用可用LOOPZ,当相等时继续比较。当相等时继续比较。执行完执行完 LOOPNZ或或LOOPZ后,判断后,判断ZF的值的值 对查找字符,对查找字符,ZF=1,说明找到;否则没有找到。说明找到;否则没有找到。对串比较,对串比较,ZF=1,说明两串相等;否则不等。说明两串相等;否则不等。
15、LOOP相当于:相当于:DEC CX JNZ 目的地址标号目的地址标号 例:在数据段例:在数据段DATA开始的开始的30个个单元中存放着某单元中存放着某班班30位同学的某位同学的某门考试成绩,求门考试成绩,求总分和平均成绩,总分和平均成绩,结果分别保存在结果分别保存在DX,AL中。中。修改偏址修改偏址BXCX 成绩数成绩数NDS:BX 首地址首地址(CX)(CX)-1求平均值求平均值 (CX)=0?Y YN N结束结束清零清零DX成绩累加成绩累加 MOV DX MOV DX,0 0 LEA SI LEA SI,DATADATA MOV CX MOV CX,3030 NEXT NEXT:ADD
16、DLADD DL,BYTE PTR SIBYTE PTR SI ADC DH ADC DH,0 0 INC SI INC SI LOOP NEXTLOOP NEXT MOV CL MOV CL,3030 MOV AX MOV AX,DXDX DIV CL DIV CL 例:例:在在string字符串中查找空格字符,串长度为字符串中查找空格字符,串长度为N。修改偏址修改偏址BXYNAL 关键字关键字CX 串长度串长度NDS:BX 串首址串首址判判BX是关键字?是关键字?(CX)(CX)-1找到处理找到处理未找到处理未找到处理 (CX)=0?YN结束出口结束出口 MOV CX,N MOV AX,S
17、EG string MOV DS,AX LEA BX,string MOV AL,20H next:CMP AL,BX JZ findINC BX DEC CX JNZ next 未找到处理未找到处理JMP exit find:找到处理找到处理exit:结束出口结束出口用条件转移:用条件转移:JZMOV CX,NMOV AX,SEG stringMOV DS,AXLEA BX,string MOV AL,20H next:CMP AL,BX PUSH FPUSH FINC BXPOPFPOPFLOOPNZ nextJZ find未找到处理未找到处理 JMP exit find:找到处理找到处理
18、exit:结束出口结束出口用循环指令:用循环指令:LOOPNZ思考:思考:去掉指令去掉指令JMP exit,程序执行结果会怎样?程序执行结果会怎样?PUSH F、POPF可否去掉?若要去掉,程序可否去掉?若要去掉,程序如何修改?如何修改?执行完执行完LOOPNZ后,可否根据后,可否根据CX=0来判断来判断查找结果?查找结果?CX=0,即说明没找到,对吗?即说明没找到,对吗?3 3、过过程程(子程序子程序)调调用指令用指令子程序子程序具有独立功能的独立程序模块。具有独立功能的独立程序模块。子程序(过程)定义格式:子程序(过程)定义格式:子程序名子程序名 PROC 类型类型 子程序名子程序名 EN
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 控制 转移 指令
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内