
























BIOS为用户的键盘输入及磁盘I/O操作提供了专门的中断,以方便我们进行调用。下面我们学习如何使用这些中断。
BIOS提供了9h号中断来处理键盘的输入内容(对接硬件),并提供了16h号中断来方便应用程序读取键盘输入(对接软件)。我们可以把它当成一个API来使用。作为使用者,我们本课只关注16h号中断的调用方法即可。
我们前面说过,9h号中断会对键盘缓冲区进行操作。键盘缓冲区实质上是用环形队列进行管理的内存区,用于暂存键盘输入的信息。16h号中断则从键盘缓冲区中读入信息。下面是16h号中断中最重要的功能(编号0),使用格式:
mov ah,0
int 16h执行上过指令后,CPU从键盘缓冲区中弹出一个键盘输入,存在ax中,其中ah存放扫描码,al存放ASCLL码。若此时键盘缓冲区中没有数据,则持续检查。我们编写应用程序时,只需要调用这个中断即可便捷地使用键盘缓冲区。
我们以3.5英寸软盘为例。其分为上下两面,每面有80个磁道,每个磁道分为18个扇区,每个扇区大512字节。BIOS提供了13h号中断来方便用户读写磁盘盘。下面是使用13h中断读写磁盘的格式:
mov al,1;读取扇区数量
mov ch,0;磁道号
mov cl,1;扇区号
mov dl,0;驱动器号(0-软驱A 1-软驱B 80h-硬盘C 81h-硬盘D)
mov dh,0;磁头号(对软盘相当于面号)
mov ah,2;int 13h的功能号2
int 13h执行上述程序后,CPU将指定扇区的数据读入到es:bx处及其后的512N个字节中(N表示读取扇区数量)。
mov al,1;写入扇区数量
mov ch,0;磁道号
mov cl,1;扇区号
mov dl,0;驱动器号(0-软驱A 1-软驱B 80h-硬盘C 81h-硬盘D)
mov dh,0;磁头号(对软盘相当于面号)
mov ah,2;int 13h的功能号2
int 13h执行上述程序后,CPU将es:bx处开始的数据写入对应扇区。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。