⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 8259.asm

📁 本程序是一个8254,8259的中断调用程序组,可以实现时钟的调用,中断时可以进行外部的处理.
💻 ASM
字号:

;8259A中断控制器实验

DATA SEGMENT
     OLDBX DW ?                     ;保存原中断矢量
     OLDES DW ?
     MESS DB ,0AH,0DH,'  THIS IS A 8259A INTERRUPT$'
DATA ENDS
CODE SEGMENT
     ASSUME CS:CODE,DS:DATA
START:
                                    ;初始化附加8259
      MOV AL,13H   ;ICW1
      MOV DX,210H
      OUT DX,AL
      MOV AL,0C0H   ;ICW2
      MOV DX,211H
      OUT DX,AL
      MOV AL,0F8H   ;OCW1
      OUT DX,AL
      MOV AL,0      ;OCW2
      MOV DX,210H
      OUT DX,AL
      MOV AL,0BH    ;OCW3
      OUT DX,AL
      MOV AX,350FH                  ;取原中断矢量
      INT 21H
      MOV OLDBX,BX
      MOV OLDES,ES
      MOV AX,SEG NEW0FH             ;设置新中断矢量
      MOV DS,AX
      MOV DX,OFFSET NEW0FH
      MOV AX,250FH
      INT 21H
      IN AL,21H                     ;开IRQ7
      AND AL,07FH
      OUT 21H,AL
      MOV DX,211H                   ;开附加8259
      IN AL,DX
      AND AL,0
      OUT DX,AL
      STI
LOOP1:
      IN AL,21H
      OR AL,80H
      OUT 21H,AL
      MOV AH,1                      ;按任意键退出
      INT 16H
      PUSHF
      IN AL,21H
      AND AL,07FH
      OUT 21H,AL
      MOV DX,211H
      IN AL,DX
      AND AL,0
      OUT DX,AL
      POPF
      JZ LOOP1
      IN AL,21H                    ;关IRQ7
      OR AL,80H
      OUT 21H,AL
      MOV AX,OLDES                 ;恢复原中断矢量
      MOV DS,AX
      MOV DX,OLDBX
      MOV AX,250FH
      INT 21H
      MOV AH,4CH
      INT 21H
                                   ;中断服务程序
NEW0FH:
      IN AL,21H                    ;关IRQ7
      OR AL,80H
      OUT 21H,AL
      MOV AX,DATA                  ;显示MESS
      MOV DS,AX
      MOV DX,OFFSET MESS
      MOV AH,9
      INT 21H
      MOV DX,210H
      IN AL,DX
      IN AL,DX
      IN AL,DX
      IN AL,DX
      CALL SHOW                    ;显示附加8259的中断
      IN AL,21H
      AND AL,07FH                  ;开IRQ7
      OUT 21H,AL
      MOV DX,211H
      IN AL,DX
      AND AL,0
      OUT DX,AL

      MOV AL,20H                   ;发附加8259中断结束命令
      MOV DX,210H
      OUT DX,AL

      MOV AL,20H                   ;给主8259发中断结束命令
      OUT 20H,AL
      IRET
        ;显示子程序
 SHOW  PROC
      TEST AL,01H
      JZ N1
      MOV DL,'0'
      MOV AH,2
      INT 21H
   N1:TEST AL,02H
      JZ N2
      MOV DL,'1'
      MOV AH,2
      INT 21H
   N2:TEST AL,04H
      JZ N3
      MOV DL,'2'
      MOV AH,2
      INT 21H
   N3:TEST AL,08H
      JZ N
      MOV DL,'3'
      MOV AH,2
      INT 21H
   N:RET
SHOW ENDP
CODE ENDS
     END START



























⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -