2012-09-17 2 views

risposta

16

Sì, è possibile creare il proprio gestore di interruzione e chiamarlo quando lo si desidera. Sarà necessario impostare il vettore di interrupt (che inizia all'indirizzo 0000: 0000) per indicare il proprio gestore di interrupt.

Il puntatore a ciascun gestore consuma 4 byte (offset e segmento), quindi se ad esempio si desidera impostare il gestore di interrupt per INT 22h si aggiornerebbe il vettore di interrupt nella posizione 0000: 0088h per puntare al gestore.

Controllare Ralph Brown's interrupt list per verificare un numero di interruzione inutilizzato (almeno uno non utilizzato da un interrupt hardware).

qui va un esempio di come impostare un gestore per 22h di interrupt:

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

Ho capito, ma qualcosa come una funzione di scrittura di un file in INT 21H, è la programmazione possibile. Inoltre, puoi dare un esempio di impostazione di un interrupt. Sarebbe di grande aiuto, signore. –

+0

@TotalAnimeImmersion: Sì, puoi fare tutto ciò che vuoi nel gestore di interrupt. Aggiunto un esempio di impostazione del gestore. – gusbro

+0

Grazie mille signore. Davvero aiutato. –