利用系統匯流排上中斷請求訊號pci_intr,設計乙個單中斷應用。使用單次脈衝模擬中斷產生。編寫中斷處理程式,在顯示器螢幕上顯示乙個字元「9」
實驗程式清單:
intr_ivadd equ 003ch ;intr對應的中斷向量位址
stack1 segment stack
dw 256 dup(?)
stack1 ends
data segment
mes db 'press any key to exit!',0ah,0dh,0ah,0dh,'$'
cs_bak dw ? ;儲存intr原中斷處理程式入口段位址的變數
ip_bak dw ? ;儲存intr原中斷處理程式入口偏移位址的變數
im_bak db ? ;儲存intr原中斷遮蔽字的變數
data ends
code segment
assume cs:code,ds:data
start: mov ax,data
mov ds,ax
mov dx,offset mes ;顯示退出提示
mov ah,09h
int 21h
climov ax,0000h ;替換intr的中斷向量
mov es,ax
mov di,intr_ivadd
mov ax,es:[di]
mov ip_bak,ax ;儲存intr原中斷處理程式入口偏移位址
mov ax,offset myisr
mov es:[di],ax ;設定當前中斷處理程式入口偏移位址
add di,2
mov ax,es:[di]
mov cs_bak,ax ;儲存intr原中斷處理程式入口段位址
mov ax,seg myisr
mov es:[di],ax ;設定當前中斷處理程式入口段位址
in al,21h
mov im_bak,al ;儲存intr原中斷遮蔽字
and al,7fh
out 21h,al
stiwait1: mov ah,1 ;判斷是否有按鍵按下
int 16h
jz wait1 ;無按鍵則跳回繼續等待,有則退出
quit: cli
mov ax,0000h ;恢復intr原中斷向量
mov es,ax
mov di,intr_ivadd
mov ax,ip_bak ;恢復intr原中斷處理程式入口偏移位址
mov es:[di],ax
add di,2
mov ax,cs_bak ;恢復intr原中斷處理程式入口段位址
mov es:[di],ax
mov al,im_bak ;恢復intr原中斷遮蔽暫存器的遮蔽字
out 21h,al
stimov ax,4c00h ;返回到dos
int 21h
myisr proc near ;中斷處理程式myisr
push ax
mov al,39h
mov ah,0eh
int 10h
mov al,20h
int 10h
over: mov al,20h
out 20h,al
pop ax
iret
myisr endp
code ends
end start
用彙編實現8259中斷實驗
網課划水倆月不知悔改就是我本人了 問了班級大佬才弄明白一點的 和使用方法。nout equ 8000h 數碼管輸出位址 icw1 equ 00010011b 單片8259,上公升沿中斷,要寫icw4 icw2 equ 01100000b 中斷號為60h icw4 equ 00011001b 工作在8...
x86中斷(一) 中斷分類
一 中斷分類 x86系統支援256個中斷源,每個中斷源使用0 255數字標識,該標識稱作中斷向量號 即cpu中斷源的中斷號,要與外部中斷的中斷號irq n相區別 cpu通過獲取中斷向量號識別中斷源。256個中斷源可以分為 其中 1 內部中斷 由cpu內部事件及執行軟中斷指令產生,由除法中斷 溢位中斷...
6 中斷系統
外部中斷0實驗 include reg52.h 此檔案中定義了微控制器的一些特殊功能暫存器 typedef unsigned int u16 對資料型別進行宣告定義 typedef unsigned char u8 sbit k3 p3 2 定義按鍵k3 sbit led p2 0 定義p20口是l...