欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    控制转移指令.ppt

    • 资源ID:92009251       资源大小:255.50KB        全文页数:71页
    • 资源格式: PPT        下载积分:11.9金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要11.9金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    控制转移指令.ppt

    转转移指令移指令注意:注意:段内转移和段间转移段内转移和段间转移段内转移:段内转移:目标地址在当前段内目标地址在当前段内目标地址在当前段内目标地址在当前段内 属性为属性为属性为属性为NEARNEAR段间转移:段间转移:目标地址不在当前段内目标地址不在当前段内目标地址不在当前段内目标地址不在当前段内 属性为属性为属性为属性为FAR FAR 段间转移段间转移转移指令修改(转移指令修改(转移指令修改(转移指令修改(IPIP)转移指令修改转移指令修改转移指令修改转移指令修改(CSCS)和(和(和(和(IPIP)除中断指令,其它指令均不影响标志位除中断指令,其它指令均不影响标志位。直接转移和间接转移直接转移和间接转移直接转移:直接转移:目标地址直接目标地址直接目标地址直接目标地址直接 出现在指令中出现在指令中出现在指令中出现在指令中 间接转移:间接转移:目标地址间接存储目标地址间接存储目标地址间接存储目标地址间接存储 于寄存器或存储单元中于寄存器或存储单元中于寄存器或存储单元中于寄存器或存储单元中 间接转移间接转移1 1、转转移指令移指令两种:两种:JMP 无条件转移指令无条件转移指令Jcc 条件转移指令条件转移指令1)1)、JMPJMP无条件无条件转转移指令移指令五种格式:五种格式:q段内直接短转移段内直接短转移q段内直接近转移段内直接近转移q段内间接转移段内间接转移q段间直接远转移段间直接远转移q段间间接转移段间间接转移(1)1)、段内直接短段内直接短转转移移 格式:格式:JMP SHORT 目的地址标号目的地址标号;(IP)当前(当前(IP)+disp8 注意:注意:双字节指令,机器码:双字节指令,机器码:E8 KK KKKK为为为为disp8disp8,带符号数的补码,范围带符号数的补码,范围带符号数的补码,范围带符号数的补码,范围-128-128+127+127。目的地址的偏移地址目的地址的偏移地址 =当前(当前(IP)+disp8=跳转指令地址跳转指令地址+2+disp8转转移移范范围围:从从当当前前IP位位置置开开始始,向向前前128(减减80H)个字节,向后个字节,向后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)之间)之间)之间)之间,否则出否则出否则出否则出错错错错。实实际际使使用用时时,在在汇汇编编指指令令中中出出现现的的直直接接是是目目的的地地址址的的标标号号,对对于于编编程程者者,关关心心的的是是这这个个标标号号所所指位置是否超出了本指令的跳转范围。指位置是否超出了本指令的跳转范围。(2)2)、段内直接段内直接近近转转移移 格式:格式:JMP NEAR PTR 目的地址标号目的地址标号;(IP)当前(当前(IP)+disp16 注意:注意:三字节指令,机器码:三字节指令,机器码:E8 KK JJ JJKKJJKK为为为为disp16disp16,带符号数补码,范围带符号数补码,范围带符号数补码,范围带符号数补码,范围-32768-32768+32767+32767 目的地址的偏移地址目的地址的偏移地址 =当前(当前(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转移范围:当前段转移范围:当前段(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转移范围:整个存储器转移范围:整个存储器1M空间空间2 2、条件条件转转移指令移指令 两种:两种:比较转移指令比较转移指令判位转移指令判位转移指令均采用相对短转移,即:均采用相对短转移,即:(IP)当前(当前(IP)+disp8转移范围:转移范围:从当前(从当前(IP)所指单元开始所指单元开始-128+127。1)1)、比比较转较转移指令移指令 根据前一条比较指令结果(对标志位的根据前一条比较指令结果(对标志位的影响)作测试条件。决定是否转移。影响)作测试条件。决定是否转移。分为分为:无符号数比较转移指令无符号数比较转移指令 带符号数比较转移指令。带符号数比较转移指令。助记符助记符转移条件转移条件JA/JNBECFZF=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 小于小于/不大于等于不大于等于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 INC 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既既是是一一条条转转移移指指令令,也也可可用用来来控控制制循循环环,但但循循环控制条件与环控制条件与LOOP相反。相反。2 2、循循环环控制指令控制指令三种:三种:LOOPLOOPE/LOOPZLOOPNE/LOOPNZ 格式:格式:LOOPxx符号地址符号地址执行操作执行操作 :(CXCX)(CXCX)-1 -1 此操作不影响标志此操作不影响标志此操作不影响标志此操作不影响标志 检查转移条件检查转移条件检查转移条件检查转移条件xxxx,满足转向目标地址去执行满足转向目标地址去执行满足转向目标地址去执行满足转向目标地址去执行;不满足执行不满足执行不满足执行不满足执行LOOPxxLOOPxx后一条指令后一条指令后一条指令后一条指令助记符助记符循环条件循环条件退出循环条件退出循环条件LOOPCX0CX=0LOOPZCX0且且ZF=1CX=0或或ZF=0LOOPNZCX0且且ZF=0CX=0或或ZF=1只允许段内直接短转移方式,跳转范围只允许段内直接短转移方式,跳转范围只允许段内直接短转移方式,跳转范围只允许段内直接短转移方式,跳转范围-128127-128127都用都用都用都用CXCX作为循环计数器作为循环计数器作为循环计数器作为循环计数器 循环指令说明:循环指令说明:LOOP LOOP退出循环条件是(退出循环条件是(退出循环条件是(退出循环条件是(CXCX)=0=0 LOOPZ LOOPZ和和和和LOOPNZLOOPNZ提供了提前结束循环的可能。提供了提前结束循环的可能。提供了提前结束循环的可能。提供了提前结束循环的可能。在串中查找字符,查到了,退出,在串中查找字符,查到了,退出,用用LOOPNZ,不相等时继续查找。不相等时继续查找。比较两串时,当有字符不等,退出,两字符串不等。比较两串时,当有字符不等,退出,两字符串不等。可用可用LOOPZ,当相等时继续比较。当相等时继续比较。执行完执行完 LOOPNZ或或LOOPZ后,判断后,判断ZF的值的值 对查找字符,对查找字符,ZF=1,说明找到;否则没有找到。说明找到;否则没有找到。对串比较,对串比较,ZF=1,说明两串相等;否则不等。说明两串相等;否则不等。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 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,SEG 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:找到处理找到处理exit:结束出口结束出口用循环指令:用循环指令:LOOPNZ思考:思考:去掉指令去掉指令JMP exit,程序执行结果会怎样?程序执行结果会怎样?PUSH F、POPF可否去掉?若要去掉,程序可否去掉?若要去掉,程序如何修改?如何修改?执行完执行完LOOPNZ后,可否根据后,可否根据CX=0来判断来判断查找结果?查找结果?CX=0,即说明没找到,对吗?即说明没找到,对吗?3 3、过过程程(子程序子程序)调调用指令用指令子程序子程序具有独立功能的独立程序模块。具有独立功能的独立程序模块。子程序(过程)定义格式:子程序(过程)定义格式:子程序名子程序名 PROC 类型类型 子程序名子程序名 ENDP 子程序调用和返回子程序调用和返回调用:调用:CALL 返回:返回:RET过程与调用语句间的位置,有两类:过程与调用语句间的位置,有两类:NEAR类:调用指令与过程在同一个段中类:调用指令与过程在同一个段中FAR类:调用指令与过程不在同一个段中类:调用指令与过程不在同一个段中子程序调用和返回子程序调用和返回调用:调用:CALL 返回:返回:RET1 1)、)、CALLCALL调调用用CALL调用指令有调用指令有4种:种:段内直接调用段内直接调用段间直接调用段间直接调用 段内间接调用段内间接调用段间间接调用段间间接调用CALL指令出现在主程序中指令出现在主程序中(1 1)、)、段内直接段内直接调调用用格式:格式:;(SP)(SP)-2,(SP)+1,(SP)(IP);(IP)(IP)+D16 CALL 子程序名子程序名 第一步,断点入栈保护第一步,断点入栈保护第一步,断点入栈保护第一步,断点入栈保护第二步,装入子程序入口地址第二步,装入子程序入口地址第二步,装入子程序入口地址第二步,装入子程序入口地址 D16 D16 机器指令中的位移量,目的地址和当机器指令中的位移量,目的地址和当机器指令中的位移量,目的地址和当机器指令中的位移量,目的地址和当前(前(前(前(IPIP)地址之差地址之差地址之差地址之差例:例:NEAR NEAR 类型类型类型类型过程过程 code SEGMENT ;code段段 CALL subp ;D16 =subp-XXX XXX:YYYYYY subp PROC NEAR ;过程定义过程定义 RET ;返回返回 subp ENDP code ENDS(2 2)、)、段内段内间间接接调调用:用:格式:格式:;(SP)(SP)-2,(SP)+1,(SP)(IP);(;(IP)OPR的值的值CALL WORD PTR OPR 第一步,断点入栈保护第一步,断点入栈保护第一步,断点入栈保护第一步,断点入栈保护第二步,装入子程序入口地址第二步,装入子程序入口地址第二步,装入子程序入口地址第二步,装入子程序入口地址(操作数的值操作数的值操作数的值操作数的值)OPR OPR 为为为为1616位寄存器,或存储器位寄存器,或存储器位寄存器,或存储器位寄存器,或存储器例:例:CALL WORD PTR SI CALL BX (3 3)、)、段段间间直接直接调调用用格式:格式:(SPSPSPSP)(SPSPSPSP)-2-2-2-2 (SPSPSPSP)+1+1+1+1,(,(,(,(SPSPSPSP)(CSCSCSCS)(SPSPSPSP)(SPSPSPSP)-2-2-2-2 (SPSPSPSP)+1+1+1+1,(,(,(,(SPSPSPSP)(IPIPIPIP)(IPIPIPIP)入口偏移地址(指令第入口偏移地址(指令第入口偏移地址(指令第入口偏移地址(指令第2 2 2 2,3 3 3 3字节字节字节字节 )(CSCSCSCS)DSTDSTDSTDST段地址(指令中第段地址(指令中第段地址(指令中第段地址(指令中第4 4 4 4,5 5 5 5字节字节字节字节 )CALL FAR PTR 子程序名子程序名 例例:CSEG1 SEGMENT CALL FAR PTR subp ;处的处的CS:IP入栈;转入栈;转subp :CSEG1 ENDSCSEG2 SEGMENT subp PROC RET subp ENDPCSEG2 ENDS(4 4)、段)、段间间间间接接调调用:用:格式:格式:(SP)(SP)-2 ((SP+1),(SP))(CS)(SP)(SP)-2 ((SP+1),(SP))(IP)(IP)(EA)(CS)(EA+2)CALL DWORD PTR OPR 例:例:CALL DWORD PTR SI 2 2)、)、RETRET返回返回 RET返回指令有返回指令有4种:种:段内返回段内返回 段间返回段间返回 段内带立即数返回段内带立即数返回 段间带立即数返回段间带立即数返回放在子程序的末尾放在子程序的末尾子程序执行完后返回调用程序继续执行。子程序执行完后返回调用程序继续执行。(1)、)、段内返回:段内返回:格式:格式:格式:格式:RETRET;机器码:机器码:机器码:机器码:C3HC3H或者或者或者或者C2H C2H 执行操作:(执行操作:(执行操作:(执行操作:(IPIP)(SPSP)+1+1,(,(,(,(SPSP)(SPSP)(SPSP)+2+2(2)、)、段间返回:段间返回:格式:格式:格式:格式:RETRET;机器码:机器码:机器码:机器码:CBHCBH或或或或CAH CAH 执行操作:执行操作:执行操作:执行操作:(IPIP)(SPSP)+1+1,(,(,(,(SPSP)(SPSP)(SPSP)+2+2 (CSCS)(SPSP)+1+1,(,(,(,(SPSP)(SPSP)(SPSP)+2+2段内带立即数返回段内带立即数返回格式:格式:RET EXP;执行操作:执行操作:(IP)(SP)+1,(,(SP)(SP)(SP)+2 (SPSP)(SPSP)+D+D1616 EXP是一个表达式是一个表达式计算出来的常数成为机器指令中位移量计算出来的常数成为机器指令中位移量D16,修改堆栈修改堆栈 指针。指针。4 4、中断和中断返回指令中断和中断返回指令 以后学习以后学习2、过程过程(子程序子程序)调用指令调用指令子程序子程序程序中具有独立功能的部分编写成独立程序模块。程序中具有独立功能的部分编写成独立程序模块。子程序(过程)定义子程序(过程)定义格式:格式:符号名符号名 PROC 类型类型 符号名符号名 ENDP 子程序调用和返回指令:子程序调用和返回指令:CALL RET(RETURN)过程有两种类型:过程有两种类型:按过程与调用语句间的位置,过程有两种类型。按过程与调用语句间的位置,过程有两种类型。NEAR类型:调用指令与过程在同一个段中类型:调用指令与过程在同一个段中FAR类型:调用指令与过程不在同一个段中类型:调用指令与过程不在同一个段中CALL指令和指令和RET指令都不影响条件码。指令都不影响条件码。分界段内直接调用段内直接调用格式:格式:CALL DST;(SP)(SP)-2,(SP)+1,(SP)(IP);(IP)(IP)+D16 DST给出转向地址(子程序的入口地址)。给出转向地址(子程序的入口地址)。D16机器指令中的位移量(转向地址和返回地址之差)。机器指令中的位移量(转向地址和返回地址之差)。位移量为位移量为D16范围范围-32768+32767H,占有两个字节。占有两个字节。(1)、)、CALL(Call a procedure)调用调用 CALL调用指令调用指令调用地址由指令给出调用地址由指令给出CALL调用指令有调用指令有4 4种:种:段内直接调用段内直接调用段间直接调用段间直接调用 段内间接调用段内间接调用段间间接调用段间间接调用段内直接调用段内直接调用格式:格式:CALL DST;(SP)(SP)-2,(SP)+1,(SP)(IP);(IP)(IP)+D16 DST给出转向地址(子程序的入口地址)。给出转向地址(子程序的入口地址)。D16机器指令中的位移量(转向地址和返回地址之差)。机器指令中的位移量(转向地址和返回地址之差)。位移量为位移量为D16范围范围-32768+32767H,占有两个字节。占有两个字节。工作过程如下:工作过程如下:例:例:NEAR NEAR 类型类型类型类型过程过程 code SEGMENT ;code段段 CALL subp ;调用调用 指令指令 YYY入栈入栈,D16 =subp-yyy XXX:YYYYYY subp subp PROC NEAR ;过程定义过程定义 RET ;返回返回 subp ENDP code ENDS例:两个数据变量例:两个数据变量X与与Y相乘相乘子程序和调用程序在同一个程序模块中子程序和调用程序在同一个程序模块中子程序和调用程序在同一个程序模块中子程序和调用程序在同一个程序模块中,子程序可以直接访问子程序可以直接访问模块中的变量。模块中的变量。DATASG SEGMENT X DW 100 Y DW 10DATASG ENDSCODESG SEGMENT MAIN PROC FAR ASSUME CS:CODESG,DS:DATA SG START:CALL subp RET MAIN ENDPsubp PROC NEAR MOV AX,XMOV BX,Y MUL BXRETsubp ENDCODESG ENDS END START 段内间接调用:段内间接调用:格式:格式:CALL DST;WORD PTR OPR OPR 为为16位寄存器,位寄存器,或存储器(除立即数以外的任何一种寻址方式)或存储器(除立即数以外的任何一种寻址方式)执行操作:执行操作:执行操作:执行操作:(SP)(SP)-2 (SP)+1,(,(SP)(IP)(IP)(EA)EA由由DST寻址方式所确定的有效地址。寻址方式所确定的有效地址。段间直接调用:段间直接调用:格式:格式:CALL FAR PTR DST;执行操作执行操作执行操作执行操作 :(SP)(SP)-2(SPSP)+1+1,(,(,(,(SPSP)(CSCS)(SP)(SP)-2 (SPSP)+1+1,(,(,(,(SPSP)(IPIP)(IPIP)DSTDST偏移地址(指令中第偏移地址(指令中第偏移地址(指令中第偏移地址(指令中第2 2,3 3字节字节字节字节 )(CSCS)DSTDST段地址(指令中第段地址(指令中第段地址(指令中第段地址(指令中第4 4,5 5字节字节字节字节 )例例:CSEG1 SEGMENT CALL FAR PTR subp;处的处的CS:IP入栈转入栈转subp :CSEG1 ENDSCSEG2 SEGMENT subp PROC RET subp ENDP CSEG2 ENDS 段间间接调用:段间间接调用:格式:格式:CALL DWORD PTR DST执行操作:执行操作:(SP)(SP)-2(SP)+1(SP)+1,(SP)(CS)(SP)(CS)(SP)(SP)-2 (SP)+1(SP)+1,(SP)(SP)(IPIP)(IP)(EA)(IP)(EA)(CS)(EA)+2 (CS)(EA)+2 转子程序入口转子程序入口转子程序入口转子程序入口 EA由由DST的寻址方式确定的有效地址。的寻址方式确定的有效地址。(2)、RET(Reture from procedure)返回返回 RET返回指令返回指令放在子程序的末尾放在子程序的末尾使子程序在功能完成后返回调用程序继续执行。使子程序在功能完成后返回调用程序继续执行。*为能准确返回为能准确返回 ,返回指令类型与调用指令类型相对应。,返回指令类型与调用指令类型相对应。RETRET返回指令有返回指令有返回指令有返回指令有4 4 4 4种:种:种:种:段内返回段内返回段间返回段间返回 段内带立即数返回段内带立即数返回段间带立即数返回段间带立即数返回在子程序调用时,返回地址入栈在子程序调用时,返回地址入栈 返回时:将返回地址出栈返回时:将返回地址出栈 (IP)()(段内或段间)。段内或段间)。(CS)()(段间)。段间)。段内返回:段内返回:格式:格式:RET;机器码:机器码:C3H或者或者C2H 执行操作:执行操作:执行操作:执行操作:(IP)(SP)+1,(,(SP)(SP)(SP)+2段间返回:段间返回:格式:格式:RET;机器码:机器码:CBH或或CAH 执行操作:执行操作:执行操作:执行操作:(IP)(SP)+1,(,(SP)(SP)(SP)+2 (CS)(SP)+1,(,(SP)(SP)(SP)+2段内带立即数返回段内带立即数返回格式:格式:RET EXP;执行操作:执行操作:(IP)(SP)+1,(,(SP)(SP)(SP)+2 (SPSP)(SPSP)+D+D1616 EXP是一个表达式是一个表达式计算出来的常数成为机器指令中位移量计算出来的常数成为机器指令中位移量D16,修改堆栈修改堆栈 指针。指针。例如:例如:RET EXP 堆栈使用情况堆栈使用情况:CODE CODE SEG MENT SEG MENT ASSUME CS:CODE,DS:DATA MAIN PROC FAR START:MOV AX,DATA MOV DS,AX PUSH BX PUSH CX CALL DELCHARCALL DELCHARCS:XXXX MOV AH,4CH INT 21H MAIN ENDPDELCHAR PROC RET 4RET 4DELCHAR ENDPCODE ENDSCODE ENDS END STARTRET EXP 堆栈使用情况堆栈使用情况:段间带立即数返回:段间带立即数返回:格式:格式:RET EXP;执行操作:执行操作:执行操作:执行操作:(IP)(SP)+1,(,(SP)(SP)(SP)+2(CS)(SP)+1,(,(SP)(SP)(SP)+2(SP)(SP)+D16 CALL指令和指令和RET指令都不影响条件码。指令都不影响条件码。例例:学习使用学习使用 段内、段间直接调用指令的使用及堆栈情况段内、段间直接调用指令的使用及堆栈情况主程序主程序 MAIN在一个代码段中在一个代码段中子程序子程序 PRO-A PRO-B PRO-C 在另一个代码段在另一个代码段程序调用关系程序调用关系:另一个代码段另一个代码段 PRO-A PRO-B CALL near ptr PRO-B CALL near ptr PRO-C(IP)=2500H (IP)=4000H CALL near ptr PRO-C RET(IP)=3700H PRO-C RET RET(SP)=0100H MAINCALL far ptr PRO-A(CS)=0500H(IP)=1000H

    注意事项

    本文(控制转移指令.ppt)为本站会员(wuy****n92)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开