1 / 52
文档名称:

第11章子程序结构程序设计.ppt

格式:ppt   大小:215KB   页数:52页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

第11章子程序结构程序设计.ppt

上传人:dyx110 2019/11/22 文件大小:215 KB

下载得到文件列表

第11章子程序结构程序设计.ppt

相关文档

文档介绍

文档介绍::(1)简化了程序设计过程,使程序设计时间大量节省;(2)缩短了程序的长度,节省了程序的存储空间;(3)增加了程序的可读性,使程序更加清晰,便于对程序的修改与调试;(4)方便了程序的模块化、结构化和自顶向下的程序设计过程。,主要包括以下几个方面的内容:子程序说明文件一般子程序是以子程序文件的形式存在,子程序文件又由文字说明和子程序本身两部分构成。子程序文字说明为子程序的使用者提供足够的信息,使程序员不需查看子程序的内部结构或者程序本身,就可以决定是否选用它。子程序说明文件一般应包含以下几项的内容:①子程序名:一般取具有顾名思义的标识符;②子程序的功能:说明子程序要完成的具体任务;③子程序所选用寄存器名,存储单元的分配情况;④子程序的入口参数:说明子程序运行中所需要的参数及存放位置;⑤子程序的出口参数:说明子程序运行结束后的结果参数及存放位置;⑥子程序示例:通过所举示范性的例子,把具体的参数值代入,使之更具体了解子程序的功能,并且还能起到验证的作用。例如,有一个子程序说明文件为:;子程序名:DCB;功能:完成将一字节的压缩BCD码转换成二进制数。;输入参数:AL寄存器中存放要转换的压缩BCD码。;输出参数:CL寄存器中存放转换后的二进制数。;要使用的寄存器:AX,BX,CX;示例:输入AL=01101001B(69H代表十进制数69编码)输出CL=01000101B(十进制数69的二进制编码)子程序的现场保护和现场恢复在编写子程序时,要选用各种寄存器。有些寄存器在调用子程序前,可能已被使用过,并且在执行完子程序返回后,仍然要用到这些寄存器的内容,这样主程序与子程序在寄存器的使用上就有可能发生冲突。因此,就出现了如何保护寄存器的问题,也就是现场保护和现场恢复的问题必须妥善解决。如果调用程序(主程序)在调用子程序之前,所有寄存器都属于空闲待用状态,在这种情况下,就没有必要考虑寄存器的保护问题。只要正确安排哪些寄存器作为入口参数或出口参数即可;如果寄存器不空闲(后续指令还使用这些寄存器中的内容),则就要考虑对其施加保护。需要保护的寄存器,它将在子程序中被使用,而返回到调用程序后仍然需要使用其原有内容的那些寄存器。即保护调用程序和子程序两者在使用上发生冲突的那些寄存器。但在编程时,一时很难弄清哪些是有冲突的寄存器,一种较为简单的方法是把所有的寄存器加以保护。在什么地方保护,是在主程序中保护,还是在子程序中保护?是编写带有子程序的程序时应该认真考虑的一个问题。通常情况下在子程序中进行寄存器保护较好。特别是作为一个通用子程序,使用者并不一定了解子程序中将使用了哪些寄存器,若由主程序来保护,在未对子程序做深入了解时,难免带有盲目性,因此在这种情况下寄存器的保护工作应由子程序来承担。即在子程序的开始部分,先进行相关寄存器,主要是在子程序中使用的各寄存器的保护。然后再进行子程序的处理操作。在执行完子程序后,返回前,先恢复各相关寄存器内容后,再执行返回指令,返回到断点处继续执行被打断的程序。如果在主程序中进行保护,应对在主程序中使用过,在调用主程序返回后仍然要使用原有信息的那些寄存器进行保护,然后再调用子程序。在从子程序返回后,再恢复各寄存器内容,从而不会破坏原来程序对寄存器的使用要求。从以上分析可知,保护现场和恢复现场的工作既可在主程序中完成,也可在子程序中完成。这可根据用户在程序设计时自行安排。如果子程序设计时,未考虑保护主程序的现场,则可在主程序调用子程序前进行保护现场,从子程序返回后恢复现场。通常在主程序中保护现场,就一定在主程序中恢复;在子程序中保护现场则一定要在子程序中恢复。这样安排,程序结构清楚,使用方便,不易出错。,将寄存器的内容保存在堆栈中,恢复时再用出栈指令POP从堆栈中弹出。这种方法较为方便,尤其在设计嵌套子程序和递归子程序时,由于进栈和出栈指令会自动修改堆栈指针,保护和恢复现场层次清晰,只要注意堆栈操作的先进后出的特点,只要正确使用进出栈指令,就不会引起出错,这是一种常用方法。EARPUSHAX;PUSHBX;保护现场PUSHCX;PUSHDX; ┇;子程序处理POPDX;POPCX;恢复现场POPBX;POPAX;RETSUB1ENDP现场保护和现场恢复常采用的方法:,恢复现场时再用数据传送指令(读操作),从指定的内存单元中取回到对应的寄存器中。这方法使用时不太