Red de conocimiento informático - Material del sitio web - Después de responder a una interrupción en la PC, ¿cómo encuentra la CPU la dirección de entrada de la subrutina del servicio de interrupción?

Después de responder a una interrupción en la PC, ¿cómo encuentra la CPU la dirección de entrada de la subrutina del servicio de interrupción?

Antes de responder a la interrupción, la CPU protegerá la dirección de instrucción debajo de la instrucción actual en el programa principal. Es decir, coloca el contenido actual de IP y CS en la pila. Después de que la CPU responde a la interrupción, recupera la dirección de instrucción de la pila para encontrar la dirección de entrada de la subrutina del servicio de interrupción.

Los pasos para que la CPU responda a las interrupciones son los siguientes:

①Coloque el código del tipo de interrupción en el registro temporal y guárdelo

②Envíe el contenido; del registro de bandera en la pila, para proteger el estado cuando ocurre la interrupción

③ Borre los indicadores IF y TF para evitar que la interrupción se devuelva al mismo tiempo, y borre TF para evitar que la CPU; desde un solo paso la subrutina de procesamiento de interrupciones. El propósito de borrar TF es evitar que la CPU entre de un solo paso en la rutina del controlador de interrupciones. Un recordatorio especial aquí es que dado que la CPU desactivará automáticamente el indicador IF cuando responda a una interrupción, si el usuario desea anidar interrupciones, el IF debe restablecerse con una instrucción de interrupción abierta en la subrutina de procesamiento de interrupciones;

④ El punto de interrupción de protección se refiere a la dirección de instrucción debajo de la instrucción actual del programa principal cuando responde a una interrupción. Por lo tanto, la acción de proteger el punto de interrupción es colocar el contenido de la IP y CS actuales en la pila, y el punto de interrupción está protegido para que pueda regresar correctamente al programa principal en el futuro;

⑤Según al código de tipo de interrupción obtenido, en el vector de interrupción Busque el vector de interrupción correspondiente en la tabla y cárguelo en IP y CS, es decir, permanecerá y se transferirá automáticamente a la subrutina del servicio de interrupción.