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

📄 intirq0.asm

📁 汇编终结....此程序讲述了在软件开发的底层,如何通过汇编来开发高效的驱动程序
💻 ASM
字号:
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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -