1.在某使用8088CPU系统中,采用2片8259管理15级中断,采用普通全嵌套、缓冲方式,非自动结束中断,边沿触发方式请求中断。己知主片的IR7引脚连接重片的INT引脚,且主片IRO引脚对应的中断向量号为18H,从片IRO引脚对应的中断向量号为38H。另外,主片在系统中分配的I/O地址是20H (A0=0)和21H (A0=1),从片在系统中分配的I/O地址足1A0H (A0=0)和1A1H (A0=1)。根据以上条件,写出对主片和从片的初始化程序段。(18 分)
时间: 2024-03-06 13:47:32 浏览: 45
以下是主片和从片的初始化程序段:
主片初始化:
```
MOV AL, 00110000B ; ICW1,需要初始化8259A
OUT 20H, AL ; 将ICW1输出到主片的控制端口20H
MOV AL, 00011000B ; ICW2,主片的中断向量号为18H
OUT 21H, AL ; 将ICW2输出到主片的数据端口21H
MOV AL, 00000100B ; ICW3,IR2对应从片
OUT 21H, AL ; 将ICW3输出到主片的数据端口21H
MOV AL, 00000001B ; ICW4,普通全嵌套、缓冲方式
OUT 21H, AL ; 将ICW4输出到主片的数据端口21H
```
从片初始化:
```
MOV AL, 00110000B ; ICW1,需要初始化8259A
OUT 1A0H, AL ; 将ICW1输出到从片的控制端口1A0H
MOV AL, 00111000B ; ICW2,从片的中断向量号为38H
OUT 1A1H, AL ; 将ICW2输出到从片的数据端口1A1H
MOV AL, 00000010B ; ICW3,从片连接到主片IR2
OUT 1A1H, AL ; 将ICW3输出到从片的数据端口1A1H
MOV AL, 00000001B ; ICW4,普通全嵌套、缓冲方式
OUT 1A1H, AL ; 将ICW4输出到从片的数据端口1A1H
```
相关问题
在8088系统中扩展一片8259A,端口地址为80H、81H,中断请求边沿触发方式,采用全嵌套方式,系统中使用非缓冲方式连接,中断类型码为18H~1FH
好的,你的问题是如何在8088系统中扩展8259A中断控制器?
首先,需要将8259A连接至系统总线上。8259A有三个输入引脚,即IR0~IR2,需要将它们分别连接至主板上的中断请求线IRQ0~IRQ2。
然后需要设置8259A的端口地址。在8088系统中,可以将8259A的端口地址设置为80H和81H。这可以通过向8259A的控制寄存器写入相应的值来实现。
接下来需要设置8259A的中断请求触发方式和中断类型码。根据题目要求,我们需要将中断请求设置为边沿触发方式,并将中断类型码设置为18H~1FH。这可以通过向8259A的相应寄存器写入相应的值来实现。
最后,需要设置8259A的中断嵌套方式。根据题目要求,我们需要采用全嵌套方式,这可以通过向8259A的相应寄存器写入相应的值来实现。
需要注意的是,8259A可以使用缓冲方式连接,也可以使用非缓冲方式连接。在本题中,我们需要使用非缓冲方式连接,这意味着中断请求信号会直接传递给8259A,而不会被缓存。
设8086系统中,中断请求信号采用边沿触发方式,单片8259A,端口地址为200H,201H,中断类型码 38H~3FH,中断源接在IR2上,普通全嵌套方式,非自动结束方式,缓冲方式。编写初始化程序。
以下是8086系统中8259A芯片的初始化程序,其中包含了中断请求信号采用边沿触发方式、8259A芯片端口地址为200H、201H、中断类型码为38H~3FH、中断源接在IR2上、普通全嵌套方式、非自动结束方式、缓冲方式等设置:
```
ORG 100H
; 初始化8259A
INIT_8259A:
; ICW1
MOV AL, 00110001B ; 边沿触发、级联8259A、ICW4有效
OUT 20H, AL ; 发送ICW1到主芯片
CALL WAIT_8259A ; 等待8259A响应
OUT 0A0H, AL ; 发送ICW1到从芯片
CALL WAIT_8259A ; 等待8259A响应
; ICW2
MOV AL, 38H ; 主芯片中断类型码起始值
OUT 21H, AL ; 发送ICW2到主芯片
MOV AL, 30H ; 从芯片中断类型码起始值
OUT 0A1H, AL ; 发送ICW2到从芯片
; ICW3
MOV AL, 00000100B ; 主芯片IR2接从芯片
OUT 21H, AL ; 发送ICW3到主芯片
MOV AL, 00000010B ; 从芯片连接到主芯片IR2
OUT 0A1H, AL ; 发送ICW3到从芯片
; ICW4
MOV AL, 00000001B ; 非自动结束方式、缓冲方式
OUT 21H, AL ; 发送ICW4到主芯片
OUT 0A1H, AL ; 发送ICW4到从芯片
; OCW1
MOV AL, 11111111B ; 所有中断禁止
OUT 21H, AL ; 发送OCW1到主芯片
OUT 0A1H, AL ; 发送OCW1到从芯片
; OCW2
MOV AL, 00000100B ; 从IR2开始中断屏蔽字
OUT 21H, AL ; 发送OCW2到主芯片
MOV AL, 00000001B ; 从IR2开始中断屏蔽字
OUT 0A1H, AL ; 发送OCW2到从芯片
; 完成初始化
RET
; 等待8259A响应
WAIT_8259A:
IN AL, 20H ; 读取主芯片状态字
AND AL, 00000010B ; 检查8259A响应位
JZ WAIT_8259A ; 如果8259A未响应,则继续等待
IN AL, 0A0H ; 读取从芯片状态字
AND AL, 00000010B ; 检查8259A响应位
JZ WAIT_8259A ; 如果8259A未响应,则继续等待
RET
END
```