中断控制器8259A的初始化尤为复杂,他的控制字、方式字相对于8253 8255要多。就给你一道例题吧。
某微机系统使用主、从两片8259A管理中断,从片中断请求INT与主片的IR2连接。设主片工作于特殊完全嵌套、非缓冲和非自动结束方式,中断类型号为40H,端口地址为20H和21H。从片工作于完全嵌套、非缓冲和非自动结束方式,中断类型号为70H,端口地址为80H和81H。试编写主片和从片的初始化程序。
根据题意,写出ICW1, ICW2, ICW3和ICW4的格式,按图6.21的顺序写入。编写初始化程序如下:
主片8259A的初始化程序如下:MOV AL, 00010001B 级联, 边沿触发, 需要写ICW4
OUT 20H, AL 写ICW1
MOV AL, 01000000B 中断类型号40H
OUT 21H, AL 写ICW2
MOV AL, 00000100B 主片的IR2引脚接从片
OUT 21H, AL 写ICW3
MOV AL, 00010001B 特殊完全嵌套、非缓冲、自动结束
OUT 21H, AL 写ICW4
从片8259A初始化程序如下:
MOV AL, 00010001B 级联, 边沿触发, 需要写ICW4
OUT 80H, AL 写ICW1
MOV AL, 01110000B 中断类型号70H
OUT 81H, AL 写ICW2
MOV AL, 00000010B 接主片的IR2引脚
OUT 81H, AL 写ICW3
MOV AL, 00000001B 完全嵌套、非缓冲、非自动结束
OUT 81H, AL 写ICW4
建议楼主多看看课本,理解里面控制字方式字的格式,多看看例题。
8259A的初始化程序MOV AL, 00010011b ICW1:单级.要写ICW4
OUT 30H, AL写入ICW1
MOV AL, 60H ICW2: 中断类型号高5位
OUT 31H, AL写入ICW2
MOV AL, 00001001 ICW4:缓冲方式.程序(非自动)EOI方式
OUT 31H, AL写入ICW4
MOV AH, 25H设置中断向量的DOS调用功能号
MOV DS, 3000H 中断服务程序段基址
MOV DX, 2400H IR4中断服务程序偏移址
MOV AL,64HIR4中断类型号
INT 21H调用DOS功能,设置IR4中断向量
MOV DX, 2500H IR5中断服务程序偏移址
MOV AL,65HIR5中断类型号
INT 21H调用DOS功能,设置IR5中断向量
MOV AH, 4CHDOS功能号
INT 21H返回DOS
8259初始化命令字(ICW1-ICW4):8259A的中断 *** 作功能很强,包括中断的请求、屏蔽、排队、结束、级联以及提供中断类型号和查询等 *** 作,并且其 *** 作的方式又有不同。它既能实现向量中断,又能进行中断查询,它可以用于16位机,也可用于8位机。因此,使用起来感到复杂且不好掌握。为此,以8259A的 *** 作功能为线索,来讨论为实现这些功能的各个命令字的含义,为编程使用 8259A提供一些思路。# ICW1~ICW4在初始化程序中设定,且在整个工作过程中保持不变。
# ICW1~ICW4必须按顺序设定。
# ICW1写入8259偶地址中(A0=0,在AT机中为20H/A0H),ICW2~ICW3写入8259奇地址中(A0=1,在AT机中为21H/A1H)。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)