[汇编语言学习笔记][第十五章 外中断]
来源:互联网 发布:php 生成pdf文件 编辑:程序博客网 时间:2024/05/29 03:16
第十五章 外中断
及时处理外设的输入,有以下两个问题
- 外设的输入随时可能发生,CPU如何得知?
- CPU从何处得到外设的输入?
这一章,以键盘输入为例,探讨这个问题。
15.1 接口芯片和端口
外设的输入不直接送入内存和CPU,而是送入相关的接口芯片的端口中。CPU向外设输出,也是要先送入端口,由相关芯片到外设。
CPU通过端口和外部设备进行联系
15.2 外中断信息
外中断信息,来自于CPU外部,当CPU外部有需要处理的事情发生的时候,比如,外部的输入到达,相关芯片将向CPU发出相应的中断信息。CPU在执行完当前指令后,可以检测到发送过来的中断信息,引发中断。
可屏蔽中断
- 可屏蔽中断是CPU可以不响应的外中断
- 如果
IF=1
则响应,IF=0
则不响应 sti
使得IF=1
,cli
设置IF=0
不可屏蔽中断
- 中断类型码固定为
2
- 标志寄存器入栈,IF=0,TF=0
- CS,IP入栈
-(IP)
=(08H),(CS)
=(0AH)
- 中断类型码固定为
几乎所有外中断都是可屏蔽中断。
15.3 PC机键盘的处理过程
键盘输入
- 按下,和松开生成的扫描码都会送入
60h
端口 - 按下的扫描码称为通码,松开的扫描码称位断码
断码=通码+80H
,通码
第7位为0,断码
第7位为1.(从0开始数)
- 按下,和松开生成的扫描码都会送入
引发 9 号中断
- 到达
60h
端口,相关芯片就会向CPU发送中断类型码为9
的可屏蔽中断信息 - 如果
IF
=1,执行中断。
- 到达
执行 int 9 中断例程
- 读出60H端口中的扫描码
- 如果是字符集扫描码,将该扫描码和所对应的字符码(即ASCII)送入内存中的BIOS键盘缓冲区。
- 如果是控制键(比如
Ctrl
)的扫描码,则转变位状态字节(用二进制位记录控制键和切换键状态的字节)写入内存中存储状态字节的单元 - 对键盘系统进行相关的控制,比如说,向相关芯片发出应答信息。
键盘缓冲区
该内存去可以存储15个键盘输入,用一个字单元存放,高位字节放扫描码,低位字节放字符码
0040:17
单元存储状态字节
15.4 编写int 9 中断例程
0 0
- [汇编语言学习笔记][第十五章 外中断]
- 王爽《汇编语言》(第二版) 学习笔记 (第十五章 外中断)
- 王爽《汇编语言》(第二版) 学习笔记 (第十五章 外中断)
- 汇编语言学习笔记(十五)外中断
- 汇编语言学习笔记(十二)内中断
- 《汇编语言》学习(十五)外中断
- 汇编语言学习第十二章-内中断
- 王爽《汇编语言》(第二版) 学习笔记 (第十二章 内中断)
- 王爽《汇编语言》(第二版) 学习笔记 (第十二章 内中断)
- 汇编语言学习笔记(随笔记) 内部中断
- APUE第十四章.第十五章学习笔记
- c++ primer 学习笔记-第十五章
- 11、王爽《汇编语言》笔记_第十五、十六章及附录4
- 汇编语言-端口和外中断
- 汇编语言第十三章-int中断
- 《汇编语言》学习笔记 第二章之寄存器
- 王爽《汇编语言》学习笔记--第二章
- 王爽《汇编语言》学习笔记--第三章
- springmvc返回值、数据写到页面、表单提交、ajax、重定向
- 防止表单重复提交的几种方法
- Android TextView加载html图片详解
- nodejs 压缩文件 archiver
- AtomNotes
- [汇编语言学习笔记][第十五章 外中断]
- 另一个ORM——MyBatis(一)
- Android 判断当前点击位置是否在圆的内部
- 啊哈!算法—队列
- 【扩展欧几里得算法】(瞎几把乱搞式)
- 如何将pdf文件转换成word格式
- [BZOJ1576][Usaco2009 Jan]安全路径Travel(堆优化dijkstra+并查集)
- iOS开发证书显示“此证书的签发者无效”解决方法
- 是时候 UWP 了