惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
Docker
小众软件
小众软件
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
酷 壳 – CoolShell
酷 壳 – CoolShell
Apple Machine Learning Research
Apple Machine Learning Research
月光博客
月光博客
人人都是产品经理
人人都是产品经理
大猫的无限游戏
大猫的无限游戏
V
V2EX
阮一峰的网络日志
阮一峰的网络日志
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园 - Franky
WordPress大学
WordPress大学
有赞技术团队
有赞技术团队
Hugging Face - Blog
Hugging Face - Blog
Jina AI
Jina AI
博客园 - 聂微东
S
SegmentFault 最新的问题
量子位
宝玉的分享
宝玉的分享
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园_首页

faryou的博客

faryou的博客 faryou的博客 faryou的博客 faryou的博客 faryou的博客 faryou的博客-福建行小记 faryou的博客 faryou的博客 faryou的博客 faryou的博客 faryou的博客-夏令营小记 faryou的博客 faryou的博客 faryou的博客 faryou的博客-暑假阶段总结与展望 faryou的博客 faryou的博客 faryou的博客 faryou的博客 台风进行时 faryou的博客 limbo虚拟机初体验&安装Windows NT 4.0 faryou的博客 台风将来时 faryou的博客 faryou的博客 faryou的博客 faryou的博客 出租车上的对话 faryou的博客
【汇编基础教程】使用BIOS的中断实现键盘输入及磁盘I/O
作者: faryou · 2026-01-30 · via faryou的博客

前言

BIOS为用户的键盘输入及磁盘I/O操作提供了专门的中断,以方便我们进行调用。下面我们学习如何使用这些中断。

键盘输入

BIOS提供了9h号中断来处理键盘的输入内容(对接硬件),并提供了16h号中断来方便应用程序读取键盘输入(对接软件)。我们可以把它当成一个API来使用。作为使用者,我们本课只关注16h号中断的调用方法即可。
我们前面说过,9h号中断会对键盘缓冲区进行操作。键盘缓冲区实质上是用环形队列进行管理的内存区,用于暂存键盘输入的信息。16h号中断则从键盘缓冲区中读入信息。下面是16h号中断中最重要的功能(编号0),使用格式:

mov ah,0
int 16h

执行上过指令后,CPU从键盘缓冲区中弹出一个键盘输入,存在ax中,其中ah存放扫描码,al存放ASCLL码。若此时键盘缓冲区中没有数据,则持续检查。我们编写应用程序时,只需要调用这个中断即可便捷地使用键盘缓冲区。

磁盘I/O

我们以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处开始的数据写入对应扇区。