2.在PCIXT系统中,只有两片8259A采用级联方式组成中断系统,主片的IR0和IR4接有外部中断源,中断类型号为30H和34H,主片端口地址为C8H/C9H:丛片接在主片的IR3上,从片的取1和IR2上接有外部中断,其中断类型号为41H和42H,从片口地址为CAH/CBH,主片和从片均采用边沿触发方式、要设置ICW4,工作于全嵌套、非缓冲、非自动EOI,根据上述要求分别写出主片和从片的初始化程序。
时间: 2023-05-21 21:00:43 浏览: 118
主片的初始化程序:
mov al, 00110001b ; ICW1,边缘触发,级联方式,需要ICW4
out 20h, al ; 发送ICW1到主片
mov al, 00000100b ; ICW2,中断类型号为30H和34H
out 21h, al ; 发送ICW2到主片
mov al, 00000100b ; ICW3,从片连接在IR3上
out 21h, al ; 发送ICW3到主片
mov al, 00000001b ; ICW4,全嵌套,非缓冲,非自动EOI
out 21h, al ; 发送ICW4到主片
从片的初始化程序:
mov al, 00110001b ; ICW1,边缘触发,级联方式,需要ICW4
out 0A0h, al ; 发送ICW1到从片
mov al, 00100001b ; ICW2,中断类型号为41H和42H
out 0A1h, al ; 发送ICW2到从片
mov al, 00000010b ; ICW3,从片连接在IR2上
out 0A1h, al ; 发送ICW3到从片
mov al, 00000001b ; ICW4,全嵌套,非缓冲,非自动EOI
out 0A1h, al ; 发送ICW4到从片
相关问题
一个8259A中断控制器工作在级联模式下怎么连接至两个CPU上。
8259A中断控制器可以通过级联连接方式连接到两个CPU上,实现双中断触发。具体连接方式如下:
1.将8259A中断控制器1的INT输出引脚连接到CPU1的INTR引脚上。
2.将8259A中断控制器2的INT输出引脚连接到8259A中断控制器1的IR2输入引脚上。
3.将8259A中断控制器2的INT输出引脚连接到CPU2的INTR引脚上。
4.将8259A中断控制器1的INTA输出引脚连接到CPU1的INTA引脚上。
5.将8259A中断控制器2的INTA输出引脚连接到8259A中断控制器1的CAS0输入引脚上。
6.将8259A中断控制器1的INTA输出引脚连接到8259A中断控制器2的CAS1输入引脚上。
通过以上连接方式,可以实现两个8259A中断控制器的级联连接,从而将双中断触发信号传递到两个CPU上。在实际设计中,需要根据具体的硬件系统和接口芯片的引脚定义进行连接,以确保连接正确并符合规范。
编写8259A的初始化程序。系统中仅有一片8259A,允许8个中断源边沿触发,不需要缓冲,采用一般全嵌套方式工作,中断向量为40H。
以下是8259A的初始化程序:
```assembly
; 端口号定义
PIC_MASTER_CMD_PORT equ 20h ; 主片命令端口号
PIC_MASTER_DATA_PORT equ 21h ; 主片数据端口号
PIC_SLAVE_CMD_PORT equ 0A0h ; 从片命令端口号
PIC_SLAVE_DATA_PORT equ 0A1h ; 从片数据端口号
; 初始化主片和从片
INIT_PIC:
; 初始化主片
mov al, 00110001b ; ICW1: 边沿触发、级联8259A、需要ICW4
out PIC_MASTER_CMD_PORT, al
mov al, 00100000b ; ICW2: 中断向量为40H
out PIC_MASTER_DATA_PORT, al
mov al, 00000100b ; ICW3: 主片IR2接从片
out PIC_MASTER_DATA_PORT, al
mov al, 00000001b ; ICW4: 8086模式、非缓冲区模式
out PIC_MASTER_DATA_PORT, al
; 初始化从片
mov al, 00110001b ; ICW1: 边沿触发、级联8259A、需要ICW4
out PIC_SLAVE_CMD_PORT, al
mov al, 00101000b ; ICW2: 中断向量为48H
out PIC_SLAVE_DATA_PORT, al
mov al, 00000010b ; ICW3: 从片连接到主片IR2
out PIC_SLAVE_DATA_PORT, al
mov al, 00000001b ; ICW4: 8086模式、非缓冲区模式
out PIC_SLAVE_DATA_PORT, al
; 打开主片和从片的中断
mov al, 11111100b ; 主片IR0-7全部打开,从片IR0-1全部打开
out PIC_MASTER_DATA_PORT, al
mov al, 11111111b ; 从片IR2-7全部打开
out PIC_SLAVE_DATA_PORT, al
ret
```
注:以上代码是用汇编语言编写的。该代码将主片和从片都初始化为边沿触发模式、一般全嵌套方式,中断向量为40H。其中,需要注意的是ICW3的设置,主片需要将IR2接到从片,从片的IR2也要设置为从片连接到主片。