汇编课件第5章子程序设计.ppt
《汇编课件第5章子程序设计.ppt》由会员分享,可在线阅读,更多相关《汇编课件第5章子程序设计.ppt(29页珍藏版)》请在三一办公上搜索。
1、2023/10/15,1,第5章 子程序设计,2023/10/15,2,子程序设计,子程序的定义格式子程序与调用程序子程序与主程序的参数传递子程序中寄存器的保护与恢复子程序的嵌套与递归,2023/10/15,3,子程序的定义格式,用伪指令PROC定义过程,格式:过程名 PROC 属性 RET过程名 ENDP,过程名为标识符,是子程序入口的符号地址,属性是指NEAR 或 FAR 类型。,2023/10/15,4,子程序的定义格式,子程序的编写原则能反复使用、提供不同主程序使用采用较好的算法实现,节省内存、提高效率建立相关文档,满足程序使用和维护的需要说明文档中应包括:子程序的名称、功能、入口和出
2、口参数、工作寄存器、工作单元以及创建日期和修改日期等,2023/10/15,5,子程序的定义格式,过程定义举例找出以MSG0为首地址,以#作为结束的字数据区中的最小值。,MSG0DW 123,1ABH,9BCDH,0A99H,10,1234H,1A1BH,#,2023/10/15,6,子程序与调用程序,段内调用供段内调用的子程序必须被定义为NEAR类型,且与主程序位于同一个代码段内。子程序的位置通常在主程序的所有可执行指令之前或之后。不能放在可执行的指令序列内部。,在以 STR 为首地址的缓冲区中存放着一个字符串,以1 作为结束标志,编程统计字符串的长度。,2023/10/15,7,子程序与调
3、用程序,段间调用子程序必须被定义为FAR类型,并与主程序位于不同的代码段中。段间调用子程序举例从键盘上从一个长度小于100的字符串,存入以BUF为首地址的缓冲区。其中如有大写字母则转换成对应的小写字母,字符串以回车键作为结束。子程序实现大写字母的判断,并转换成小写字母,方法是大写字母的 ASCII 码加上 20H 即可,2023/10/15,8,子程序与调用程序,定义子程序CHGE实现字符转换,CODE SEGMENTASSUME CS:CODECHGE PROC FAR CMP AL,A;输入字符在AL中 JB OVER;不是大写字母 CMP AL,Z JA OVER;不是大写字母 ADD
4、AL,20hOVER:RET;返回主程序chge endpcode2 ends,2023/10/15,9,子程序与调用程序,字符串的输入利用BIOS功能调用:AH=00MOV AH,0 INT 16H输入结束的判断CMP AL,0DH,next:mov ah,0int 16hcmp al,0dhjz donecall far ptr chgemov si,alinc sijmp nextdone:mov ax,4c00hint 21h,data segmentbuff db 100 dup(?),$data endscode2 segmentassume cs:code2chge proc f
5、ar cmp al,A jb over cmp al,Z ja over sub al,20hover:retchge endpcode2 ends,code1 segment assume cs:code1,ds:datastart:mov ax,datamov ds,axlea si,buffnext:mov ah,0int 16h;输入字符cmp al,0dhjz donecall far ptr chgemov si,alinc sijmp nextdone:mov ax,4c00hint 21hcode1 endsend start,2023/10/15,11,子程序与调用程序,子程
6、序调用利用调用(CALL)指令和返回(RET)指令实现对子程序的正确调用和返回。CALL指令执行时压入堆栈的地址即是执行RET指令时供子程序返回主程序的地址。段内调用时主调程序和子程序在同一个代码段内CALL指令和RET指令的属性依赖于定义子程序时设置的属性。,2023/10/15,12,子程序与主程序间的参数传递,利用寄存器传递参数最常用的参数传递方式,最为快速直观。由于寄存器的数量有限,故只适于传递少量数目的参数。方法是主程序将子程序的入口参数放在指定的寄存器中,然后调用子程序对指定寄存器中的数据进行处理。,2023/10/15,13,利用寄存器传递参数,从DAT数据区中取数判断正负,并输
7、出相应符号:,DATA SEGMENTDAT DW 9234HDECIML DB 5 DUP(?),0DH,0AH,$DATA ENDS,2023/10/15,14,利用寄存器传递参数,从DAT字数据区中取数,转换成5位十进制数对应的ASCII码:,2023/10/15,15,利用寄存器传递参数,例子现有一DAT为首地址的字数组共有10个元素,编程按5位十进制数形式显示该10个元素,并注明正负号。要求比较正负和十进制转换分别用子程序实现,2023/10/15,16,利用寄存器传递参数,子程序中寄存器的保护与恢复如果子程序中需要使用的寄存器在主程序调用该子程序前已被使用时,需要在调用前对寄存器的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编 课件 章子 程序设计
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-6304449.html