1#:主片,2#:从片
2#芯片的INT引脚接的是1#芯片的IRQ2引脚。
14.上题中,两片8259A的初始化程序如下:
;主8259A初始化 INTA00 EQU 020H ;8259A主片端口0 INTA01 EQU 021H ;8259A主片端口1 ┇ ; 边沿触发,多片8259级联,需要ICW4 MOV AL, 11H ;ICW1 OUT INTA00, AL ; 中断类型码的基值为8 MOV AL, 8 ;ICW2 OUT INTA01, AL ; IRQ2接从8259A MOV AL, 04H ;ICW3 OUT INTA01, AL ; 全嵌套方式,非缓冲方式,非自动结束,8086/8088模式 MOV AL, 01H ;ICW4 OUT INTA01, AL ;从8259A初始化 INTB00 EQU 020H ;8259A从片端口0 INTB01 EQU 021H ;8259A从片端口1 ┇ ; 边沿触发,多片8259级联,需要ICW4 MOV AL, 11H ;ICW1 OUT INTB00, AL ; 中断类型码的基值为70H MOV AL, 70H ;ICW2 OUT INTB01, AL
; 从属8259接主控的IRQ2 MOV AL, 02H ;ICW3 OUT INTB01, AL
; 全嵌套方式,非缓冲方式,非自动结束,8086/8088模式 MOV AL, 01H ;ICW4 OUT INTB01, AL 请说明两片8259A的4个初始化命令字的意义。
15.某系统中设置3片8259A级联使用,一片为主8259A;两片为从8259A,它们分别接入主8259A的IRQ2和IRQ4端。若已知当前主8259A和从8259A的IRQ3上各接有一个中断源,它们的中断类型码分别为A0H、B0H、C0H,已知它们的中断入口均在同一段中,其段基址为2050H,偏移地址分别为11A0H、22B0H和33C0H,所有中断均采用电平触发方式、完全嵌套、普通EOI结束。
(1) 画出它们的硬件连接图; (2) 编写全部初始化程序。
解:(中断类型码认为是三片8259的中断类型基码) (1)
(2)
; 利用DOS功能调用设置中断向量 PUSH DS ; A3H设置
MOV AX,2050H MOV DS,AX MOV DX,11A0H MOV AX,25A3H INT 21H ; B3H设置
MOV DX,22B0H MOV AX,25B3H INT 21H ; C3H设置
MOV DX,33C0H MOV AX,25C3H INT 21H POP DS
; 8259A初始化,先定义各8259端口地址,依次为主控、从1#、从2# INTA0 EQU 020H INTA1 EQU 021H INTB0 EQU 0A0H INTB1 EQU 0A1H INTC0 EQU 0B0H INTC1 EQU 0B1H ; 主8259初始化 MOV DX, INTA0
MOV AL, 0001 1001B OUT DX, AL
MOV AL, 1010 0000B MOV DX, INTA1 OUT DX, AL
MOV AL, 0001 0100B OUT DX, AL
MOV AL, 0001 0001B OUT DX, AL ; 从1#初始化
MOV DX, INTB0
MOV AL, 0001 1001B OUT DX, AL
MOV AL, 1011 0000B MOV DX, INTB1 OUT DX, AL
MOV AL, 0000 0010B OUT DX, AL
MOV AL, 0001 0001B OUT DX, AL ; 从2#初始化
MOV DX, INTC0
MOV AL, 0001 1001B OUT DX, AL
MOV AL, 1100 0000B MOV DX, INTC1 OUT DX, AL
MOV AL, 0000 0100B OUT DX, AL
MOV AL, 0001 0001B OUT DX, AL
; ICW1:电平触发,多片8259级联,需要ICW4 ; ICW2:中断类型码基值为0A0H ; ICW3:IRQ4、IRQ2接从属8259 ; ICW4:完全嵌套、非缓冲方式、普通EOI结束、8086/8088模式 ; ICW1:电平触发,多片8259级联,需要ICW4 ; ICW2:中断类型码基值为0B0H ; ICW3:从属8259接主控的IRQ2 ; ICW4:完全嵌套、非缓冲方式、普通EOI结束、8086/8088模式 ; ICW1:电平触发,多片8259级联,需要ICW4 ; ICW2:中断类型码基值为0C0H ; ICW3:从属8259接主控的IRQ4 ; ICW4:完全嵌套、非缓冲方式、普通EOI结束、8086/8088模式 16.IBM PC/XT中8259A的IRQ2输入一中断请求信号,当其有效时转入中断服务程序执行。中断服务程序的功能是从外设(口地址为200H)读入数据,并判断是否有偶校验,有则输出给另一个外设(口地址201H),否则在屏幕显示字符“N”,并关闭IRQ2中断。试编写主程序(与中断有关部分)和中断服务程序。
; 主程序部分 PUSH DS
MOV AX, SEG INTPR MOV DS, AX LEA DX, INTPR MOV AH, 25H
MOV AL, 0AH ; 未知 INT 21H POP DS
MOV DX, 021H ; 读取中断屏蔽命令字 IN AL, DX
AND AL, 0FBH ; 0FBH = 1111 1011B,开放IRQ2中断 OUT DX, AL ; 送回IMR STI ; 开中断
; 中断服务程序
INTPR: MOV DX, 200H ; 从200H端口读入数据
IN AL, DX OR AL, AL JNP NEXT
MOV DX, 201H ; 偶校验,输入的数据输出到端口201H OUT DX, AL JMP DONE
NEXT: MOV DL, ’N’ ; 非偶校验,显示“N”,并关闭IRQ2中断
MOV AH, 2 ; 显示“N” INT 21H
MOV DX, 021H ; 关闭IRQ2中断 IN AL, DX OR AL, 00000100B OUT DX, AL
DONE: IRET
17.中断与异常有何异同?
18.32位机的异常分为几类?
19.中断描述符与一般段描述符有何不同?
20.中断描述符表与中断向量表有何异同?