8259A使用摘要

可编程中断控制器8259A 使用摘要

微机原理实验设计的过程中不可避免的需要用到8259A可编程控制器,这里总结一下8259A的用法。

  1. 首先,尽管《微型计算机原理及接口技术》中对于8259A的初始化进行了很详细的解释说明,但实际上,8259A的初始化这样重要的事怎么能让我们来做呢……8259A的初始化是由BIOS完成的。书上的介绍了解一下即可。
  2. 8259A是在计算机是主板上,一般来说,实验室的试验箱上会留有一个接口来接收你连接的外设发出的中断。
  3. 使用8259A接收外部中断的时候,一般使用0BH和0CH作为中断号。这两种中断号在8086中对应的中断类型是异步通信端口,0BH对应开放的是IRQ3,0CH对应开放IRQ4(这个注意不要搞错)。
  4. 设置中断的步骤分为:
    (1)取中断向量(用MOV AH,35H INT 21H 指令)
    (2)保存中断向量
    (3)填写中断向量表(用MOV AH,25H INT 21H指令)
    (4)开放中断请求
  5. 中断服务程序的结构为:
    (1)PUSH 保护现场
    (2)STI 开中断
    (3)中断处理程序主体
    (4)中断结束命令MOV AL,20H OUT 20H,AL (第一个20H为功能号,第二个是8259A地址)
    (5)CLI 关中断
    (6)POP 恢复现场
    (7)开中断
    (8)IRET 返回(注意和普通子程序的返回 RET不同)

设置中断向量程序示例

;设置中断向量
MOV AL,0BH          ;0BH指定为中断号
MOV AH,35H
INT 21H             ;取中断向量,段地址放在ES中,偏移地址放在BX中
MOV INT_SEG,ES
MOV INT_OFF,BX      ;INT_SEG INT_OFF都是设置的变量,用来暂存原来的中断向量
PUSH DS
MOV AX,SEG INTP     ;INTP是中断服务程序的名字
MOV DS,AX
MOV DX,OFFSET INTP
MOV AX,250BH
INT 21H             ;利用DOS调用,中断向量填入中断向量表
POP DS
IN AL,21H
MOV INSTOR,AL
AND AL,0FBH         ;开放IRQ3的中断请求
OUT 21H,AL
;下面可以写主程序

这里面用的是0BH中断号,对应就是IRQ3口

中断服务程序

;中断服务程序
INTPRO PROC 
    PUSH AX     
    PUSH BX
    PUSH DX         ;保护现场
    STI                 ;注意开中断。
    MOV BX,OFFSET TABLE
    MOV DX,0218H
    IN AL,DX
    CMP AL,0EH
    JB SHOW
    MOV AL,76H
    MOV DX, 0219H
    OUT DX,AL
SHOW:
    ADD AL,02H
    XLAT            
    MOV DX,0219H
    OUT DX,AL       ;中断处理主体部分完毕
    MOV AL,20H
    OUT 20H,AL  ;发出结束中断命令
    CLI             ;注意关中断
    POP AX
    POP BX
    POP DX          ;恢复现场
    STI             ;开中断
    IRET            ;返回
INTPRO ENDP

恢复中断向量

用完了中断向量当然还要恢复回去,这时就用到刚刚存起来的原始中断向量的段地址和偏移地址了。

CLI
MOV AX,INT_SEG
MOV DS,AX
MOV DX,INT_OFF
MOV AL,0BH
MOV AH,25H
INT 21H     ;利用DOS调用写中断向量
STI

你可能感兴趣的:(微机原理)