2012-09-17 30 views
7

Montaj Dizininde, INT 21h DOS interrupt'ı var, bu bir donanım kesmesi değil.Montajda özel bir Interrupt yapmak mümkün mü?

Kendi aramamı yazmak ve çağırmak mümkün olup olmadığını merak ediyordum.

Mümkünse, lütfen bağlantı veya yöntem öneriniz.

+0

İlgili:: http://stackoverflow.com/questions/3392831/what-happens-in-an-interrupt-service İşte

kesme 22h için bir işleyici nasıl kurulacağı bir örnek gider -routine –

cevap

16

Evet, kendi giriş işleyicinizi oluşturabilir ve istediğiniz zaman arayabilirsin. Kendi kesme işleyicinize işaret etmek için kesme vektörünü (0000: 0000 adresinde başlayan) ayarlamanız gerekecektir.

Her işleyicinin işaretçisi 4 bayt (ofset ve segment) kullanır; örneğin, INT 22h için kesme işleyicinizi kurmak isterseniz, işleneni işaret etmek için 0000: 0088h adresindeki interrput vektörünü güncellersiniz.

Kullanılmayan bir kesme numarasını (bir donanım girişimi tarafından kullanılmayan en az bir tane) kontrol etmek için Ralph Brown's interrupt list'u kontrol edin.

INITIALIZE: 
     XOR AX,AX 
     MOV ES,AX 
     CLI ; Disable interrupts, might not be needed if seting up a software-only interrupt 
     MOV WORD PTR ES:[136], OFFSET INT22 ; setups offset of handler 22h 
     MOV WORD PTR ES:[138], CS   ; Here I'm assuming segment of handler is current CS 
     STI ; Reenable interrupts 
     ; End of setup 


INT22 PROC FAR 
     ; Here goes the body of your handler 
     IRET 
INT22 ENDP 
+0

Bunu anlıyorum, ancak INT 21H'de bir dosya yazma özelliği gibi bir şey mümkün olan programlama. Ayrıca, bir Interrupt kurmaya bir örnek verebilir misiniz? Çok yardımcı olurdum efendim. –

+0

@TotalAnimeImmersion: Evet, kesme işleyicisinde ne istersen yapabilirsin. İşleyiciyi kurma örneği eklendi. – gusbro

+0

Çok teşekkürler Efendim. Gerçekten yardım etti. –

İlgili konular