intirq0.asm
来自「汇编终结....此程序讲述了在软件开发的底层,如何通过汇编来开发高效的驱动程序」· 汇编 代码 · 共 79 行
ASM
79 行
INTA00 EQU 20H
INTA01 EQU 21H
DATA SEGMENT
MESS DB 'THIS IS A 8259A INTERRUPT!',0AH,0DH,'$'
FLAG DB 0
INTMASK DB ?
CSREG DW ?
IPREG DW ?
DATA ENDS
STACK SEGMENT STACK 'STACK'
DB 50 DUP (?)
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
START: CLI
MOV AX,DATA
MOV DS,AX
MOV AX,3508H
INT 21H
MOV AX,ES
MOV CSREG,AX
MOV IPREG,BX
PUSH DS
MOV AX,CS
MOV DS,AX
MOV DX,OFFSET INT_PROC
MOV AX,2508H
INT 21H
POP DS
MOV DX,INTA01
IN AL,DX
MOV INTMASK,AL
AND AL,0FEH
OUT DX,AL
MOV BX,10
STI
LL: MOV AL,FLAG
CMP AL,01H
JNZ LL
CLI
MOV AL,INTMASK
MOV DX,INTA01
OUT DX,AL
MOV DX,IPREG
MOV AX,CSREG
MOV DS,AX
MOV AX,2508H
INT 21H
STI
MOV AH,1
INT 21H
MOV AX,4C00H
INT 21H
INT_PROC:PUSH DS
MOV AX,DATA
MOV DS,AX
MOV DX,OFFSET MESS
MOV AH,09
INT 21H
MOV DX,INTA00
MOV AL,20H
OUT DX,AL
DEC BX
JNZ NEXT
MOV AL,01
MOV FLAG,AL
MOV DX,INTA01
IN AL,DX
OR AL,04H
OUT DX,AL
NEXT: POP DS
IRET
CODE ENDS
END START
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?