使用BIOS进行键盘输入和磁盘读写01 – 零基础入门学习汇编语言75

第十七章:使用BIOS进行键盘输入和磁盘读写01

让编程改变世界

Change the world by program

引言

大多数有用的程序都需要处理用户的输入,键盘输入是最基本的输入。

程序和数据通常需要长期存储,磁盘是最常用的存储设备。

BIOS 为这两种外设的I/O提供了最基本的中断例程,在本章中,我们对它们的应用和相关的问题进行讨论。

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

我们已经讲过,键盘输入将引发9 号中断,BIOS 提供了int 9 中断例程。

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

所以,一般的键盘输入,在CPU 执行完int 9 中断例程后,都放到了键盘缓冲区中。

键盘缓冲区中有16 个字单元,可以存储15个按键的扫描码和对应的入ASCII 码。

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

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

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

请看动画演示过程!

       

       

        -->

       

               

       

               

宽客网,量化投资,宽客俱乐部

        -->

       

       

BIOS提供了int 16h 中断例程供程序员调用

int 16h 中断例程中包含的一个最重要的功能是从键盘缓冲区中读取一个键盘输入,该功能的编号为0。

下面的指令从键盘缓冲区中读取一个键盘输入,并且将其从缓冲区中删除:

mov ah,0

int 16h

结果:(ah)=扫描码,(al)=ASCII码。

下面,我们接着上一节中的键盘输入过程,看一下 int 16h 如何读取键盘缓冲区。

int 16h读键盘缓冲区演示!

       

       

        -->

       

               

       

               

宽客网,量化投资,宽客俱乐部

        -->

       

       

从上面我们可以看出,int 16h 中断例程的 0 号功能,进行如下的工作:

(1)检测键盘缓冲区中是否有数据;

(2)没有则继续做第1 步;

(3)读取缓冲区第一个字单元中的键盘输入;

(4)将读取的扫描码送入ah,ASCII 码送入al;

(5)将己读取的键盘输入从缓冲区中删除。

可见,B1OS 的int 9 中断例程和int 16h 中断例程是一对相互配合的程序,int 9 中断例程向键盘缓冲区中写入,int 16h 中断例程从缓冲区中读出。

它们写入和读出的时机不同,int 9 中断例程在有键按下的时候向键盘缓冲区中写入数据;

而int 16h 中断例程是在应用程序对其进行调用的时候,将数据从键盘缓冲区中读出。

我们在编写一般的处理键盘输入的程序的时候,可以调用int 16h 从键盘缓冲区中读取键盘的输入。

编程,接收用户的键盘输入,输入“r”,将屏幕上的字符设置为红色:输入“g”, 将屏幕上的字符设置为绿色;输入“b ”,将屏幕上的字符设置为蓝色。

程序实现源码:相关代码下载

视频下载
技术, IT技术, 汇编语言, 视频教程

风险提示及免责条款

市场有风险,投资需谨慎。本文不构成个人投资建议,也未考虑到个别用户特殊的投资目标、财务状况或需要。用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处。如若内容有涉嫌抄袭侵权/违法违规/事实不符,请点击 举报 进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部