《汇编语言》第十五章-外中断

目录:https://blog.csdn.net/qq_43098197/article/details/124532401

接口芯片和端口

CPU 通过端口和外部设备进行联系。

外中断信息

外设产生输入时,相关芯片将向 CPU 发出相应的中断信息。

可屏蔽中断

  • 可屏蔽中断是 CPU 可以不响应的外中断。

  • IF=1,则响应,否则不响应。

  • 外中断的中断类型码通过数据总线送入 CPU。

    内中断则是在 CPU 内部产生。

不可屏蔽中断

  • CPU 必须响应的外中断。
  • 中断类型码固定为 2,因此中断过程中,不需要取中断类型码。
  • 不可屏蔽中断是在系统中有必须处理的紧急情况发生时用来通知 CPU 的中断信息。
  • 中断过程:
    1. 标志寄存器入栈
    2. IF=0,TF=0
    3. CS、IP 入栈
    4. (IP)=(8),(CS)=(0AH)

设置 IF 位

  • sti,设置 IF=1
  • cli,设置 IF=0

PC 机键盘的处理过程

键盘输入

按下一个键时,产生了一个扫描码,扫描码说明了按下的键在键盘上的位置。
松开一个键时,也同理。
通码:按下(第 7 位为 0)。
断码:松开(第 7 位为 1)。
扫描码长度为一个字节
断码 = 通码 + 80H

引发 9 号中断

键盘的输入到达 60H 端口时,相关的芯片就会向 CPU 发出中断类型码为 9 的可屏蔽中断信息。

执行 int 9 中断例程

由 BIOS 提供 int 9 中断例程,用来进行基本的键盘输入处理:

  1. 读取 60H 端口中的扫描码。

  2. 若是字符键的扫描码,将该扫描码和它所对应的 ASCII码 送入内容中的 BIOS 键盘缓冲区。若是控制键和切换键的扫描码,则将其转为状态字节写入内存中存储状态字节的单元。

    控制键:Crtl 等…
    切换键:CapsLock 等…
    状态字节:用二进制位记录控制键和切换键开关状态的字节

  3. 对键盘系统进行相关控制,例如向相关芯片发出应答信息。

BIOS 键盘缓冲区:

  • 用于存放 int 9 中断例程所接收的键盘输入的内存区。
  • 可存储 15 个键盘输入,因为 int 9 中断例程除了接收扫描码外,还要产生和扫描码对应的字符码。
  • 一个键盘输入用一个字单元存放,高位扫描码,低位字符码。

0040:17 单元:

  • 存储键盘状态字节。

  • 该字节记录控制键和切换键的状态。

  • 键盘状态字节记录个位记录的信息如下:

    在这里插入图片描述

int 9 中断例程入口地址更改后,需要还原回去

若 int 9 中断例程入口地址更改后,需要还原回去,否则程序返回后,别的程序将无法使用键盘。

更改后,需要还原回去,否则程序返回后,别的程序将无法使用键盘。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值