子程序设计与信息保护恢复

需积分: 40 0 下载量 109 浏览量 更新于2024-07-12 收藏 384KB PPT 举报
"本文主要介绍了信息的保护与恢复在子程序设计中的应用,以及子程序的概念、定义和设计注意事项。通过具体的示例说明了如何在汇编语言中使用宏指令来保护和恢复现场,同时也讨论了主程序与子程序之间的参数传递方式。" 在程序设计中,子程序是一种重要的组织形式,它允许我们将常用的功能封装成独立模块,便于复用和维护。子程序在汇编语言中称为过程,通常由PROC伪指令定义开始,ENDP伪指令定义结束。过程名作为入口地址的符号表示,具有段、偏移和类型属性。 子程序设计的关键点之一是信息的保护与恢复。当子程序调用时,可能会改变一些寄存器的值,为了不影响主程序的正常执行,需要在进入子程序前保存这些寄存器的状态(保护现场),并在子程序结束后恢复它们(恢复现场)。例如,子程序PROG中对AX、BX、CX和DX进行了操作,保护现场的代码会使用PUSH指令将这些寄存器的值压入堆栈,而恢复现场则通过POP指令将值弹出并回写到相应的寄存器。 子程序调用还涉及到参数传递,常见的方法有寄存器法、约定单元法和堆栈法。寄存器法是直接使用特定的寄存器来传递参数;约定单元法是指定内存区域进行数据交换;堆栈法则是通过堆栈来传递和接收参数。如示例中的SOFDLY子程序,使用了堆栈来临时保存BX和CX寄存器,实现了延迟功能。 此外,子程序可以嵌套,甚至在某些情况下可以递归和重入。递归子程序是指子程序在其内部调用自身,而重入子程序则是指在子程序尚未完成时可以被再次调用,这通常需要特殊的设计来确保正确性。 十进制到十六进制转换的程序中,main程序调用了decibin、crlf和binhex三个子程序,体现了子程序在程序结构中的模块化作用,提高了代码的可读性和复用性。decibin子程序接收用户输入的十进制数字,转换成二进制,binhex子程序再将二进制转换成十六进制,并在转换完成后调用crlf子程序打印换行符,整个流程清晰明了。 子程序宏指令在程序设计中扮演着不可或缺的角色,它简化了程序结构,提高了编程效率,而且通过合理的现场保护和恢复以及参数传递机制,使得子程序能够安全、高效地与其他部分协同工作。