开发操作系统(2)键盘驱动

本文介绍了一个简单的键盘驱动程序实现方法,使用int16h中断来读取键盘输入,并通过int10h中断显示字符。文章提供了基本的代码示例,包括如何等待键盘反应以及如何针对特定按键进行响应。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

做一个操作系统,不可能只在屏幕上打印字符,不让用户操作吧。

int 16h=键盘驱动,详细ah功能号如下

ah=0

读取键盘并等待键盘发出反应。

输出:

ah=属性(应该是在键盘上的位置)

al=字符

ah=1

读取键盘但不等待键盘发出反应,并会设置cf。

输出:

如果键盘按下:

cf=0

ah=属性

al=字符

否则:

cf=1

ah=3

输出:

al=特殊键的状态

之后,我们可以做一个简单的键盘程序:

KeyRead:
mov ah,0
int 16h
mov ah,0eh
int 10h
jmp KeyRead

这样,就可以将你按的键输出在屏幕上了。

但是,再按某些键时(例如:Fx,上下左右),会输出空白(0x00)

我们就可以用ah属性来检测

例如,侦测到左键,那么就打印L。

KeyRead:
mov ah,0
int 16h
cmp ah,"K"
je PrintLift
jmp KeyRead
PrintLift:
mov ah,0eh
mov al,"L"
int 10h
jmp KeyRead

这篇文章就结束了。

我们在开发操作系统(3)再见。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值