驻留程序设计论文精选.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
驻留程序设计论文精选

驻留程序设计 1.前言 1 1.1 驻留程序的特点 2 1.2 驻留程序的结构 2 2. 驻留程序常用的驻留方法 3 2.1中断驻留法 3 2.1.1常驻程序基本结构 3 2.2搬迁驻留法 4 2.1.1收寻内存控制块法 4 2.2.2内存空闲区搬迁法 6 2.2.3高端地址搬迁法 6 2.3驻留程序的撤消 6 2.3.1利用DOS的INT49h功能调用来进行释放 6 2.3.2修改内存控制块标志的释放方法 7 2.3.3合并内存块法释放驻留程序 7 2.4避免重复驻留 7 2.5驻留程序的激活 8 3 驻留程序的调试和激活 8 3.1 TSR程序中的引导部分 8 3.2 TSR程序中的驻留部分 10 3.3 TSR的激活机制与方式 12 3.4 防止TSR程序的重复驻留 12 3.5 TSR程序的调试 12 4驻留程序设计要点 13 5 参 考 文 献 14 1.前言 2.1中断驻留法 2.1.1常驻程序基本结构 MOV AH, 52h INT 211r 该操作的返回值为:E:S: (13X一2〕指向第一个MCI}段地址,其偏移地址值为口.下一个MCB的具体地址的计算公式是: 下一个内存控制块MCl3段地址二本内存控制块地址+本内存分配块MAB大小+1 (3)此种驻留方法的具体原理如下: 通过INT21 h一号的52h号子功能调用确定第一个MCB段地址,然后根据第一个MCB段地址分别计算出其他MCB段地址,在获得其他MCB段地址的过程中,分别查看该MCB的第O1和02位的值是否为0,为0则表示该内存块为空闲块,即可将需驻留部分直接移到该空闲块中,实现驻留。 具体作法是:在查出_内存块为空闲块后,将本内存块的分配块的大小减去需驻留部分的大小,然后再将其差值放回到MCB的相应位中,之后再将需驻留的部分搬迁到原属于本内存块,而现在本MCB管理不着的空间中。 2.2.2内存空闲区搬迁法 DOS系统中存在着许多间隙,有的空隙还相当大,这些间隙为驻留程序提供了很大方便。可以将需要驻留的程序直接搬迁到该空闲区中,即可实现驻留,它既在DOS的正常管理之下,又不破坏DOS。此种间隙有很多,如:以ROM BIOS通讯区为例,其占用内存的40:00处,总共有256个字节,但是实际上IBM PC /XT仅使用到40:82h单元,最后122个字节未 被使用,此种间隙中最大而又最完整的位于.50:00一50: 1 FF,这块内容,在分析中发现DOS系统只在该区建立了一个软盘基数表(IFH),除此之外,添人任何值,都不构成对DOS系统正常运行的威胁.但此种方法有一个缺陷,就是它只适用于小的驻留程序使用,且较易引发病毒.因此,从这种角度来看它不是一种优秀的方法. 2.2.3高端地址搬迁法 DOS系统在004 :0013h处有一两字节的变量表示系统有多少可用的内存分配空间。可选用适当的方法将40 : 13字中的内容加以修改,从而减少DOS系统可分配空间,为驻留程序开辟一个足够大的空间.利用这种方法开辟的空间均在内存高端再通过一定的算法将内存高端地址算出,然后将需驻留部分搬迁到此处即可。计算内存高端地址的算法为: 高端地址=((0413)一驻留程序大小)x6一07cOh 2.3驻留程序的撤消 有许多TSR程序都没有释放的功能,这对于一些占用内存较多的ASR程序来说,会给用户带来很多不便,因此,对于一个驻留程序来说,在发挥其作用之后最好采用一定手段将其释放.对于驻留程序的释放,可以采用三种方法: 2.3.1利用DOS的INT49h功能调用来进行释放 该种方法主要是用来释放那些通过对内存块操作而被驻留的程序,如上述收寻内存控制块法。具体做法是:在程序驻留时,首先要设置驻留标志,并保存原内存块大小,在释放时,就可通过收寻该标志的方法找到被驻留程序所在的内存块,再算出其所在内存块的起始地址,并根据内存块的大小采用INT49h加以释放。 2.3.2修改内存控制块标志的释放方法 这种方法是在驻留时首先将原内存块的一大小保存起来,并设置驻留标志。在释放时,根据驻留标志,寻找符合条件的块。找到之后,将该块的MCB的第01和02位送人0值,即将该块标志成空闲块,并将保存的原内存块的大小重新赋给MCB的第03和04位,这样当再有程序加载内存时,此驻留程序就完全可以覆盖掉,进而实现了驻留程序的释放。 2.3.3合并内存块法释放驻留程序 系统加载执行一个程序时DUS至少给程序分配两个内存块,一个是包含环境的内存块,另一个是以PSP开头的内存块,包含有程序本身所有的代码和数据.而此种方法主要是通过对驻留程序的环境块和本身所在的内存块进行操作来实现的,即:在实现驻留时,首先保存当前程序的PSP段,然后根据PSP中2ch字节处的值获得程序的环境块的段值,再根据内存控制块中

文档评论(0)

feixiang2017 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档