EL TEMA Interrupciones Hardware SE ENCUENTRA ESPERANDO TUS CONOCIMIENTOS.

SOLO USAR BOTON EDIT ABAJO Y EMPIEZA A COLABORAR, SALUDOS Y MUCHAS GRACIAS PROF LAURO SOTO Page link

Interrupciones internas de hardware

Las interrupciones internas son generadas por ciertos eventos que surgen durante la ejecución de un programa.

Este tipo de interrupciones son manejadas en su totalidad por el hardware y no es posible modificarlas.

Un ejemplo claro de este tipo de interrupciones es la que actualiza el contador del reloj interno de la computadora, el hardware hace el llamado a esta interrupción varias veces durante un segundo para mantener la hora actualizada.

Aunque no podemos manejar directamente esta interrupción (no podemos controlar por software las actualizaciones del reloj), es posible utilizar sus efectos en la computadora para nuestro beneficio, por ejemplo para crear un “reloj virtual” actualizado continuamente gracias al contador del reloj interno. Unicamente debemos escribir un programa que lea el valor actual del contador y lo traduzca a un formato entendible para el usuario.

Interrupciones externas de hardware

Las interrupciones externas las generan los dispositivos perifericos, como pueden ser: teclado, impresoras, tarjetas de comunicaciones, etc. También son generadas por los coprocesadores.

No es posible desactivar a las interrupciones externas.

Estas interrupciones no son enviadas directamente a la UCP, sino que se mandan a un circuito integrado cuya función es exclusivamente manejar este tipo de interrupciones. El circuito, llamado PIC 8259A, si es controlado por la UCP utilizando para tal control una serie de vias de comunicación llamadas puertos.

                     interrupción 10H 

Propósito: Llamar a diversas funciones de video del BIOS.

Sintaxis:

                           Int 10H 

Esta interrupción tiene diversas funciones, todas ellas nos sirven para controlar la entrada y salida de video, la forma de acceso a cada una de las opciones es por medio del registro AH.

En este tutorial unicamente veremos algunas de las funciones de esta interrupción.

 Funciones comunes de la interrupción 10H.  
 02H Selección de posición del cursor  
 09H Escribe atributo y caracter en el cursor  
 0AH Escribe caracter en la posición del cursor  
 0EH Escritura de caracteres en modo alfanumérico 
                             Función 02H  
 Uso: 

Posiciona el cursor en la pantalla dentro de las coordenadas válidas de texto.

 Registros de llamada: 

AH = 02H BH = Página de video en la que se posicionará el cursor. DH = Fila DL = Columna

 Registros de retorno: 

Ninguno. Las posiciones de localización del cursor son definidas por coordenadas iniciando en 0,0, que corresponde a la esquina superior izquierda hasta 79,24 correspondientes a la esquina inferior derecha. Tenemos entonces que los valores que pueden tomar los registros DH y DL en modo de texto de 80 x 25 son de 0 hasta 24 y de 0 hasta 79 respectivamente.

                         Función 09H  
 Uso: 

Desplegar un caracter un determinado número de veces con un atributo definido empezando en la posición actual del cursor.

 Registros de llamada: 

AH = 09H AL = Caracter a desplegar BH = Página de video en donde se desplegará BL = Atributo a usar Número de repeticiones.

 Registros de retorno: 

Ninguno Esta función despliega un caracter el número de veces especificado en CX pero sin cambiar la posición del cursor en la pantalla.

                               Función 0AH  
 Uso: 

Desplegar un caracter en la posición actual del cursor.

 Registros de llamada: 

AH = 0AH AL = Caracter a desplegar BH = Página en donde desplegar BL = Color a usar (sólo en gráficos). CX = Número de repeticiones

 Registros de retorno: 

Ninguno. La única diferencia entre esta función y la anterior es que ésta no permite modificar los atributos, simplemente usa los atributos actuales.

Tampoco se altera la posición del cursor con esta función.

                   Función 0EH  
 Uso: 

Deplegar un caracter en la pantalla actualizando la posición del cursor.

 Registros de llamada: 

AH = 0EH AL = Caracter a desplegar BH = Página donde se desplegara el caracter BL = Color a usar (solo en gráficos)

 Registros de retorno: 

Ninguno

                Interrupción 16H 

