有什么区别啊?看了一晚上还没看明白,郁闷。谁帮帮忙吧~
------解决方案--------------------------------------------------------
int9是硬件中断的处理函数,当有按键进来就会去调用它;int 16是一个软件中断,可以用来获取按键信息;int 21 1号 就不清楚了
------解决方案--------------------------------------------------------
你首先要了解int指令干了什么事。
9h,16h等等只是指向N个seg:offset的向量,而int将指令流跳转到指定的地址去执行。
这些只是对不同功能函数的封装,类似现在OS中的API。只不过他们的层次不同。
------解决方案--------------------------------------------------------
说的太抽象了吧。
int9 是硬件中断,就是在按下或松开一个键时,调用来进行处理的。一般的处理流程就是将按键保存到 bios 键盘缓冲区里。除非是很特别的程序,比如驻留程序要对按键进行拦截以触发特定功能,一般的程序不需要留意到它。
int16h 是一组 bios 键盘中断功能调用。在读取按键上,常用的是其 00 号功能。它和 int21h 的 1 号功能类似。主要的区别就是 int21h 的这个功能,会对些特殊按键,比如 Ctrl_C 组合键进行预先检查和处理,而 int16h 的不会;另外,int21h 的 1 号功能还会在屏幕上显示出来相应的按键,int16h 的 00 号功能没用。如果是在 xp 这样的多任务带 System Idle 功能的系统下,int21h 的 1 号功能还有个优势,就是其在等待键盘输入时,cpu 无特别占用率;而 int16h 的则会满载,应该是在不停地查询键盘缓冲区中是否有按键所致。
所以,如果在程序里要读取按键,建议尽可能地使用 int21h,如果是不需要回显输入的字符,就试试它的 7 号功能。