例7.5 若8086系统中采用单片8259A作为外部可屏蔽中断的优先级管理,正常全嵌套方式,边沿触发,非缓冲连接,非自动中断结束,端口地址为20H和21H。其中某中断源的中断类型码为0AH,其中断服务子程序的入口地址是2000:3A40H。
(1)请为8259A设置正确的初始化命令字,并编写初始化程序。 (2)请问本题中的中断源应与IR的哪一个输入端相连,其中断矢量地址是多少,矢量区对应的4个单元的内容是什么?
解 (1)ICW1=00010011(单片,边沿触发,必须设置ICW4);
ICW2=00001000(中断类型码基值为08H,高5位为00001,低3位任意设置);
无ICW3,因单片8259A系统,无需设置ICW3; ICW4=00000001(正常全嵌套方式,非缓冲连接,非自动中断结束)。
初始化程序如下:
MOV AL,13H ;设置ICW1 OUT 20H,AL
MOV AL,08H ;设置ICW2 OUT 21H,AL
MOV AL,01H ;设置ICW4 OUT 21H,AL
(2)本题中的中断源应与IR2相连,其中断矢量地址为0000:0028H,矢量区对应的4个单元的内容依次为40H,3AH,00H,20H。
【评注】8259A的ICW2用来提供中断类型码,中断类型码的高5位由用户指定,低3位由8259A的中断请求输入端的IR0~IR7的编码决定。中断类型码基值规定最低3位为0,故本例中断类型码基值为08H。本题中的中断类型码为0AH,即00001010B,所以此中断源一定连接8259A
的IR2端。
中断向量表规定从内存的00000H开始按中断类型码顺序存放中断向量,每个向量占用4个单元,所以,该中断源的向量地址为0AH×4=28H,即0000:0028H;这4个单元存放中断服务程序入口地址,规定IP在前,CS在后,且低位在前,高位在后,故4个单元的内容依次为40H,3AH,00H,20H。
例7.6 下面为对一个主从式8259A系统进行初始化的程序段。请对以下程序段详细注释,并具体说明各初始化命令字的含义。
主片初始化程序:
;设主片的端口地址为140H,141H MOV AL,11H MOV DX,140H OUT DX,AL MOV AL,08H INC DX
OUT DX,AL MOV AL,04H OUT DX,AL MOV AL,01H OUT DX,AL 从片初始化程序:
;设从片的端口地址为190H,191H MOV DX,190H MOV AL,11H OUT DX,AL MOV AL,70H INC DX
OUT DX,AL MOV AL,02H OUT DX,AL MOV AL,01H OUT DX,AL