[Intel汇编-MASM]外中断
2014-12-21 14:10
162 查看
1. 外中断的概念:
1) 之前叙述过,外中断基本上都是外设引发的,而外设和CPU通信的桥梁就是端口;
2) 外中断分为可屏蔽中断和不可屏蔽中断两种:
i. 可屏蔽中断:几乎所有由外设引发的外中断都是可屏蔽的,即在程序可以通过设置IF标志位决定是否允许在当前程序中被外中断打断;
*1. sti:set interrupt flag,将IF置1,表示可以允许外中断;
*2. cld:clean interrupt flag,将IF置0,表示不允许外中断;
*3. 还记得中断过程吗?其中有一步就是讲IF置0,这样进入中断处理程序后就可以接受外中断了,但是你可以根据具体需求在中断处理程序中通过指令sti或cli来设置是否允许外中断;
ii. 不可屏蔽中断:
*1. 所有中断类型码为2的都是不可屏蔽中断;
*2. 即不管IF是什么值都无法屏蔽必须执行的中断;
*3. 因此这类中断都是用来处理极端紧急且重要的情况;
*4. 由于不可屏蔽,因此中断过程中不用在识别中断类型码(即比普通中断过程少掉第一步),不可屏蔽中断本质是由硬件实现的;
!所有的中断过程本身就都是由硬件控制的;
2. 使用BIOS进行键盘I/O:
1) 9号中断——键盘输入:
i. 键盘中有一块扫描芯片,可以对键盘上每一个键的开关状态进行扫描,当一个键被按下或被松开时都会产生一个扫描码,按下时产生通码,松开时产生断码,且断码 = 通码 + 80H;
ii. 产生的扫描码会送到60H号端口,一旦扫描码达到端口就会向CPU发出9H可屏蔽外中断信息,如果此时IF=1就会立即执行该中断处理程序;
iii. int 9中断处理的过程:
*1. 从60H处读出扫描码;
*2. 将扫描码进行转换,对于字符码(A~z0~9?!等)会转化成相应的ASCII码并用一个字保存(高8位放扫描码,低8位放相应的ASCII码),然后将其放入BIOS键盘缓冲区(该缓冲区是BIOS在开机时在内存中划的一块专门用于存放键盘输入的缓冲区,最多可以存放15个按键)
1) 之前叙述过,外中断基本上都是外设引发的,而外设和CPU通信的桥梁就是端口;
2) 外中断分为可屏蔽中断和不可屏蔽中断两种:
i. 可屏蔽中断:几乎所有由外设引发的外中断都是可屏蔽的,即在程序可以通过设置IF标志位决定是否允许在当前程序中被外中断打断;
*1. sti:set interrupt flag,将IF置1,表示可以允许外中断;
*2. cld:clean interrupt flag,将IF置0,表示不允许外中断;
*3. 还记得中断过程吗?其中有一步就是讲IF置0,这样进入中断处理程序后就可以接受外中断了,但是你可以根据具体需求在中断处理程序中通过指令sti或cli来设置是否允许外中断;
ii. 不可屏蔽中断:
*1. 所有中断类型码为2的都是不可屏蔽中断;
*2. 即不管IF是什么值都无法屏蔽必须执行的中断;
*3. 因此这类中断都是用来处理极端紧急且重要的情况;
*4. 由于不可屏蔽,因此中断过程中不用在识别中断类型码(即比普通中断过程少掉第一步),不可屏蔽中断本质是由硬件实现的;
!所有的中断过程本身就都是由硬件控制的;
2. 使用BIOS进行键盘I/O:
1) 9号中断——键盘输入:
i. 键盘中有一块扫描芯片,可以对键盘上每一个键的开关状态进行扫描,当一个键被按下或被松开时都会产生一个扫描码,按下时产生通码,松开时产生断码,且断码 = 通码 + 80H;
ii. 产生的扫描码会送到60H号端口,一旦扫描码达到端口就会向CPU发出9H可屏蔽外中断信息,如果此时IF=1就会立即执行该中断处理程序;
iii. int 9中断处理的过程:
*1. 从60H处读出扫描码;
*2. 将扫描码进行转换,对于字符码(A~z0~9?!等)会转化成相应的ASCII码并用一个字保存(高8位放扫描码,低8位放相应的ASCII码),然后将其放入BIOS键盘缓冲区(该缓冲区是BIOS在开机时在内存中划的一块专门用于存放键盘输入的缓冲区,最多可以存放15个按键)
相关文章推荐
- [Intel汇编-MASM]内中断
- [Intel汇编-MASM]源程序的组成以及编译调试
- [Intel汇编-MASM]标志寄存器
- [Intel汇编-MASM]内存访问方式以及循环程序的调试
- [Intel汇编-MASM]数据标号和直接定址表
- [Intel汇编-MASM]转移指令
- [Intel汇编-NASM]硬件中断与COMS动态时钟
- 16位汇编 多文件 intel汇编 编译器masm5.0 调用子程序库即静态库的自定义函数 WINDOWS
- [Intel汇编-MASM]数据定义与分段程序
- [Intel汇编-NASM]软中断以及BIOS中断调用
- [Intel汇编-MASM]程序中可用的寄存器
- [Intel汇编-MASM]Debug的使用
- [Intel汇编-MASM]与或以及乘除
- [Intel汇编-MASM]用DS寄存器定义一段数据
- [Intel汇编-MASM]内存单元访问扩展
- [Intel汇编-MASM]端口通信
- [Intel汇编-MASM]栈
- [Intel汇编-MASM]嵌套循环问题
- MASM汇编,求指导
- 汇编语言八——中断