首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

int 9h,int 16h还有int 21h的1号中断的区别?该怎么解决

2012-02-08 
int 9h,int 16h还有int 21h的1号中断的区别???。。有什么区别啊?看了一晚上还没看明白,郁闷。谁帮帮忙吧~[解

int 9h,int 16h还有int 21h的1号中断的区别???。。
有什么区别啊?看了一晚上还没看明白,郁闷。谁帮帮忙吧~

[解决办法]
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 号功能。

热点排行