C语言内存驻留技术:TSR程序的实现与应用

版权申诉
5星 · 超过95%的资源 1 下载量 13 浏览量 更新于2024-10-25 收藏 7KB RAR 举报
资源摘要信息:"程序内存驻留程序(TSR)8" 标题中提到的"TSR"代表的是"Terminator/Stay-Resident"程序,这是一种在DOS操作系统中广泛使用的程序类型,能够在执行完正常功能后将自己的一部分代码驻留在内存中。TSR程序是由于早期个人电脑资源有限,以及操作系统的功能不完善而产生的,它们通常用于实现一些后台服务,如防病毒监控、定时任务、键盘宏等。 在描述中提到的C语言实现程序内存驻留的函数是"keep()",这是DOS时代的一个特殊函数,专门用于将程序驻留在内存中。"keep()"函数的原型在某些编译器的文档中可以找到,但现代编程环境和操作系统中已经不再使用这样的函数。参数"status"是返回给操作系统的一个出口代码,表示程序执行的状态;"size"参数用于指定驻留内存的长度。在描述中还提到了一个估算内存大小的方法,即使用"size=_SS+_SP/16-_psp"来计算。这里涉及到了DOS中断和寄存器的知识。 - _SS (Stack Segment) 是栈段寄存器,表示当前使用的栈段基址。 - _SP (Stack Pointer) 是栈指针寄存器,表示当前栈顶的位置。 - _psp (Program Segment Prefix) 是程序段前缀,是DOS分配给每个程序的一段内存区域,用于存储程序的状态信息。 因此,"size=_SS+_SP/16-_psp"这个公式计算出的是程序当前占用的内存大小。 描述中还提到了中断的使用,特别是"geninterrupt(0x60)"这个函数调用。在DOS系统中,中断调用是通过INT指令实现的,0x60是一个中断向量号,它在DOS系统中并没有被预定义使用。因此,可以将其拦截用于自己的程序。但是,一旦拦截了这个中断,系统将无法正常使用它,除非重启计算机来恢复中断向量的原始设置。 此外,描述中提到的"此后在其它的任何软件或程序设计中,只要用到了60H号中断,就会在屏幕上显示“This is an example!”的字样"说明了TSR程序的一个重要特性,即能够在中断被调用时执行自己的代码,从而实现对系统底层的控制和响应。 标签"size_0 tsr"表明了该压缩包中的文件可能与内存大小计算和TSR程序有关。而文件列表中的两个文件名,一个是文档格式,可能包含关于TSR程序的更多技术细节或使用示例;另一个是文本文件,可能包含一些相关的下载链接或资源地址,但没有更多具体信息,无法确定其详细内容。 总结来说,通过这个描述,我们可以了解到DOS时代的编程技巧,特别是在内存管理和中断处理方面的知识。这些技巧和概念在现代计算机编程中已经被更高级和安全的技术所取代,但在研究老旧系统或软件复原时仍然具有参考价值。