Propósito: Manejar la entrada/salida del teclado.

Sintaxis:

             Int 16H 

Veremos dos opciones de la interrupción 16H, estas opciones, al igual que las de otras interrupciones, son llamadas utilizando el registro AH.

 Funciones de la interrupción 16H  
 00H Lee un caracter de teclado  
 01H Lee estado del teclado 

Función 00H

 Uso: 

Leer un caracter del teclado.

 Registros de llamada: 

AH = 00H

 Registros de retorno: 

AH = código de barrido (scan code) del teclado AL = Valor ASCII del caracter. Cuando se utiliza esta interrupción se detiene la ejecución del programa hasta que se introduzca un caracter desde el teclado, si la tecla presionada es un caracter ASCII su valor será guardado en el registro AH, de lo contrario el código de barrido será guardado en AL y AH contendrá el valor 00H.

El código de barrido fué creado para manejar las teclas que no tienen una representación ASCII como [ALT], [CONTROL], las teclas de función, etc.

                      Función 01H  
 Uso: 

Leer estado del teclado.

 Registros de llamada: 

AH = 01H

 Registros de retorno: 

Si la bandera de cero, ZF, está apagada significa que hay información en el buffer, si se encuentra prendida es que no hay teclas pendientes. En caso de existir información el registro AH contendrá el código de la tecla guardada en el buffer. Interrupción 17H Propósito: Manejar la entrada/salida de la impresora.

Sintaxis:

       Int 17H 

Esta interrupción es utilizada para escribir caracteres a la impresora, inicializarla y leer su estado.

 Funciones de la interrupción 16H  
 00H Imprime un caracter ASCII  
 01H Inicializa la impresora  
 02H Proporciona el estado de la impresora 
             función 00H  
 Uso: 

Escribir un caracter a la impresora.

 Registros de llamada: 

AH = 00H AL = Caracter a imprimir DX = Puerto a utilizar

 Registros de retorno: 

AH = Estado de la impresora. El puerto a utilizar, definido en DX, se especifica así: LPT1 = 0, LPT2 = 1, LPT3 = 2 …

El estado de la impresora se codifica bit por bit como sigue:

BIT 1/0 SIGNIFICADO


0 1 Se agotó el tiempo de espera 1 - 2 - 3 1 Error de entrada/salida 4 1 Impresora seleccionada 5 1 Papel agotado 6 1 Reconocimiento de comunicación 7 1 La impresora se encuentra libre Los bits 1 y 2 no son relevantes.

La mayoria de los BIOS unicamente soportan 3 puertos paralelos aunque existen algunos que soportan 4.

                    Función 01H  
 Uso: 

Inicializar un puerto de impresión.

 Registros de llamada: 

AH = 01H DX = Puerto a utilizar

 Registros de retorno: 

AH = Status de la impresora El puerto a utilizar, definido en DX, se especifica así: LPT1 = 0, LPT2 = 1, etc.

El estado de la impresora se codifica bit por bit como sigue:

BIT 1/0 SIGNIFICADO


0 1 Se agotó el tiempo de espera 1 - 2 - 3 1 Error de entrada/salida 4 1 Impresora seleccionada 5 1 Papel agotado 6 1 Reconocimiento de comunicación 7 1 La impresora se encuentra libre Los bits 1 y 2 no son relevantes.

La mayoria de los BIOS unicamente soportan 3 puertos paralelos aunque existen algunos que soportan 4.

                         Función 02H  
 Uso: 

Obtener el estado de la impresora.

 Registros de llamada: 

AH = 01H DX = Puerto a utilizar

 Registros de retorno: 

AH = Status de la impresora. El puerto a utilizar, definido en DX, se especifica así: LPT1 = 0, LPT2 = 1, etc.

El estado de la impresora se codifica bit por bit como sigue:

BIT 1/0 SIGNIFICADO


0 1 Se agotó el tiempo de espera 1 - 2 - 3 1 Error de entrada/salida 4 1 Impresora seleccionada 5 1 Papel agotado 6 1 Reconocimiento de comunicación 7 1 La impresora se encuentra libre Los bits 1 y 2 no son relevantes.

La mayoria de los BIOS unicamente soportan 3 puertos paralelos aunque existen algunos que soportan 4.


Google