设8086系统中,中断请求信号采用边沿触发方式,单片8259A,端口地址为200H,201H,中断类型码 38H~3FH,中断源接在IR2上,普通全嵌套方式,非自动结束方式,缓冲方式。编写初始化程序。
时间: 2024-05-07 10:15:19 浏览: 201
以下是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
```
阅读全文