170504 汇编-外中断和键盘输入的处理

本文介绍了CPU如何通过中断机制监听和处理外设,特别是键盘输入。外中断分为可屏蔽和不可屏蔽中断,其中键盘输入产生的是可屏蔽中断,中断类型码为9。当键盘按键被按下,扫描码会送入60h端口,触发中断,由BIOS的int 9中断例程处理,将扫描码转化为ASCII码存入BIOS键盘缓冲区。明日计划涉及PYQT和汇编语言的学习。
摘要由CSDN通过智能技术生成
1625-5 王子昂 总结《2017年5月4日》 【连续第215天总结】
A. 汇编语言 15章 20%
B. CPU在计算机系统中,除了要执行指令、进行运算以外,还需要控制外部设备,例如鼠标、键盘等等
那么就有两个问题:
CPU如何监听外设的消息
CPU从何处得到外设的数据
PC系统的接口卡和主板上有各种接口芯片,芯片内部有若干寄存器,CPU将它们作为端口来访问
因此,CPU通过端口来和外部设备进行通信
那么当外设发来数据的时候,CPU如何监听呢?
CPU提供了中断机制来满足这种需要。
外部设备的中断消息称之为外中断
外中断分为两类:
可屏蔽中断
这是CPU可以不响应的外中断。是否相应由flag的IF位的设置,0则不响应;1则响应。
因此,之前内中断里提到的过程有一步是将IF置0,就是为了禁止其他的可屏蔽中断。
CPU提供两条指令设置IF,分别是sti(IF置1)和cli(IF置0)
不可屏蔽中断
这是CPU必须响应的外中断。当CPU检测到不可屏蔽中断时,必须在当前指令执行完后立即响应。
对于8086CPU,不可屏蔽中断的中断类型码固定为2。
几乎所有由外设引发的外中断都是可屏蔽中断。不可屏蔽中断仅在系统发生必须处理的紧急情况时才会出现。

键盘输入的处理过程:
按下一个键时,键盘上的芯片产生一个扫描码,送入接口芯片的寄存器中,端口地址为60h
松开一个键时,芯片也会产生一个扫描码,同样送入60h端口中
一般将按下一个键时产生的扫描码称为通码,松开产生的称为断码。
扫描码长度为一个字节,通码的第7位为0,断码的第7位为1,即:
断码=通码+80h
键盘的输入到达60h端口时,相关的芯片就会向CPU发出中断类型码为9的可屏蔽中断信息。
BIOS提供了int 9中断例程。
读出端口中的扫描码
判断扫描码:如果是字符键的扫描码,则将扫描码和其对应的ASCII码送入内存中的BIOS键盘缓冲区;如果是控制键(如Ctrl)或切换键(如CapsLock)的扫描码,则将其转变为状态字节写入内存中存储状态字节的单元
对键盘系统进行相关的控制,比如说向相关芯片发出应答信息
BIOS键盘缓冲区是系统启动后,BIOS用于存放int9 中断例程所接收的键盘输入的内存器,可以存储15个键盘输入。每个键盘输入用一个字单元存放,高位字节存放扫描码,低位字节存放对应的ASCII码
0040:17单元存储键盘状态字节,记录了控制键和切换键的状态。
0 1 2 3 4    5     6      7
右shift 左shift Ctrl Alt     ScrollLock  NumLock  CapsLock Insert
C. 明日计划
PYQT
汇编语言
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值