(第13讲)第5章控制转移和程序结构ppt课件.ppt

(第13讲)第5章控制转移和程序结构ppt课件.ppt

ID:58927283

大小:850.50 KB

页数:81页

时间:2020-09-28

(第13讲)第5章控制转移和程序结构ppt课件.ppt_第1页
(第13讲)第5章控制转移和程序结构ppt课件.ppt_第2页
(第13讲)第5章控制转移和程序结构ppt课件.ppt_第3页
(第13讲)第5章控制转移和程序结构ppt课件.ppt_第4页
(第13讲)第5章控制转移和程序结构ppt课件.ppt_第5页
资源描述:

《(第13讲)第5章控制转移和程序结构ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第5章控制转移和程序结构5.4子程序结构补充:DOS功能调用第5章控制转移和程序结构5.1目标地址寻址方式5.1.1转移范围5.1.2寻址方式5.1.3无条件转移指令5.2分支程序结构5.2.1条件转移指令5.2.2单分支结构5.2.3双分支结构5.2.4多分支结构5.3循环程序结构5.3.1循环指令5.3.2计数控制循环5.3.3条件控制循环5.4子程序结构5.4.1子程序指令5.4.2子程序设计5.4.3参数传递5.4.4程序模块5.4子程序结构5.4.1子程序指令5.4.2子程序设计5.4.3参数传递5.4.4程序模块5.4.1子程序指令1.子程序定

2、义2.子程序调用指令CALL3.子程序返回指令RET子程序(过程)定义——有独立功能独立程序模块子程序(过程)定义格式符号名PROC类型(NEAR或FAR)……RET符号名ENDP位于程序段内程序名LablePROC[NEAR或FAR]RETLableENDP子程序调用过程CALLlabel主程序子程序回到CALL指令后的指令处——返回地址例.带子程序(计算变量差)的汇编程序DATASSEGMENTVARADB34HVARBDB12HRESULTDB?DATASENDSCODESSEGMENTASSUMECS:CODES,DS:DATASSTART:MOV

3、AX,DATASMOVDS,AXMOVAL,VARAMOVAH,VARBCALLA_B;调用子程序MOVRESULT,ALMOVAH,4CHINT21HA_BPROC;过程定义SUBAL,AHRET;子程序返回A_BENDP;过程结束CODESENDSENDSTART子程序类型按子程序与调用语句间的位置NEAR类型段内调用:改IPCALL与过程在同一个段FAR类型段间调用:改IP和CSCALL与过程不在同一个段5.4.1子程序指令1.子程序调用指令CALL2.返回指令RET子程序调用时要“有去有回”转移指令执行后“有去无回”1.子程序调用指令CALL格式C

4、ALLlabel;标号指定的子程序CALLreg16/reg32;寄存器指定子程序的地址CALLmem16/mem32;存储单元指定子程序的地址目标地址在CALL指令中相对寻址、直接寻址在CALL指令指定的寄存器或内存单元中间接寻址段内调用(近调用)、段间调用(远调用)(1)CALL指令操作注意不同的子程序属性(NEAR或FAR)形成不同的目标地址,并装入IP或IP与CS将下一条指令(断点)的地址(IP或IP与CS)压入堆栈子程序的首地址装入IP或IP与CS(2)CALL指令分类直接调用段内段间间接调用存储器寄存器段内段间直接调用段内PROC属性:NEAR

5、操作(SP)←(SP)-2((SP)+1,SP)←(当前IP)(IP)←(当前IP)+D16(16位位移量)段间PROC属性:FAR操作(SP)←(SP)-2((SP)+1,SP)←(CS)(SP)←(SP)-2((SP)+1,SP)←(IP)(IP)←PROC的偏移地址(CS)←PROC的段地址下条指令的IP(当前IP)入栈PROC提供的目标地址送入IP当前IP和CS入栈目标地址送入IP和CS例1.段内直接调用codeSEGMENT…CALLsubpXXX:YYY……subpPROCNEAR…RETsubpENDPcodeENDS;代码段;过程定义机器指

6、令中的偏移量,即目标地址与断点地址的差。当前IP;返回;YYY入栈,D16=subp-YYY①③②例2.段内直接调用——两个数据变量X与Y相乘DATASGSEGMENTXDW100YDW10DATASGENDSCODESGSEGMENTASSUMECS:CODESG,DS:DATASGSTART:…CALLSUBP…MOVAH,4CHINT21HSUBPPROCNEARMOVAX,XMOVBX,YMULBXRETSUBPENDPCODESGENDSENDSTART例3.段间直接调用CALL2500H:3600H;段间直接调用;指给出被调用子程序的;段地址和

7、偏移量CALLSUB_PROC1;设SUB_PROC1为FAR型;段间直接调用CSEG1SEGMENT…CALLFARPTRsubp;a处的CS:IP入栈转subpa:……CSEG1ENDSCSEG2SEGMENT…subpPROCFAR…RETsubpENDP…CSEG2ENDS①③②例4.段间直接调用间接调用段内PROC属性:NEAR操作(SP)←(SP)-2((SP)+1,SP)←(当前IP)(IP)←(EA)/REG段间PROC属性:FAR操作(SP)←(SP)-2((SP)+1,SP)←(CS)(SP)←(SP)-2((SP)+1,SP)←(IP

8、)(IP)←(EA)(CS)←(EA+2)寄存器或存储单元提供子程

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。