¿Qué es un programa para residentes?
Hay dos formas de resolver el problema de reentrada. La primera es guardar artificialmente la estructura de datos interna de DOS en su propio búfer antes de ingresar a INT 21H y luego restaurarla una vez completada la ejecución. El método se basa en los datos internos de DOS, y la estructura de datos y la ubicación de los datos de diferentes versiones de DOS son diferentes, lo que es bastante difícil de usar y no es compatible con las versiones más recientes de los sistemas operativos. Se desconoce la compatibilidad con versiones más recientes de sistemas operativos.
El método común es detectar primero el estado de DOS y luego activar el programa residente. Si DOS está inactivo, se puede activar inmediatamente. Si DOS está ocupado, debe esperar hasta que DOS esté inactivo antes de activarse. . Este artículo analiza métodos para detectar el estado de DOS.
De hecho, el propio DOS ha considerado más o menos este problema. Tiene un indicador de InDOS. Al ejecutar una función de DOS, hará +1 en este indicador y saldrá -1. , lo que significa que algunas funciones de DOS obtienen la dirección del indicador InDOS cuando implementan la subfunción INT 21H 34H de la función DOS. El primer byte de este indicador es la dirección de la función DOS y el primer byte de este indicador es la dirección. dirección de la función DOS. Un byte es la dirección de la función DOS. El primer byte de este indicador es la dirección de la función DOS. El byte que precede a este indicador es el indicador de error de emergencia de DOS. Hay dos situaciones especiales en el juicio de ocupado de DOS. Una es que en caso de un error de emergencia, DOS reducirá el indicador de InDOS, por lo que cuando detecta que InDOS es 0, también debe juzgar que el indicador de error es 0, y puede hacerlo. ingrese a DOS de manera segura; otra situación es que algunas funciones de DOS se permiten volver a ingresar. Estos comandos de entrada no necesitan ingresarse en el área de datos interna. Por ejemplo, cuando se espera la entrada del comando y DOS ejecuta la subfunción de entrada. InDOS es 1.0, luego InDOS es 1.0. Por ejemplo, cuando espera la entrada del comando, DOS ejecuta la subfunción de entrada. En este momento, InDOS es 1, pero en realidad está permitido ingresar a DOS. En este caso, DOS enviará continuamente interrupciones INT 28H y el INT original. La función 28H devuelve inmediatamente el INT 28H original sin hacer nada. Los usuarios pueden colgar sus propios programas en INT 28H sin preocuparse por el reingreso de DOS.