【教学课件】第六章子程序设计.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(69页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社第六章 子程序设计一、子程序的定义二、子程序的结构形式三、子程序的设计和调用四、子程序的参数传递方法五、子程序的嵌套和递归调用六、子程序的设计举例七、多模块程序设计八、汇编语言和高级语言的混合编程第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社一、子程序的定义1、子程序的概念和特点2、子程序的定义3、子程序的调用和返回第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社1、子程序的概念和特点子程序:把在程序中多次出现,具有独立功能的程序段写成程序模块,该模块可被多次调用,称之为子程序。特点:
2、可重复使用(调用)具有通用性(可通过入口参数实现)可浮动性(存放位置灵活)可递归性和可重入性第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社子子程程序序的的定定义义是是由由过过程程定定义义伪伪指指令令PROCPROC和和ENDPENDP来完成的。其格式如下:来完成的。其格式如下:过程名过程名 PROCPROC NEAR/FAR NEAR/FAR 过程名过程名 ENDPENDP其其中中PROCPROC表表示示过过程程定定义义开开始始,ENDPENDP表表示示过过程程定定义结束。过程名是过程入口地址的符号表示。义结束。过程名是过程入口地址的符号表示。一般过程名同标号一样,具有三
3、种属性,一般过程名同标号一样,具有三种属性,即段即段属性、偏移地址属性以及类型属性。属性、偏移地址属性以及类型属性。2、子程序的定义、子程序的定义第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社3、子程序的调用和返回v 调用段内直接调用格式:CALL 子程序名功能:将子程序返回地址(断点)入栈 SPSP-2 (SP)IP,并转到子程序入口地址去执行子程序。IPIP+(子程序入口地址与CALL之间的偏移量)第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社例:例:段内直接调用,显示字符段内直接调用,显示字符PCODE SEGMENTASSUME CS:COD
4、ESTART:CALL DISPMOV AH,4CHINT 21HDISP PROCMOV DL,PMOV AH,2INT 21HRETDISP ENDPCODE ENDS END START第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社段内间接调用格式:CALL DST 或 CALL WORD PTR DST(DST为寄存器或字存储器)功能:断点入栈,转子程序执行。SPSP-2 (SP)IP IP(EA)例:CALL BX CALL WORD PTR SI第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社段间直接调用格式:CALL FAR PTR DS
5、T(DST为子程序名)功能:段点(CS和IP)入栈,并转到子程序处执行。SPSP-2 (SP)CSSPSP-2 (SP)IPIP子程序入口地址的偏移地址CS子程序入口地址的段地址第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社例:例:段内间接调用,显示一个字符段内间接调用,显示一个字符PCODE1 SEGMENTASSUME CS:CODE1START:CALL DISPMOV AH,4CHINT 21HCODE1 ENDSCODE2 SEGMENTASSUME CS:CODE2DISP PROC FARMOV DL,PMOV AH,2 INT 21HRETDISP END
6、PCODE2 ENDSEND START第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社段间间接调用例:CALL DWORD PTR BX CALL DWORD PTR ADDRv 返回指令格式:RET功能:返回堆栈中存放的断点,并返回到CALL指令的后续指令继续执行。第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社二、子程序的结构形式v子程序设计考虑四部分:保护现场(保存寄存器原有的内容)、处理部分、恢复现场(恢复寄存器原有的内容)、子程序的返回。“现场”:子程序执行中要用到的寄存器。保护现场:一般通过压栈实现(进入子程序前)恢复现场:一般通过出栈实现
7、(返回子程序前)第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社1 1、子程序的调用方法说明、子程序的调用方法说明(1)子程序名:供调用时使用(2)入口参数:子程序执行需要的数据(3)出口参数(输出参数):说明子程序执行后结果存放在何处。(4)占用寄存器:说明子程序执行时需要使用那些寄存器。那些改变,那些不变。注意:作为存放出口参数用的寄存器不能保护。第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社2信息的保护与恢复信息的保护与恢复 例如:若子程序PROG中改变了寄存器AX,BX,CX,DX的值,则可采用如下方法保护和恢复现场。PROGPROCPUSH
8、AX PUSH BX PUSH CX;保护现场PUSH DX 第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社 POPDX POPCX POPBX;恢复现场 POPAX RET ;返回断点处PROCENDP第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社三、子程序的设计和调用举例例6-2 多字节二进制数加法子程序;子程序名:MBTADD;功能:两个多字节二进制相加;入口参数:SI,DI分别存放两个数的首地址,BX存放和的首地址,CX存放多字节数的长度。;出口参数:BX存放和的首地址第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社MBT
9、ADD PROC PUSH SIPUSH DIPUSH BXPUSH AXPUSH CXCLC ;CF=0保护现场第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社NEXT:MOV AL,SI ADC AL,DI MOV BX,AL INC SI INC DI INC BX LOOP NEXT POP CX POP AX POP BX POP DI POP SIRETMBTADD ENDP返返回回现现场场第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社例:例:求最大公约数子程序。求最大公约数子程序。入口参数:入口参数:AX,BX出口参数:出口参数:CXMC
10、DST PROCPUSH AXPUSH BXPUSH DXAGAIN:XOR DX,DXDIV BXAND DX,DXJZ EXIT MOV AX,BX MOV BX,DX JMP AGAINEXIT:MOV CX,BXPOP DXPOP BXPOP AXRETMCDST ENDP第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社例例6-3:将在将在BUFFERBUFFER为首地址的缓冲区的一个字符串中的所为首地址的缓冲区的一个字符串中的所有大写字母都转换成小写字母,并在屏幕显示出来。有大写字母都转换成小写字母,并在屏幕显示出来。程序清单如下:DATASEGMENTORG20
11、0HSTRINGDB ABsDFAIViop STRLENEQU$-STRING ;字符串长度DATAENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATA;设置数据段MOV DS,AX第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社 MOV SI,OFFSET STRING;取串首地址赋给SI MOV CX,STRLEN;串长送CXCALL STRDTX;调用子程序MOV DX,OFFSET STRING;打印转换后的字符串MOV AH,9INT 21HMOV AH,4CHINT 21H第第6章章 IBM PC 80
12、X86汇编语言程序设计 冶金工业出版社;大小写转换子程序 STRDTXPROCNEAR PUSH AX PUSH CX PUSH SI NEXT:MOV AL,SI CMPCX,0 JZEXIT CMPAL,A JBNEXT1 CMPAL,Z JANEXT1 ADDAL,20H MOV SI,AL NEXT1:INC SI JMPNEXT EXIT:POPSI POPCX POPAX RETSTRDTXENDP CODEENDS ENDSTART第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社四、主程序与子程序参数传递方式n通过寄存器传递参数n通过堆栈传递参数n通过存储单元
13、传递参数第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社1、通过寄存器传递参数 主程序将原始参数放入约定的寄存器,然后调用子程序;子程序把处理结果放入约定的寄存器,并返回主程序。例6-5数据块传送子程序分析:入口参数:源操作块首地址、目的块首地址和块长度。分别用SI、DI和CX来传递参数。第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社DATA SEGMENTBLOCK1 DB 23H,45H,13H,2FH,1AH,94HLENS EQU$-BLOCK1BLOCK2 DB LENS DUP(?)DATA ENDSCODE SEGMENTASSUME C
14、S:CODE,DS:DATASTART:MOV AX,DATA MOV DS,AX 第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社 MOV SI,OFFSET BLOCK1 MOV DI,OFFSET BLOCK2 MOV CX,LENS CALL MOVSTOK MOV AH,4CH INT 21HMOVSTOK PROC NEAR PUSH AXNEXT:MOV AL,SI MOV DI,AL INC SI INC DI LOOP NEXT POP AX RETMOVSTOK ENDPCODE ENDSEND START第第6章章 IBM PC 80X86汇编语言程序
15、设计 冶金工业出版社 例:在ADRM和ADRN单元中分别存放两个正整数M、N,求最大公约数,并将结果存入RESULT单元中。入口参数:AX,BX出口参数:CX算法:(1)判断如MN,转(2),否则交换M、N(2)M/N得到余数R(3)判断若R=0,则N为最大公约数,否则(4)更新被除数和除数,MN,NR,转(2)执行。第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社2、通过堆栈传递参数 主程序的入口参数用堆栈保存,不占用存储单元,在子程序中弹出入口参数,执行完子程序后,释放堆栈空间。例6-5用堆栈传递参数,实现数据块传送。入口参数:源数据块首地址,目的数据块首地址及数据块长
16、度。均用寄存器AX把3个参数压栈。第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社DATA SEGMENTBLOCK1 DB 23H,45H,13H,2FH,1AH,94HLENS EQU$-SOUCE BLOCK2 DB LENS DUP(?)(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATA MOV DS,AX 第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社MOV AX,OFFSET BLOCK1PUSH AXMOV AX,OFFSET BLOCK2PUSH AXMOV A
17、X,LENSPUSH AXCALL MOVSTOKMOV AH,4CHINT 21H第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社MOVSTOK PROC NEARPUSH SI PUSH DI PUSH CXPUSH BP MOV BP,SPMOV SI,BP+14MOV SI,BP+14 MOV DI,BP+12MOV DI,BP+12 MOV CX,BP+10MOV CX,BP+10 LOP1:MOV AL,SI MOV DI,ALINC SIINC DILOOP LOP1 RETMOVSTOK ENDPCODE ENDSEND START第第6章章 IBM PC
18、80X86汇编语言程序设计 冶金工业出版社例:利用堆栈传递参数,实现对2个已定义数组分别求和。主程序与子程序不在同一代码段中。入口参数:数组的首地址和数组长度。使用寄存器AX将入口参数压栈。第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社DATA SEGMENTARYA DB 06H,33H,0AH,88H,13HSUMA DW?ARYB DB 9FH,97H,34H,22H,33,13HSUMB DW?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATA MOV DS,AX第第6章章 IBM PC 80X
19、86汇编语言程序设计 冶金工业出版社 MOV AX,SUMA-ARYAPUSH AXMOV AX,OFFSET ARYAPUSH AXCALL SUMMOV AX,SUMB-ARYBPUSH AXMOV AX,OFFSET ARYBPUSH AXCALL SUM MOV AH,4CHINT 21HCODE ENDS第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社PROCE SEGMENTASSUME CS:PROCE,DS:DATASUM PROC FARPUSH AXPUSH BXPUSH CXPUSH BPMOV BP,SPPUSHFMOV CX,BP+14MOV BX
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教学课件 教学 课件 第六 章子 程序设计
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内