HABLANDO DE INTERRUPCIONES

jueves, 22 de octubre de 2009

HOLA CUACHITOS AQUI ESTAMOS DE NUEVO:
INTERRUPCION ENMASCARABLE
Interrupción enmascarable significa que, bajo control del software, el procesador puede aceptar o ignorar (enmascarar) la señal de interrupción. Para ello se envía una señal a la patilla INTR , y el procesador la atiende o la ignora en función del contenido de un bit (IF) en un registro (FLAGS) que puede estar habilitado o deshabilitado ( H3.2). En el primer caso, cuando se recibe la señal, el procesador concluye la instrucción que estuviese en proceso y a continuación responde con una combinación de señales en algunas de sus patillas componiendo una sucesión de dos señales INTA ("Interrupt Acknowledge" H3.2.1).

INTERRUPCION NO ENMASCARABLE


Una interrupción no enmascarable (o NMI) es un tipo especial de
interrupción usada en la mayoría de los microordenadores como el IBM PC y el Apple II.
Una interrupción no emascarable causa que la
CPU deje lo que está haciendo, cambie el puntero de instrucción para que apunte a una dirección particular y continúe ejecutando el código de esa dirección. Se diferencia de los otros tipos de interrupción en que los programadores no pueden hacer que la CPU las ignore, aunque algunos ordenadores pueden por medios externos bloquear esa señal, dando un efecto similar al resto de las interrupciones.
INT 21H
La mayoría de servicios ó funciones del sistema operativo MS-DOS se obtienen a través de la interrupción software 21H. Es por esto que se le denomina DOS-API: DOS-APPLICATION-PROGRAM-INTERFACE La INT 21H está compuesta por un grupo de funciones.
DESCRIPCION
La llamada a la INT 21H se realizará como sigue:- Introducimos en (AH) el número de función a la que deseamos acceder.- En caso de que deseemos acceder a una sub-función dentro de una función, debemos indicarlo introduciendo en (AL) el número de esa sub-función.- Llamar a la INT 21H.
PRINCIPALES FUNCIONES
Fin de programa
INT 21H AX = 4C00HDescripción: Esta rutina finalizará el programa y devolverá el control al DOS. Debe llamar a esta rutina para finalizar los programas. Uso: Entrada: AX = 4C00H Salida: Ninguna Registros afectados: Ninguno

Status del teclado
INT 21H AH = 0BH
Descripción: La función de esta rutina es detectar si se ha pulsado una tecla.
Uso: Entrada: AH = 0BH Salida: AL = FF si caracter disponible AL = 0 si caracter no disponible Registros afectados: AL

Entrada de un carácter desde teclado
INT 21H AH = 8H
Descripción: La función de esta rutina es esperar un carácter del teclado sin escribirlo por pantalla y almacenarlo en el registro AL en forma de código ASCII.
Uso: Entrada: AH = 8H Salida: AL = car cter ASCII de la tecla pulsada Registros afectados: AL

Leer una línea de programa
INT 21H AH = 0AH
Descripción: La función de esta rutina es la de obtener una línea de datos del teclado (que finaliza al pulsar el retorno de carro) y almacenarlos en un rea de memoria. Los caracteres son mostrados en la pantalla al ser tecleados.
Uso: Entrada: AH = 0AH DS contiene la dirección del segmento de memoria en el cual se almacenan los datos introducidos. DX contiene la dirección del offset de la zona de memoria del segmento anterior en la que se almacenan los datos. En el primer byte del área debe indicarse el máximo número de caracteres a introducir sin superar 255. Salida: Ninguna en registro En el segundo byte del área se almacena el número de caracteres tecleados sin contar el retorno de carro. Registros afectados: Ninguno

Salida de un carácter por pantalla
INT 21H AH = 2H
Descripción: La función de esta rutina es visualizar un carácter.
Uso: Entrada: AH = 2H DL contiene el código ASCII del carácter a visualizar. Salida: Ninguna Registros afectados: Ninguno
EJEMPLO DE CODIGO
Desplegar un mensaje en pantalla

Uno de los programas más sencillos, pero en cierta forma práctico, es uno que despliegue una cadena de caracteres en la pantalla. Eso es lo que hace el siguiente programa:

Programa :

; Primero definimos el modelo de memoria, en este caso small
.MODEL SMALL.CODE ; Declaramos el área que contendrá el códigoInicio: ; Etiqueta de inicio del programa:MOV AX,@DATA ; Vamos a colocar la dirección del segmento de datos
MOV DS,AX ; en DS, usando como intermediario a AX
MOV DX,OFFSET Cadena ; Colocamos en DX la dirección, dentro del
; segmento, de la cadena a desplegar
MOV AH,09 ; Utilizaremos la función 09 de la interrupción
INT 21H ; 21H para desplegar la cadena.
MOV AH,4CH ; Por medio de la función 4CH de la interrupción
INT 21H ; 21H terminaremos nuestro programa
.DATA ; Declaramos el semento de datos
Cadena DB 'Mensaje del programa.$' ; Cadena a desplegar
.STACK ; Declaramos la pila
END Inicio ; Final de nuestro programa


REFERENCIAS:
De Wikipedia, la enciclopedia libre

Comments

No response to “HABLANDO DE INTERRUPCIONES”
Post a Comment | Enviar comentarios (Atom)

Publicar un comentario