高分求救:修改中断服务程序

zhuzhengzhou 2003-04-08 09:49:25
我修改了键盘中断服务程序,可是没有来得及恢复断电了,我想问的是:再次开机后会不会自动恢复到原来的状态(即原来的int9键盘中断服务程序),如果是,那就好说,如果不是,那我下面的程序怎么再次运行的时候就不行呢?
char far *keystatus = (char *) MK_FP(0x0040,0xac); /* 键盘状态标志(0、1、2、3、4) */
char far *alreadyk = (char *) MK_FP(0x0040,0xad); /* k键是否刚被按下 1=刚按下 */

void interrupt (far newint9)(__CPPARGS)
{
char far *keyqueuehead = (char far *)MK_FP(0x0040,0x1a);
char far *keyqueuetail = (char far *)MK_FP(0x0040,0x1c);
(*oldint9)();
if(*keyqueuehead != *keyqueuetail) /* 键盘缓冲区不空 */
{
keyqueuehead=keyqueuehead+*keyqueuehead-0x1e+5;
if(*keyqueuehead==0x25) /* 按下k键 */
{
*alreadyk=1;
}
else if(*alreadyk==1)
{
switch (*keyqueuehead)
{
case 11: /* 按下0键 */
*keystatus=0;
*alreadyk=0;
break;
case 2: /* 按下1键 */
*keystatus=1;
*alreadyk=0;
break;
case 3: /* 按下2键 */
*keystatus=2;
*alreadyk=0;
break;
case 4: /* 按下3键 */
*keystatus=3;
*alreadyk=0;
break;
case 5: /* 按下4键 */
*keystatus=4;
*alreadyk=0;
break;
default:
break;
}
}
}
}

请高手给于解答,十分感谢!
...全文
54 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhouzhaohan 2003-04-08
  • 打赏
  • 举报
回复
只要不烧到firmware里面去,在内存里的东西重启后就灰飞烟灭了。
ndy_w 2003-04-08
  • 打赏
  • 举报
回复
当然会恢复,除非你的程序改写bios。
再次运行结果不同?不太可能吧?
zhuzhengzhou 2003-04-08
  • 打赏
  • 举报
回复
谢谢两位!给分!

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