WEB开发网
开发学院软件开发汇编语言 汇编语言编写DOS下的内存驻留程序 阅读

汇编语言编写DOS下的内存驻留程序

 2007-04-25 09:29:48 来源:WEB开发网   
核心提示: >大多硬件中断如INT 13H,INT 0BH和INT 0CH等都是不可重往返.如果设置一引起寄存器,而在此时被TSR打断,执行类似的设置 ,就会出现非常情况,端口是不会自动保持值的.在进入这些中断时设置一个进入的标志,如果TSR检查到标志已置,则不调用相应的中断. >最好也不要重入INT 10H,I

  >大多硬件中断如INT 13H,INT 0BH和INT 0CH等都是不可重往返.如果设置一引起寄存器,而在此时被TSR打断,执行类似的设置 ,就会出现非常情况,端口是不会自动保持值的.在进入这些中断时设置一个进入的标志,如果TSR检查到标志已置,则不调用相应的中断.
  >最好也不要重入INT 10H,INT 25H,和INT 26H中断.在进入这些中断时设置一个进入的标志,如果TSR检查到标志已置,则不调用 相应的中断.
  >最好能接管INT 1BH,INT 23H和INT 24H中断.
  >保存DOS的数据交换区(SDA)可以安全地使用的DOS的功能.SDA保存了DOS几乎所有内部数据,如果保存(5D06H)和恢复(5D0BH)SDA ,DOS就变成在任何时候都可以重入的了.当DOS处在关键区中时,调用INT 2AH.一旦处在关键区中,就不能改变SDA.在关键区的结束处会 调用INT21H的81H和82H功能.
0.3 内存驻留程序设计一般过程
 驻留程序分成两个部分,即暂驻部分和驻留部分.驻留程序要完成安装检测,激活和删除等过程.
 基本上可抽象成以下几个过程:
  >取中断向量
  >保存旧的中断向量
  >设置或恢复中断向量
  >中断处理程序的链接
  >检测是来呀已驻留
  >执行终止并驻留
  >TSR的删除
 删除TSR比较复杂,必须按下列步骤进行:
  >检查中断向量是否已经被替换.如果没有替换,就恢复所有的中断向量;如果某个中断向量被替换,则跳过下面各步,不能删除该 TSR.
  >TSR的PSP中偏移量16H存放着父进程的PSP.把这个值改为当前进程的地址.
  >把当前PSP设为TSR的PSP
  >执行INT 21H的4CH功能,释放TSR占用的内存,关闭所有文件,并使用PSP中存放的父进程地址和终止地址.
  >这里控制返回到初始进程中,当前PSP也指向初始进程,所有寄存器值包括SS和SP都不确定.
 在执行完上述步骤后,要恢复寄存器.
 如果要无条件地删除TSR,必须监控每个TSR对中断向量表,内存控制块和设备驱动程序链的修改.
0.5 缩写语表
 ASCIZ: 以零结束的ASCII字符串.
 BPD:  "BIOS Parameter Block (BIOS 参数块)"的缩写.含有对驱动器的低级参数的说明.
 CDS:  "Current Directory Structure(当前目录结构)"的缩写,含有某个逻辑驱动器的当前目录,类型和其它信息.
 DPB:  "DOS Drive Parameter Block(DOS驱动器参数块)"的缩写,含有某个逻辑驱动器的介质说明及一些内部信息.
 DPL:  "DOS Parameter List (DOS参数表)"的缩写,该数据结构用来传递参数给SHARE和网络功能调用.
 DTA:  "Disk Transfer Address(磁盘传输地址)"的缩写,指示对磁盘进行数据读写的功能调用不必显式地给出缓冲区地址.
 FAT:  "File Allocation Table(文件分配表)"的缩写,磁盘的文件分配表记录了所使用的簇信息.
 FCB:  "File Control Block(文件控制块)"的缩写,在DOS的1.X版本中,用FCB来记录文件打开的状态..
 IFS:  "Installable File System(可安装的文件系统)"的缩写,它允许一个非DOS格式的介质被DOS所使用. 大多数情况下IFS   与网络驱动器非常相似,尽管IFS最典型的情况是一个本地驱动器而不是一个远程驱动器.
 JFT:  "Job File Table(工作文件表)或Open File Table(打开文件表)"的缩写,程序PSP中的JFT可用来将文件句柄转换成SFT值.
 NCB:  "Network control Block(网络控制块)"的缩写.NCB可用传递对NETBIOS的请求和接受来自NETBIOS处理程序的状态信息.
 PSP:  "Porgram Segment Prefix(程序段前缀)"的缩写.当程序被装入时,PSP为一个预留的256字节的数据区它包含了程序调用时  的命令行内容和一些DOS的内部信息.
 SDA:  "DOS Swappable Data Area (DOS对换数据区)"的缩写.SDA中包含有DOS内部使用的记录某个正在处理的功能调用状态的  所有变量.
 SFT:  "System File Table(系统文件表)"的缩写,SFT是一个DOS内部数据结构,在DOS 2+版本的句柄功能调用中用于管理某个已打  开文件的状态,这就和在DOS1.X中,FCB管理已打开文件状态一样.

上一页  1 2 3 

Tags:汇编语言 编写 DOS

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接