荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: sinba (CL, never fly away!), 信区: Program
标  题:  操作系统课程设计——建议9
发信站: BBS 荔园晨风站 (Tue Nov  2 20:14:21 1999), 转信

(test4 部分)
各位在设计时可能要用到取键盘的输入函数,很容易想到getchar()或getch()吧。
我用了getch(),程序在WinNT及Win98的DOS模式下运行正常。
在DOS6.22下却出了点小故障:运行第一、第二次正常,第三次却在getch()处死翘翘了。
这个bug让我查了很久(又有跳楼的冲动了),真想不明白为什么会这样,如果程序有
问题,该在第二次死机。
一怒之下,删了所有的函数调用,一个一个加回去,最后将焦点定在getch()上,没办法
只好自己写了一个函数,现贴出,请大家批评指正。

在real.asm中加入一个keytest函数:
...
extrn _key: word
...
   public _keytest
_keytest proc far
       push ax
        mov ah,0
        int 16h
        mov ah,0
        mov _key,ax
       pop ax
       ret
_keytest endp

在test.prj中加入:
...
extern int keytest();
...
keyhit()
{  key=0;
   for (; ; )
   {
      keytest();
      if (key!=0)
      {break;
      }
   }
}

然后以keyhit()代替getch()就大功告成!

我想对大家说:编程一定要小心、小心、再小心,否则一个小变量带来的错误
将会带来几个小时痛苦的查错,很惨的哟。

Good luck, everybody!


--
※ 来源:·BBS 荔园晨风站 bbs.szu.edu.cn·[FROM: 192.168.1.146]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店