我们要在代码中如何配置8086中的8255中断
时间: 2024-03-03 18:50:53 浏览: 11
配置8086中的8255中断需要经过以下步骤:
1. 确定8255的中断模式,即在控制字寄存器CWR中设置对应的中断模式位。例如,如果要使用中断方式1,即外设通过INTA引脚向CPU发中断请求信号,需要将CWR的BIT5和BIT4位分别设置为1和0。
```
MOV AL, 11001000B ; 设置控制字寄存器,中断方式1,端口A为输入
OUT 61H, AL ; 将控制字寄存器写入I/O端口61H
```
2. 设置中断服务程序ISR,即在代码中编写相应的处理程序。ISR的具体实现需要根据实际需求进行编写,可以在程序的任何位置定义,只要确保在中断发生时能够被CPU正确执行。
```
ISR:
; 中断服务程序的具体实现
; ...
IRET ; 中断服务程序结束并返回
```
3. 在8255的模式字寄存器MWR中设置中断使能位,即将对应的INT位设置为1。
```
MOV AL, 00000010B ; 将MWR的INT位设置为1,使能中断
OUT 60H, AL ; 将模式字寄存器写入I/O端口60H
```
4. 在8255的中断控制寄存器ICR中设置中断控制位,确定中断的触发方式和优先级。例如,如果使用中断方式1,需要将ICR的BIT0位设置为1,表示使用INTA触发中断请求;如果需要设置中断优先级,可以在ICR的其他位上设置优先级值。
```
MOV AL, 00000001B ; 将ICR的BIT0位设置为1,使用INTA触发中断请求
OUT 62H, AL ; 将中断控制寄存器写入I/O端口62H
```
5. 在程序中启用中断,使得当8255发出中断请求时,CPU可以响应并执行ISR。例如,在程序的初始化部分,可以使用CLI指令关闭中断,等待8255发出中断请求后再使用STI指令启用中断。
```
; 初始化程序
CLI ; 关闭中断
; 等待8255发出中断请求
STI ; 启用中断
```
需要注意的是,不同的8255型号可能存在一些差异,具体的中断配置方式可能会有所不同。同时,在编写中断服务程序时需要注意避免使用一些不可重入的指令,以确保程序的正确性和可靠性。