目录 上一页 下一页 附录A

-292- PC机汇编语言实战精解

TSR.ASM
code


main

msg
start:






tail
main
code


segment
assume
org
proc
jmp
db

mov
mov
int

mov
int
label
endp
ends
end


cs:code,ds:code
100h
near
start
'I am already installe

ah,9
dx,offset msg
21h

dx,offset tail
27h
near


main





;跳过数据区
d in the memory',07h,0dh,0ah,24h

;显示字符串MSG



;将驻留内存部分的长度送入DX寄存器
;驻留内存并返回操作系统
;程序尾



  将此程序编译连接生成一个COM文件,然后在DOS状态下运行这个程序,它会显示一段文字,之后重新回到DOS状态。此时可以用MEM程序观察一下内存中的变化:
C:\ASM\>MEM/C/P[Enter]
  可以看到内存中的确多了个TSR程序,占据了576个字节。如果反复运行TSR.COM,那么内存中就会出现越来越多的TSR,同时内存也会逐渐减少。
  为什么一个很小的程序驻留内存后却占了不少内存?这个问题说起来话就长了。真正驻留在内存中的并不仅仅是程序代码,还有DOS安排的PSP,以及环境信息。而且无论驻留内存的东西总量有多少,DOS为其分配的内存也总是16字节的整数倍。换句话说,即使驻留内存的数据只有一个字节,DOS也要分出16个字节给它。

Copyright © 2004-2015 Reanimator www.cookmoon.org

目录 上一页 下一页 附录A