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

📄 int8259.asm

📁 本程序是一个8254,8259的中断调用程序组,可以实现时钟的调用,中断时可以进行外部的处理.
💻 ASM
字号:
DATA SEGMENT
DIS DB 'THIS IS A 8259A INTERRUPPT!',0DH,0AH,'$'
KEEPIMR DB ?
INTA00 EQU 020H                   ;A0=0
INTA01 EQU 021H                   ;A0=1
EOI EQU 20H
INT_TYPE EQU 08H                   ;起始中断号
INTIRQ3 EQU 0BH
IMRIRQ3 EQU 11110111B;
DATA ENDS
STACK SEGMENT
STACK ENDS
CODE SEGMENT
      ASSUME CS:CODE,DS:DATA,SS:STACK
START: MOV AX,DATA
       MOV DS,AX
       CLI                      ;关中断
       MOV AH,35H               ;取原中断向量
       MOV AL,INTIRQ3
       INT 21H
       PUSH BX
       PUSH ES
       PUSH DS
       MOV AX,SEG INTPROC
       MOV DS,AX
       MOV DX,OFFSET INTPROC
       MOV AH,25H                ;送入新中断向量
       MOV AL,INTIRQ3
       INT 21H
       POP DS
       IN AL,INTA01               ;OCW1取屏蔽字
       MOV KEEPIMR,AL             ;保存屏蔽字
       AND AL,IMRIRQ3             ;开IRQ1(键盘),IRQ3中断
       OUT INTA01,AL              ;开IRQ3中断源
       MOV BX,10                  ;共10次
       STI
       CMP BX,0H                     ;BX=0?
       JZ A22
NEXT:   MOV AH,01H                  ;读按键
        INT 16H
        JZ NEXT
        MOV AH,0H                    ;读键值
        INT 16H
        CMP AL,'y'
        JNZ NEXT
A22:    MOV AL,KEEPIMR         ;恢复原中断屏蔽字
        OUT INTA01,AL
        POP ds
        POP dX
        MOV AH,25H             ;DS:DX置换AL中中断向量号对应的绝对地址
        MOV AL,INTIRQ3         ;恢复原中断向量
        INT 21H
        MOV AH,4CH             ;返回DOS
        INT 21H
;用户中断程序
INTPROC PROC FAR
        STI                     ;开中断
        PUSH AX
        PUSH BX
        PUSH DS
        MOV AX,DATA
        MOV DS,AX
A00:    MOV AH,07H             ;下滚当前页调用(开窗口)
        MOV AL,1                ; 下滚行数
        MOV CH,5               ;左上角
        MOV CL,10
        MOV DH,20              ;右下角
        MOV DL,65
        INT 10H
        MOV AH,02H              ;定位光标
        MOV DH,0               ;光标行列
        MOV DL,0
        INT 10H
        LEA DX,DIS             ;显示
        MOV AH,09H
        INT 21H
        MOV AL,EOI             ;发EOI命令
        OUT  INTA00,AL
        POP DS
        POP BX
        POP AX
        DEC BX
        STI
        IRET                   ;中断返回
INTPROC ENDP
CODE ENDS
       END START
        
        
        
        

⌨️ 快捷键说明

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