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

目录: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 中断例程入口地址更改后,需要还原回去,否则程序返回后,别的程序将无法使用键盘。

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据提供的引用内容,汇编语言王爽第三版的复习资料汇总如下: 1. 第〇章 课程资料:包括课件、源代码、电子书和课后习题答案。 2. 第一章 基础知识:介绍了汇编语言的编程思想和硬件系统的结构,以及汇编语言的主体——汇编指令。 3. 第二章 寄存器(CPU工作原理):详细介绍了CPU的工作原理和寄存器的作用。 4. 第三章 寄存器(内存访问):介绍了如何使用寄存器进行内存访问。 5. 第四章 第一个程序:演示了如何编写第一个汇编程序。 6. 第五章 [BX]和loop指令:介绍了[BX]和loop指令的使用方法。 7. 第六章 包含多个段的程序:介绍了如何编写包含多个段的程序。 8. 第七章 更灵活定位内存地址:介绍了如何更灵活地定位内存地址。 9. 第八章 数据处理的两个基本问题:介绍了数据处理中的两个基本问题——进位和溢出。 10. 第九章 转移指令的原理:介绍了转移指令的原理和使用方法。 11. 第十章 call和ret指令:介绍了call和ret指令的使用方法。 12. 第十一章 标志寄存器:介绍了标志寄存器的作用和使用方法。 13. 第十二章 内中断:介绍了内中断的概念和使用方法。 14. 第十三章 int指令:介绍了int指令的使用方法。 15. 第十四章 端口:介绍了如何使用端口进行输入输出操作。 16. 第十五章 中断:介绍了中断的概念和使用方法。 17. 第十六章 直接定址表:介绍了直接定址表的概念和使用方法。 18. 第十七章 使用BIOS进入键盘输入和磁盘读写:介绍了如何使用BIOS进行键盘输入和磁盘读写操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值