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
correlati: http://stackoverflow.com/questions/3392831/what-happens-in-an-interrupt-service -routine –