?? 8259a中斷控制irq2的應用.asm
字號:
data segment
msg db ' THIS IS A 8259A INTERRUPT!',0ah,0dh,'$'
p21 db ?
p20 db ?
data ends
code segment
assume cs:code,ds:data
start: mov ax,data ;數據段初始化
mov ds,ax
cli ;關中斷
mov ah,35h
mov al,0bh ;送IRQ3類型碼0bH
int 21h ;保存系統原中斷向量
push bx ;保護現場
push es
push ds
mov bx,10 ;設置中斷次數
mov ax,seg useint ;保存新中斷向量
mov ds,ax
mov dx,offset useint
mov ah,25h ;DOS功能調用
mov al,0bh ;送IRQ3類型碼0bH
int 21h
pop ds
in al,21h
mov p21,al
mov al,0f7h ;開IRQ3中斷源
out 21h,al
in al,20h
mov p20,al
out 20h,al
sti
next: nop ;循環等待
cmp bx,0
jne next
mov al,p21 ;恢復原中斷屏蔽字
out 21h,al
pop ds ;恢復現場
pop dx
mov ah,25h
mov al,0bh ;恢復原系統中斷向量
int 21h
mov ah,4ch ;返回DOS
int 21h
useint proc far ;中斷服務程序
sti ;開中斷
dec bx
push ax ;保護現場
push bx
push ds
mov ax,data ;設置用戶段
mov ds,ax
mov dx,offset msg ;取要顯示的字符串地址
mov ah,09h ;顯示字符串
int 21h
mov al,20h ;發EOI命令
out 20h,al
pop ds ;恢復現場
pop bx
pop ax
iret ;中斷返回
useint endp
code ends
end start
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -