assembly - ¿Es posible hacer una interrupción personalizada en ensamblaje?
x86 interrupt (1)
Sí, puede crear su propio manejador de interupload y llamarlo cuando lo desee. Tendrá que configurar el vector de interrupción (que comienza en la dirección 0000: 0000) para que apunte a su propio manejador de interrupciones.
El puntero a cada manejador consume 4 bytes (desplazamiento y segmento) por lo que si, por ejemplo, desea configurar su manejador de interrupciones para INT 22h, debería actualizar el vector de interconexión en la ubicación 0000: 0088h para apuntar a su manejador.
Verifique la lista de interrupciones de Ralph Brown para verificar un número de interrupción no utilizado (al menos uno que no sea utilizado por un interrput de hardware).
Aquí hay un ejemplo de cómo configurar un controlador para la interrupción 22h:
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
En Assembly Language tenemos la interrupción DOS INT 21h, que no es una interrupción de hardware.
Me preguntaba si era posible escribir mi propia interrupción y llamarla.
Si es posible, sugiera enlaces o métodos.