汇编语言--使用BIOS进行键盘输入和磁盘读写

这篇博客介绍了如何使用汇编语言通过BIOS进行键盘输入和磁盘读写的操作。通过分析键盘输入时的中断处理,特别是9号中断例程如何处理键盘缓冲区,以及使用int 16h中断例程读取键盘输入。此外,还讲解了使用int 13h中断例程进行磁盘读写的基本原理,包括读扇区和写扇区的操作,并演示了简单的读写示例。最后,简单提到了PC机启动过程中BIOS的角色以及操作系统引导过程。
摘要由CSDN通过智能技术生成

汇编语言--使用BIOS进行键盘输入和磁盘读写


使用BIOS进行键盘输入和磁盘读写



大多数有用的程序都需要处理用户的输入,键盘输入是最基本的输入。程序和数据通常需要长期存储,磁盘是最常用的存储设备。

BIOS为这两种外设的I/O提供了最基本的中断例程。下面将对它们的应用和相关问题进行学习。



int 9中断例程对键盘输入的处理

键盘输入将引发9号中断,BIOS提供了int 9中断例程。

CPU在9号中断发生后,执行int 9中断例程,从60h端口读出扫描码,并将其转化为相应的ASCII码或状态信息,存储在内存的指定空间(键盘缓冲区或状态字节)中。



一般的键盘输入,在CPU执行完int 9中断例程后,都放到了键盘缓冲区中。键盘缓冲区有16个字单元,可以存储15个按键的扫描码和对应的ASCII码。



下面我们按照键盘缓冲区的逻辑结构,来看一下键盘输入的扫描码和对应的ASCII码是如何写入键盘缓冲区的。



注意:在我们的课程中,仅在逻辑结构的基础上,讨论BIOS键盘缓冲区的读写问题。其实键盘缓冲区是用环形队列结构管理的内存区,但我们不对队列和环形队列的实现进行讨论,因为那是另一门专业课《数据结构》的内容。



下面,我们通过下面几个键:

A、B、C、D、E、shift_A、A

的输入过程,简要地看一下int 9中断例程对键盘输入的处理方法:

(1)初始状态下,没有键盘输入,键盘缓冲区空,此时没有任何元素:


















(2)按下A键,引发键盘中断:CPU执行int 9中断例程,从60h端口读出A键的通码;然后检测状态字节,看看是否有shift、Ctrl等切换键按下;发现没有切换键按下,则将A键的扫描码1eh和对应的ASCII码,即字母“a”的ASCII码61h,写入键盘缓冲区。缓冲区的字单元中,高位字节存储扫描码,低位字节存储ASCII码。此时缓冲区中的内容如下:
1E61

















(3)按下B键,引发键盘中断:CPU执行int 9中断例程,从60h端口读出B键的通码;然后检测状态字节,看看是否有切换键按下;发现没有切换键按下,将B键的扫描码30h和对应的ASCII码,即字母“b”的ASCII码62h,写入键盘缓冲区。此时缓冲区中的内容如下:
1E61
3062
















(4)按下C、D、E键后,缓冲区中的内容如下:
1E61
2062
2E63
2064
1265













(5)按下左shift键,引发键盘中断:int 9中断例程接收左shift键的通码,

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值