《ibmpc80x86汇编语言程序设计》ppt电子课件教案第六章子程序设计

《ibmpc80x86汇编语言程序设计》ppt电子课件教案第六章子程序设计

ID:33527909

大小:140.00 KB

页数:69页

时间:2018-05-25

《ibmpc80x86汇编语言程序设计》ppt电子课件教案第六章子程序设计_第1页
《ibmpc80x86汇编语言程序设计》ppt电子课件教案第六章子程序设计_第2页
《ibmpc80x86汇编语言程序设计》ppt电子课件教案第六章子程序设计_第3页
《ibmpc80x86汇编语言程序设计》ppt电子课件教案第六章子程序设计_第4页
《ibmpc80x86汇编语言程序设计》ppt电子课件教案第六章子程序设计_第5页
资源描述:

《《ibmpc80x86汇编语言程序设计》ppt电子课件教案第六章子程序设计》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第六章子程序设计一、子程序的定义二、子程序的结构形式三、子程序的设计和调用四、子程序的参数传递方法五、子程序的嵌套和递归调用六、子程序的设计举例七、多模块程序设计八、汇编语言和高级语言的混合编程一、子程序的定义1、子程序的概念和特点2、子程序的定义3、子程序的调用和返回1、子程序的概念和特点子程序:把在程序中多次出现,具有独立功能的程序段写成程序模块,该模块可被多次调用,称之为子程序。特点:①可重复使用(调用)②具有通用性(可通过入口参数实现)③可浮动性(存放位置灵活)④可递归性和可重入性子程序的定义是由过程定义伪指令PROC和ENDP来完成的。其格式如下:过程名P

2、ROC[NEAR/FAR]┆过程名ENDP其中PROC表示过程定义开始,ENDP表示过程定义结束。过程名是过程入口地址的符号表示。一般过程名同标号一样,具有三种属性,即段属性、偏移地址属性以及类型属性。2、子程序的定义3、子程序的调用和返回调用①段内直接调用格式:CALL子程序名功能:将子程序返回地址(断点)入栈SP←SP-2(SP)←IP,并转到子程序入口地址去执行子程序。IP←IP+(子程序入口地址与CALL之间的偏移量)例:段内直接调用,显示字符PCODESEGMENTASSUMECS:CODESTART:CALLDISPMOVAH,4CHINT21HDISP

3、PROCMOVDL,’P’MOVAH,2INT21HRETDISPENDPCODEENDSENDSTART②段内间接调用格式:CALLDST或CALLWORDPTRDST(DST为寄存器或字存储器)功能:断点入栈,转子程序执行。SP←SP-2(SP)←IPIP←(EA)例:CALLBXCALLWORDPTR[SI]③段间直接调用格式:CALLFARPTRDST(DST为子程序名)功能:段点(CS和IP)入栈,并转到子程序处执行。SP←SP-2(SP)←CSSP←SP-2(SP)←IPIP←子程序入口地址的偏移地址CS←子程序入口地址的段地址例:段内间接调用,显示一个

4、字符PCODE1SEGMENTASSUMECS:CODE1START:CALLDISPMOVAH,4CHINT21HCODE1ENDSCODE2SEGMENTASSUMECS:CODE2DISPPROCFARMOVDL,’P’MOVAH,2INT21HRETDISPENDPCODE2ENDSENDSTART④段间间接调用例:CALLDWORDPTR[BX]CALLDWORDPTRADDR返回指令格式:RET功能:返回堆栈中存放的断点,并返回到CALL指令的后续指令继续执行。二、子程序的结构形式子程序设计考虑四部分:保护现场(保存寄存器原有的内容)、处理部分、恢复现场

5、(恢复寄存器原有的内容)、子程序的返回。“现场”:子程序执行中要用到的寄存器。保护现场:一般通过压栈实现(进入子程序前)恢复现场:一般通过出栈实现(返回子程序前)1、子程序的调用方法说明(1)子程序名:供调用时使用(2)入口参数:子程序执行需要的数据(3)出口参数(输出参数):说明子程序执行后结果存放在何处。(4)占用寄存器:说明子程序执行时需要使用那些寄存器。那些改变,那些不变。注意:作为存放出口参数用的寄存器不能保护。2.信息的保护与恢复例如:若子程序PROG中改变了寄存器AX,BX,CX,DX的值,则可采用如下方法保护和恢复现场。PROGPROCPUSHAXP

6、USHBXPUSHCX;保护现场PUSHDX┆┆POPDXPOPCXPOPBX;恢复现场POPAXRET;返回断点处PROCENDP三、子程序的设计和调用举例例6-2多字节二进制数加法子程序;子程序名:MBTADD;功能:两个多字节二进制相加;入口参数:SI,DI分别存放两个数的首地址,BX存放和的首地址,CX存放多字节数的长度。;出口参数:BX存放和的首地址MBTADDPROCPUSHSIPUSHDIPUSHBXPUSHAXPUSHCXCLC;CF=0保护现场NEXT:MOVAL,[SI]ADCAL,[DI]MOV[BX],ALINCSIINCDIINCBXLOO

7、PNEXTPOPCXPOPAXPOPBXPOPDIPOPSIRETMBTADDENDP返回现场例:求最大公约数子程序。入口参数:AX,BX出口参数:CXMCDSTPROCPUSHAXPUSHBXPUSHDXAGAIN:XORDX,DXDIVBXANDDX,DXJZEXITMOVAX,BXMOVBX,DXJMPAGAINEXIT:MOVCX,BXPOPDXPOPBXPOPAXRETMCDSTENDP例6-3:将在BUFFER为首地址的缓冲区的一个字符串中的所有大写字母都转换成小写字母,并在屏幕显示出来。程序清单如下:DATASEGMENTORG200HSTRING

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

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

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