当前位置: 网学 > 编程文档 > 汇编语言 > 正文

用汇编编写DOS下的内存驻留程序(1):绪言

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/18
下载{$ArticleTitle}原创论文样式
统的大部分代码是可以了重的,对于临界资源有相应的PV操作,使得当调度一个新的进程时,能完整地保存前一个里程的现场,当再一次调度被挂起的进程时能象没有被中断一样继续执行.
 对于PC机来说,代码的重入性比较弱,对临界资源没有PC操作.当我们用中断程序启动用户的TSR时,如果只保存标志和寄存器,以及当前进程一些信息,那么只保存了当前程序的一部分现场,DOS的临界资源不会自动保存.在进行TSR设计时,一定要了解PC操作系统的重入性和临界资源.
 重入性总是体现在代码上,所谓可重入代码的指这样的代码,即该代码被执行时还没有从中退出,由于某种原因又一次或者多次进入相同的代码,该代码每次的执行结果都是正确的,就说该代码是可重入的.相反,如果结果不正确,那么就就该代码是不可重入的.下面是一个可重入的子程序的例子:
  Add proc near
   cmp DS:word ptr [si],0
   je DonotAddTheValue
   add ax,DS:word ptr [si]
  DonotAddTheValue:
   ret
  Add endp
 上面的例子不管在其中任何一处再一次执行该子程序,执行结果不变.为了说明,只举多种可能性中的一种.
  mov ds,0100h    ;ds=0100h
  mov si,0010h    ;si=0010h
  mov ax,0001h    ;ax,=0001h
  call Add
  cmp 0100h:word ptr [0010h],0  ;Call Add subroutine
  push ds     ;Interrupted
  push si
  push ax
  mov ds,0200h    ;ds=0200h
  mov si,0200h    ;si=0020h
  mov ax,0003h    ;ax=0003h
  call Add
  cmp 0200h:word ptr [0020h],0  ;0200:0020h=0004h
  jne
  add ax,0200h:word ptr [0020h]  ;ax=0007h
  ret      ;Return
  pop ax     ;ax=0001h
  pop si     ;si=0010h
  pop ds     ;ds=0100h
  iret      ;Return to Add subroutine
  jne
  add ax,0100h:word ptr [0100h]  ;ax=   0001h
        ;0100h:0010h= 0002h
        ;----------------------------------------
        ;ax  = 0003h
  ret
  mov bx,ax
 而下面的子程序是不可重入的:
  Add proc near
   mov Temp,ax
   mov ax,DS:word ptr [si]
   cmp ax,0
   je DonotTheValue
   add ax,Temp
  DonotTheValue:
   ret
  Temp:
   dw  0
  Add endp
 可以利用检查可重入子程序的方法检查这个子程序的不可重入性,尝试一下在" mov ax,DS:word ptr [si]"指令后再次执行该子程序,那么就会出第一次调用返回的结果不对.
  mov ds,0100h    ;ds=0100h
  mov si,0010h    ;si=0010h
  mov ax,0001h    ;ax,=0001h
  call Add
  mov Temp,ax    ;Call Add subroutine
        ;Temp=0001h
  mov ax,0100h:word ptr [0010h]  ;0100h:0010h=0002h
        ;ax=2
  push ds     ;Interrupted
  push si
  push ax
  mov ds,02

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号