- 1、本文档共12页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
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键的通码,设置0040:17处的状态字节的第1位为1,表示左shift键按下。
(6)按下A键,引发键盘中断:CPU执行int 9中断例程;从60h端口读出A键的通码;检测状态字节,看看是否有切换键按下,发现左shift键被按下,则将A键的扫描码1Eh和shift_A对应的ASCCII码,即字母“A”的ASCII码41,写入键盘缓冲区,此时缓冲区中的内容如下:
1E61 2062 2E63 2064 1265 1E41 ? ? ? ? ? ? ? ? ? ? (7)松开左shift键,引发键盘中断:int 9中断例程接收左shift键的断码,设置0040:17处的状态字节的第1位为0,表示左shift键松开。
(8)按下A键,引发键盘中断:CPU执行int 9中断例程,从60h端口读出A键的通码,然后检测状态字节,看看是否有切换键按下,发现没有切换键按下,则将A键的扫描码1Eh和A对应的ASCCII码,即字母“a”的ASCII码61h,写入键盘缓冲区,此时缓冲区中的内容如下:
1E61 2062 2E63 2064 1265 1E41 1E61 ? ? ? ? ? ? ? ? ? ?使用int 16h中断例程读取键盘缓冲区
BIOS提供了int 16h中断例程供程序员调用。int 16h中断例程中包含的一个最重要的功能是从键盘缓冲区中读取一个键盘输入,该功能的编号为0。
下面的指令从键盘缓冲区中读取一个键盘输入,并将其从缓冲区中删除:
mov ah,0
int 16h
结果:(ah)=扫描码,(al)=ASCII码。?
int 16h中断例程的0号功能,进行如下的工作:
1)检测键盘缓冲区中是否有数据;
2)没有则继续做第1步;
3)读取缓冲区第一个字单元中的键盘输入;
4)将读取的扫描码送入ah,ASCII码送入al;
5)将已读取的键盘输入从缓冲区中删除。?
可见,BIOS的int 9中断例程和int 16h中断例程是一对相互配合的程序,int 9中断例程向键盘缓冲区中写入,int 16h中断例程从缓冲区中读出。
它们写入和读出的时机不同
您可能关注的文档
- Andrew Lloyd Webber .ppt
- Ancient Chinese Architecture中国古代建筑.ppt
- Android_Camera架构分析.docx
- Android手机应用-游戏分析.ppt
- Android的持久层开发.ppt
- ANIME 动漫 COSPLAY 英文.ppt
- An_Irish_Airman_foresees_his_Death赏析.doc
- APEC中美国推行的TPP.ppt
- apple .ppt
- APM介绍.ppt
- 2024年04月云南省永仁县投资促进局2024年招考1名工作人员笔试历年典型考点解题思路附带答案详解.docx
- 2024年04月山东省第二人民医院招考聘用医疗卫生中初级岗位工作人员18人笔试历年典型考点解题思路附.docx
- 2024年04月天津市水务局所属事业单位2024年公开招考70名工作人员笔试历年典型考点解题思路附带.docx
- 2024年03月黑龙江省绥化市2024年度“市委书记进校园”引才活动引进1523名人才(第一阶段)笔.docx
- 2024年04月山东省医药卫生科技信息研究所招考聘用博士研究生工作人员2人笔试历年典型考点解题思路附.docx
- 2024年04月上半年浙江台州市教育局第二批招考聘用教师20人笔试历年典型考点解题思路附带答案详解.docx
- 2024年04月山东菏泽成武县县直单位选调11人笔试历年典型考点解题思路附带答案详解.docx
- 2024年03月陕西省洛川县基层卫生院(防保站卫生服务中心)2024年公开聘任院长(站长主任)笔试历.docx
- 2024年04月山东第一医科大学附属省立医院(山东省立医院)招考聘用100人笔试历年典型考点解题思路.docx
- 2024年04月国家税务总局福建省税务局所属事业单位2024年度公开招考22名工作人员笔试历年典型考.docx
最近下载
- 2023-2024学年沪科新版九年级上册数学期中复习试卷(含解析) .pdf VIP
- 2024年初级会计《经济法基础》考试自测题(含答案).docx VIP
- 2024年度初级会计《经济法基础》考试备考题库.docx VIP
- 眼科护理讲课课件.pptx
- 2024初级会计《经济法基础》考试提分卷.docx VIP
- 华中师范大学出版社七年级上学期《心理健康教育》教案(教学设计).docx
- 2024初级会计《经济法基础》考试预测试卷(含答案).docx VIP
- 2018-2023年天津市天拖医院全日制高校医学类毕业生择优招聘考试历年参考题库(高频考点)含答案解析.docx
- 图纸智能管理平台和图纸管理方法及设备.pdf VIP
- 2024初级会计《经济法基础》考试典型题库(含答案).docx VIP
文档评论(0)