![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-10-31 15:15 |
共 47,815 主题排行 / 349,930 发帖 / 今日 0 篇 / 48,290 会员排行 |
| DOS开发编程 & 发展交流 (开发室) » [求助]请问一个关于dos 中断的取代问题!(灌水免入!) |
| 可打印版本 1,166 / 6 |
| 第1楼 jihao1234567 | 发表于 2004-06-03 00:00 |
| 中级用户 发帖 58 积分 258 | |
|
[求助]请问一个关于dos 中断的取代问题!(灌水免入!) 小弟用的各版本的DOS截图程序都无法满足需要,所以打算写一个程序来用
但是出现一个问题: 因为程序要驻留内存并监听,所以我打算用dos int 21h 功能 25h更换 int指向地址,但是我以后如何使用我已经保存好的原BIOS中断 16h的地址来做到将普通的键盘按下转入原来的int地址? 请帮忙解决,不胜感激!!! (灌水免入!!!!!!!!!!!!!!!!!!!!!!!!) |
|
| 第2楼 jihao1234567 | 发表于 2004-06-03 00:00 |
| 中级用户 发帖 58 积分 258 | |
|
有人可以回答吗????
|
|
| 第3楼 Loff | 发表于 2004-06-04 00:00 |
| 中级用户 发帖 59 积分 286 | |
|
是用汇编编写吗?如果是的,直接call XXXX(XXXX代表原来的中断处理函数现在的地址)即可。
如果是C语言,我倒没试过,你可以看看用“指向函数的指针”行不行:定义一个指向函数的指针,用getvect()函数(TruboC才有的函数)获得原来中断函数的入口地址,赋值给这个函数指针,以后只要用这个指针名调用函数即可。 |
|
| 第4楼 jihao1234567 | 发表于 2004-06-05 00:00 |
| 中级用户 发帖 58 积分 258 | |
|
感谢………………
我除了VB会一点以外其他的就只会ASM了……………………我把这个看成第2生命…… 借用一句不知那位的话………………“DOS是我的初恋,ASM是我的母语…………” |
|
| 第5楼 defrag | 发表于 2004-12-19 00:00 |
| 中级用户 发帖 570 积分 456 | |
|
纯真的DOS年代曾经说过:有着女友的清茶和美妙的中断
|
|
| 第6楼 defrag | 发表于 2004-12-19 00:00 |
| 中级用户 发帖 570 积分 456 | |
|
不好意思别当灌水帖子删掉
|
|
| 第7楼 XK | 发表于 2005-01-17 00:00 |
| 初级用户 发帖 3 积分 111 | |
|
在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
|
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |