- cpu执行完int9之后,键盘输入放到了键盘缓冲区中。
- 键盘缓冲区有16个字单元,可以存储15个按键的扫描码和对应的ascii码
- 只有通码及相应ascii码会放入键盘缓冲区,断码不会
- 一个按键占一个字,高位字节放扫描码,低位字节放ascii码
- 控制键(shift、ctrl等)不会放入键盘缓冲区,但会改变状态字节的对应位
- int 16h;ah=0从键盘缓冲区读取一个键盘输入。返回:ah=扫描码,al=ascii码
- 调用int 16h的0号功能后,已读取的键盘输入从缓冲区删除
- 如果键盘缓冲区为空,则调用int 16h的0号功能会循环等待,直到有数据
- 字符串的输入显示、删除、回车结束等是利用栈来实现的
键盘缓冲区只关心按下过什么键,松开码标明按键松开,除了特殊控制键外,无须关注;按住不放,普通键会不停发送按键,即暂无需要输入按键时按住某字母键不放,很快就会滴滴鸣叫表示键盘缓冲区满,Ctrl 或 Shift类的,其按住与否有专门的查询方法(内存标记字段或中断功能调用查询)。 https://bbs.csdn.net/topics/395923342