迷惑-----关于中断的问题
我想自己设一个中断,由其他程序来调用。请问设中断的程序应如何编才能让我的中断服务程序驻留内存而不会被其它程序覆盖? 问题点数:20、回复次数:14Top
1 楼cui(蚊子王)回复于 2001-05-21 19:22:00 得分 2
内存驻留--INT 31H中断Top
2 楼wjyasd(金子鱼)回复于 2001-05-21 19:44:00 得分 1
tsr 吧!
找一找早期的DOS的书籍,应该有介绍的。Top
3 楼jink(毁人不倦)回复于 2001-05-21 22:38:00 得分 2
回复人:cui(蚊子王) (2001-5-21 19:22:00) 得0分
内存驻留--INT 31H中断
好象不是这样哦!!!应是
mov ah,31h
int 21hTop
4 楼cc6(菜+6)回复于 2001-05-22 00:27:00 得分 2
mov dx,xxxx ;xxxx最好是你的中断程序的最后一个字节地址+10H
int 27h
绝对管用。
Top
5 楼zzyspeak(一沙鸥)回复于 2001-05-22 19:19:00 得分 0
能告诉 int 31h 的用法么?
是放在驻留程序的结尾么?Top
6 楼Leemaasn(小鸟)回复于 2001-05-23 23:16:00 得分 2
我有一个内存驻留的代码,要是找得到的话,给你如何?Top
7 楼phy(被爱捶死)回复于 2001-05-24 01:00:00 得分 2
应该来说你能覆盖上去的程序,任何程序都能覆盖
所以要绝对禁止是不可能的
中断驻留的方法正如楼上所说的:
去找DOS编程的书看Top
8 楼cui(蚊子王)回复于 2001-05-24 07:37:00 得分 2
哦,我说错了,是DOS中断(INT 21H)的第31H功能。Top
9 楼nelsonc(软件兔)回复于 2001-05-24 10:17:00 得分 2
int 27h是早期dos提供的功能,已经不用了。
新的程序应该使用dos中断int 21h的功能31h。al:是返回代码,dx:保留内存(以节[16bytes]为单位计算)
如果在Windows下使用,我可以提供更多资料。Top
10 楼cc6(菜+6)回复于 2001-05-25 14:37:00 得分 3
int27h还能使用吗?
各位可以立即在WINDOWS的DOS窗口下做以下实验:
debug tsr.com
-a 100
XXXX:0100 mov dx,ffff
XXXX:0103 int 27
-rcx
:5
-w
-q
tsr
mem /c/p
这时你将会发现tsr已经驻留在内存,共64KB。说明DX=驻留空间容量是以字节为单位而不是以节[16bytes]为单位!dos中断int 21h的功能调用31h才是以节[16bytes]为单位!它的使用方法是:
mov ah,31h
mov bx,XXXX ;驻留内存空间(以节为单位)
int 21h
例如:一个程序需要驻留内存f000h个字节,使用dos中断int 21h的功能调用31h来实现:
mov ah,31h
mov bx,f000h
mov cl,4
shr bx,cl ;这条指令执行后BX=F00H
int 21h
也就是:
BX=需要驻留内存的总字节数÷10H。
Top
11 楼totodo(土豆仙)回复于 2001-05-25 19:47:00 得分 0
嗯,,很有道理Top
12 楼totodo(土豆仙)回复于 2001-05-25 20:41:00 得分 0
Leemaasn(Pony)给我一个,我也想搞明白.Top
13 楼loner()回复于 2001-05-25 21:01:00 得分 0
无聊的问题。。。。。
。。。。。。。。。。
。。。。。。。。。。
。。。。。。。。。。Top
14 楼chylc(黑黑)回复于 2001-05-27 12:32:00 得分 2
MOV DX,OFFSET BEGIN
MOV CL,4
SHR DX,CL
INC DX
MOV AL,0
MOV AH,31H
INT 21H ;驻留内存Top




