汇编学习笔记(14)BIOS对键盘输入的处理

字符的处理

键盘输入的字符一般由int9中断例程从60h端口中读取,并存放在键盘缓冲区中,由int16h例程从键盘缓冲区中读取相应字符,CPU对键盘输入a、shift_a的处理过程如下

1.一开始没有键盘输入,键盘缓冲区为空。

2.按下A键,引发int9例程从60h端口读取A键的通码,然后检测0040:17处的状态字节看是否有shift等控制键按下,发现没有控制键按下,则将A的通码1eh和对应的ASCII码61h写入键盘缓冲区,一个键盘缓冲区单元为2个字节,高位字节存储扫描码,低位字节存储ASCII码。

3.按下SHIFT键,引发键盘中断,将0040:17处的状态字节的第一位设为1.

4.按下a键,引发int9例程从60h端口读取A键的通码,然后检测0040:17处的状态字节发现SHIFT键按下,则将A的通码1eh和对应的SHIFT_a的ASCII码41h写入键盘缓冲区。

字符串的处理

当我们输入字符串的时候,CPU需要进行以下几项操作

1.在输入的同时显示这个字符

2.输入回车符之后,输入结束

3.能够删除已输入的字符

为达到以上的功能,需要使用字符栈来存储输入的字符。

1.输入字符a,int16h例程读取键盘输入,将字符a入栈,清除屏幕上的显示,显示栈中所有字符

2.输入字符b,int16h例程读取键盘输入,将字符b入栈,清除屏幕上的显示,显示栈中所有字符

3.删除字符b,int16h例程读取键盘输入,将字符b出栈,清除屏幕上的显示,显示栈中所有字符

6

posted @ 2014-03-04 21:57  huntstack  阅读(559)  评论(0编辑  收藏  举报