中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-08-01 11:16
中国DOS联盟论坛 » DOS开发编程 & 发展交流 (开发室) » [求助]请问一个关于dos 中断的取代问题!(灌水免入!) 查看 1,024 回复 6
楼 主 [求助]请问一个关于dos 中断的取代问题!(灌水免入!) 发表于 2004-06-03 00:00 ·  中国 河北 秦皇岛 联通
中级用户
★★
积分 258
发帖 58
注册 2003-10-11 00:00
22年会员
UID 11070
性别 男
状态 离线
小弟用的各版本的DOS截图程序都无法满足需要,所以打算写一个程序来用
但是出现一个问题:
因为程序要驻留内存并监听,所以我打算用dos int 21h 功能 25h更换
int指向地址,但是我以后如何使用我已经保存好的原BIOS中断
16h的地址来做到将普通的键盘按下转入原来的int地址?

请帮忙解决,不胜感激!!!
(灌水免入!!!!!!!!!!!!!!!!!!!!!!!!)
奋发向上!!!
2 发表于 2004-06-03 00:00 ·  中国 河北 秦皇岛 联通
中级用户
★★
积分 258
发帖 58
注册 2003-10-11 00:00
22年会员
UID 11070
性别 男
状态 离线
有人可以回答吗????
奋发向上!!!
3 发表于 2004-06-04 00:00 ·  中国 湖北 武汉 鹏博士宽带
中级用户
★★
积分 286
发帖 59
注册 2003-04-08 00:00
23年会员
UID 1437
性别 男
状态 离线
是用汇编编写吗?如果是的,直接call XXXX(XXXX代表原来的中断处理函数现在的地址)即可。
如果是C语言,我倒没试过,你可以看看用“指向函数的指针”行不行:定义一个指向函数的指针,用getvect()函数(TruboC才有的函数)获得原来中断函数的入口地址,赋值给这个函数指针,以后只要用这个指针名调用函数即可。
4 发表于 2004-06-05 00:00 ·  中国 河北 秦皇岛 联通
中级用户
★★
积分 258
发帖 58
注册 2003-10-11 00:00
22年会员
UID 11070
性别 男
状态 离线
感谢………………
我除了VB会一点以外其他的就只会ASM了……………………我把这个看成第2生命……
借用一句不知那位的话………………“DOS是我的初恋,ASM是我的母语…………”
奋发向上!!!
5 发表于 2004-12-19 00:00 ·  中国 山东 济宁 电信
中级用户
★★★
痴迷DOS者
积分 456
发帖 570
注册 2004-10-09 00:00
21年会员
UID 32281
性别 男
状态 离线
纯真的DOS年代曾经说过:有着女友的清茶和美妙的中断
DOS不是万能的,没有DOS是万万不能的
自古系统谁无死?留取胆清照汗青!uploadImages/20035317345478982.png
6 发表于 2004-12-19 00:00 ·  中国 山东 济宁 电信
中级用户
★★★
痴迷DOS者
积分 456
发帖 570
注册 2004-10-09 00:00
21年会员
UID 32281
性别 男
状态 离线
不好意思别当灌水帖子删掉
DOS不是万能的,没有DOS是万万不能的
自古系统谁无死?留取胆清照汗青!uploadImages/20035317345478982.png
7 发表于 2005-01-17 00:00 ·  中国 陕西 西安 电信
初级用户
积分 111
发帖 3
注册 2005-01-16 00:00
21年会员
UID 35384
性别 男
状态 离线
在C下很简单,如果你的编译器是BORLAND的话,那么按照下面的来做:#include <dos.h>extern void (*old_int)() ;old_int = getvect( int_num ) ;接着在用setvect函数修改VECT表。以后当你需要原先的中断程序的时候,这样执行:(*old_int)() ; 就可以了。或者如果你在汇编下的,也比较简单。我们知道VECT开始于0000:0000,在16bit下,一个地址是一个DWORD。那么我们可以先计算出中断号对应的偏移,假定是OLD_INT,那么写下面的汇编指令就可以了OLD_INT dw ?mov bx,word ptr mov word ptr ,bx mov bx,word ptr mov word ptr ,bx这样,以后,需要执行的时候,这样写就可以了call far OLD_INT
论坛跳转: