汇编语言子程序设计.ppt
《汇编语言子程序设计.ppt》由会员分享,可在线阅读,更多相关《汇编语言子程序设计.ppt(39页珍藏版)》请在优知文库上搜索。
1、第7章 子程序设计汇编语言程序设计汇编语言程序设计本章主要教学内容本章主要教学目的及要求1.理解掌握子程序调用与返回指令;2.掌握子程序设计的基本过程和设计方法;3.能熟练设计子支程序。1.子程序调用与返回指令。2.子程序设计的基本过程和设计方法。第7章 子程序设计汇编语言程序设计汇编语言程序设计7.1 概述7.1.1 子程序设计的概念含义:被独立出来的程序段称为子程序或过程主程序与子程序之间的关系主程序子程序CALL SUB1(断点1:)CALL SUB2(断点2:)HTLSUB1:RET SUB2:RET 第7章 子程序设计汇编语言程序设计汇编语言程序设计7.1.2 子程序的特性(1)功能
2、独立(2)通用性(3)可浮动性(4)可递归和可重入性7.1.3 子程序的优点(1)简化了程序设计过程,使程序设计时间大量节省。(2)缩短了程序的长度,节省了计算机汇编源程序的时间和程序的 存储空间。(3)增加了程序的可读性,便于对程序的修改、调试。(4)方便了程序的模块化、结构化和自顶向下的程序设计。第7章 子程序设计汇编语言程序设计汇编语言程序设计7.2 子程序调用和返回指令7.2.1 子程序调用指令类型段内调用主程序和子程序处在同一代码段,只改变IP值段间调用主程序和子程序处不在同一代码段,既改变IP值也改变CS值段内直接调用格式: CALL DST/NEAR PTR DST 功能:(1)
3、SPSP-2 (SP)IP (2)IPIP+D16段内间接调用格式: CALL DST/WORD PTR DST 功能:(1)SPSP-2 (SP)IP (2)IP(EA)例:CALL MULL段间直接调用格式: CALL FAR PTR DST 功能:(1) SP SP-2(SP) CS SP SP-2(SP) IP (2) IP子程序偏移地址 CS子程序段地址例:CALL BX CALL WORD PTR SI段间直接调用格式: CALL DWORD PTR DST 功能:(1) SP SP-2(SP) CS SP SP-2(SP) IP (2) IP(EA) CS(EA+2)例:CALL
4、 FAR PTR MULL 例:CALL DWORD PTR BX 第7章 子程序设计汇编语言程序设计汇编语言程序设计从栈顶弹出一个字数据送入IP7.2.2 返回指令 功能:从堆栈的栈顶弹出数据作为返回地址含义:实现子程序执行完后要返回主程序的指令分类:段内返回和段间返回从栈顶弹出两个字数据分别送入IP和CS类型段内返回RET格式: RET 功能:IP(SP) SPSP+2RET n格式: RET n功能:IP(SP) SP SP+2 SP SP+n段间返回RET格式: RET 功能:IP (SP) SP SP+2 CS (SP) SP SP+2RET n格式: RET n功能:IP (SP)
5、 SP SP+2 CS (SP) SP SP+2 SP SP+n第7章 子程序设计汇编语言程序设计汇编语言程序设计7.3 子程序的定义、调用和返回7.3.1 子程序定义1.子程序定义伪指令格式: 子程序名 PROC NEAR/FAR RET 子程序名 ENDP说明: (1)主程序和子程序在同一代码段中,定义为NEAR型。 (2)主程序和子程序不在同一代码段中,定义为FAR型。 (3)可将主程序定义为FAR型,看作是DOS调用的一个过程。第7章 子程序设计汇编语言程序设计汇编语言程序设计2.子程序调用方法说明包括:(1)子程序名;(2)子程序功能;(3)占用寄存器;(4)入口参数;(5)输出参数
6、;(6)子程序调用示例。第7章 子程序设计汇编语言程序设计汇编语言程序设计3.现场保护和现场恢复现场保护:在子程序的功能实现前把将要用到的寄存器中的原有内 容保存起来现场恢复:子程序的功能实现后,将数据取出再送回原来的寄存器中例:子程序SUB1中用到了寄存器AX、BX、CX、DX,则可能的现场保护和现场恢复如下: SUB1 PROC PUSH AX ;现场保护 PUSH BX PUSH CX PUSH DX ;子程序功能段 POP DX ;现场恢复 POP CX POP BX POP AX RET SUB1 ENDP注意:现场保护应与现场恢复的顺序正好相反。第7章 子程序设计汇编语言程序设计汇
7、编语言程序设计4.子程序的设计方法(1)利用过程定义伪指令声明;(2)利用RET指令返回主程序;(3)对堆栈的压入和弹出操作要成对使用;(4)现场保护和现场恢复;(5)应安排在代码段的主程序之外,也可以放在主程序开始之前;(6)允许嵌套和递归;(7)可以与主程序共用一个数据段,也可以使用不同的数据段;(8)编写可以很灵活,但一定要保证堆栈操作的正确性;(9)处理好子程序和主程序间的参数传递问题(见7.4节);(10)提供必要的子程序说明信息。第7章 子程序设计汇编语言程序设计汇编语言程序设计子程序定义应用举例【例7-1】求两个数的最大公约数子程序子程序调用方法说明: ;子程序名:MCDST ;
8、功 能:求两个正整数的最大公约数; ;入口参数:AX和BX中存放两个正整数; ;出口参数:CX中存放求得的最大公约数; ;寄存器占用:使用AX、BX、CX、DX寄存器,CX中内容被改变, AX、BX、DX中的内容保持不变。子程序清单:MCDST PROC NEAR/FAR PUSH AX ;保护现场 PUSH BX PUSH DX AGAIN:XOR DX,DX ;AX值扩展到DXAX中 DIV BX ;商存入AX,余数存入DX AND DX,DX JZ EXIT ;余数为0转EXIT MOV AX,BX ;余数不为0更新被除数 MOV BX,DX ;更新除数 JMP AGAIN ;继续循环
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 子程序 设计