8259中斷實驗

2022-09-04 12:39:11 字數 2031 閱讀 2082

利用系統匯流排上中斷請求訊號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...