汇编语言 王爽 【第四版】int 9h中断例程和 int 16h中断例程总结+ 检测点17.1

这篇博客详细介绍了键盘输入如何触发9号中断,以及BIOS如何通过int9中断例程从60h端口读取扫描码并转化为ASCII码。CPU执行中断例程后,数据存储在键盘缓冲区,一个环形队列结构的内存区域。此外,还提到了BIOS提供的int16h中断例程,用于从键盘缓冲区读取并删除输入字符,读取的结果存储在AX寄存器中。

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

在这里插入图片描述

键盘输入将引发9号中断,BIOS提供了int 9中断例程。CPU在9 号中断发生后,执行 int 9中断例程,从60h端口读出扫描码,并将其转化为相应的ASCII码或状态信息,存储在内存的指定空间(键盘缓冲区或状态字节)中。(键盘缓冲区是用环形队列结构管理的内存区)。
一般的键盘输入,在CPU执行完 int 9中断例程后,都放到了键盘缓冲区中。键盘缓冲区中有16个字单元,可以存储15个按键的扫描码和对应的ASCIl码。

注意说法 执行int16中断时是从键盘缓冲区中读出字符,不是数据,是一个键盘输入

在这里插入图片描述

BIOS 提供了int 16h 中断例程供程序员调用。int 1 6h中断例程中包含的一个最重要的功能是从键盘缓冲区中读取一个键盘输入,该功能的编号为О。下面的指令从键盘缓冲区中读取一个键盘输入,并将其从键盘缓冲区中删除:
mov ah, O
int 16h
结果:读取出的数据默认写到ax寄存器中,(ah)=扫描码, (al)=ASCII码

在这里插入图片描述

注意 这里不是读取扫描码 int 9 是

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值