- 1、本文档共52页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
11章。子程序结构程序设计
第11章子程序结构程序设计
11.1 概述
11.2 子程序的结构形式
11.3 子程序设计方法
11.4 子程序设计举例
11.5 DOS系统功能调用;
; 11.2 子程序的结构形式
一个完整的子程序结构形式,主要包括以下几个方面的内容:
子程序说明文件
一般子程序是以子程序文件的形式存在,子程序文件又由文字说明和子程序本身两部分构成。子程序文字说明为子程序的使用者提供足够的信息,使程序员不需查看子程序的内部结构或者程序本身,就可以决定是否选用它。子程序说明文件一般应包含以下几项的内容:
① 子程序名:一般取具有顾名思义的标识符;
② 子程序的功能:说明子程序要完成的具体任务;
③ 子程序所选用寄存器名,存储单元的分配情况;
④ 子程序的入口参数:说明子程序运行中所需要的参数及存放位置;
⑤ 子程序的出口参数:说明子程序运行结束后的结果参数及存放位置;
⑥ 子程序示例:通过所举示范性的例子,把具体的参数值代入,使之更具体了解子程序的功能,并且还能起到验证的作用。;例如,有一个子程序说明文件为:
;子程序名:DCB
;功能:完成将一字节的压缩BCD码转换成二进制数。
;输入参数:AL寄存器中存放要转换的压缩BCD码。
;输出参数:CL寄存器中存放转换后的二进制数。
;要使用的寄存器:AX,BX,CX
;示例:输入AL (69H代表十进制数69编码)
输出CL (十进制数69的二进制编码)
; 在什么地方保护,是在主程序中保护,还是在子程序中保护?是编写带有子程序的程序时应该认真考虑的一个问题。
通常情况下在子程序中进行寄存器保护较好。特别是作为一个通用子程序,使用者并不一定了解子程序中将使用了哪些寄存器,若由主程序来保护,在未对子程序做深入了解时,难免带有盲目性,因此在这种情况下寄存器的保护工作应由子程序来承担。即在子程序的开始部分,先进行相关寄存器,主要是在子程序中使用的各寄存器的保护。然后再进行子程序的处理操作。在执行完子程序后,返回前,先恢复各相关寄存器内容后,再执行返回指令,返回到断点处继续执行被打断的程序。
如果在主程序中进行保护,应对在主程序中使用过,在调用主程序返回后仍然要使用原有信息的那些寄存器进行保护,然后再调用子程序。在从子程序返回后,再恢复各寄存器内容,从而不会破坏原来程序对寄存器的使用要求。
从以上分析可知,保护现场和恢复现场的工作既可在主程序中完成,也可在子程序中完成。这可根据用户在程序设计时自行安排。如果子程序设计时,未考虑保护主程序的现场,则可在主程序调用子程序前进行保护现场,从子程序返回后恢复现场。通常在主程序中保护现场,就一定在主程序中恢复;在子程序中保护现场则一定要在子程序中恢复。这样安排,程序结构清楚,使用方便,不易出错。; 1.利用堆栈保护现场与恢复现场
利用进栈指令PUSH,将寄存器的内容保存在堆栈中,恢复时再用出栈指令POP从堆栈中弹出。这种方法较为方便,尤其在设计嵌套子程序和递归子程序时,由于进栈和出栈指令会自动修改堆栈指针,保护和恢复现场层次清晰,只要注意堆栈操作的先进后出的特点,只要正确使用进出栈指令,就不会引起出错,这是一种常用方法。
;2.利用内存单元保护现场与恢复现场
利用数据传送指令将主程序所占用的寄存器内容保存到指定的内存单元中,恢复现场时再用数据传送指令(读操作),从指定的内存单元中取回到对应的寄存器中。这方法使用时不太方便,故较少使用。
BUF DW 10H DUP(?)
┇
SUB1 PROC NEAR
MOV DI,OFFSET BUF
MOV [DI],AX ;保护现场
MOV [DI+2],BX
MOV [DI+4],CX
MOV [DI+6],DX
┇
LEA SI,BUF ;恢复现场
MOV AX,[SI]
MOV BX,[SI+2]
MOV CX,[SI+4]
MOV DX,[SI+6]
RET
SUB1 ENDP ;3.利用寄存器保护现场与恢复现场
在主程序与子程序
您可能关注的文档
- 01章_tcp IP架构.ppt
- +目录+序.doc
- 03-2为试验wjyl教程.ppt
- 01章。使用等价类和边界值方法设计测试用例.ppt
- 03章。常见的组件.ppt
- 03章。子程序的设计.ppt
- 06多媒体技术在计算机试题中的应用.doc
- 06单片机编程.ppt
- 02章计算机系统维护_ 2章计算机主板.ppt
- 07章VB子过程和函数.ppt
- 2023-2024学年广东省深圳市龙岗区高二(上)期末物理试卷(含答案).pdf
- 2023-2024学年贵州省贵阳市普通中学高一(下)期末物理试卷(含答案).pdf
- 21.《大自然的声音》课件(共45张PPT).pptx
- 2023年江西省吉安市吉安县小升初数学试卷(含答案).pdf
- 2024-2025学年广东省清远市九校联考高一(上)期中物理试卷(含答案).pdf
- 广东省珠海市六校联考2024-2025学年高二上学期11月期中考试语文试题.pdf
- 2024-2025学年语文六年级上册第4单元-单元素养测试(含答案).pdf
- 2024-2025学年重庆八中高三(上)月考物理试卷(10月份)(含答案).pdf
- 安徽省安庆市潜山市北片学校联考2024-2025学年七年级上学期期中生物学试题(含答案).pdf
- 贵州省部分校2024-2025学年九年级上学期期中联考数学试题(含答案).pdf
文档评论(0)