interrupciones asociadas a la pantalla

Upload: gerardo-pingo

Post on 07-Oct-2015

222 views

Category:

Documents


0 download

DESCRIPTION

Interrupciones para el curso de Microcomputadoras I

TRANSCRIPT

  • Definicin de interrupcinUna interrupcin es un estado en el cual el microprocesador detiene la ejecucin de un programa para atender una peticin especial solicitada por el propio programa o por un dispositivo fsico conectado al microprocesador externamente.Las interrupciones fueron creadas para facilitar al programador el acceso a los diferentes dispositivos de la computadora (puertos de comunicaciones, terminales, impresoras, etc.).

  • Ejecucin de una interrupcinCuando durante la ejecucin de un programa se produce una interrupcin, el Microprocesador realiza los siguientes pasos:1.- Detiene la ejecucin del programa2.- Almacena los registros CS, IP y Banderas en la pila3.- Modifica el CS y el IP para que apunten a la direccin donde se encuentra la rutina de interrupcin.4.- Ejecuta las instrucciones de la rutina de interrupcin.5.- Restablece usando la instruccin RETI los valores originales de los registros CS, IP y Banderas.6.- Continua con la ejecucin del programa en el punto donde fue interrumpido.

    Las rutinas se almacenan en la memoria de la computadora cada vez que sta esinicializada, a esto se le conoce como vector de interrupciones.

  • Tipos de interrupcionesEl microprocesador puede atender dos tipos de interrupciones: interrupciones por software e interrupciones por hardware (internas y externas).

  • Interrupciones internas de hardwareLas interrupciones internas son generadas por ciertos eventos que surgen durante la ejecucin 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 interrupcin varias veces durante un segundo para mantener la hora actualizada.

    Aunque no podemos manejar directamente esta interrupcin (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. nicamente debemos escribir un programa que lea el valor actual del contador y lo traduzca a un formato entendible para el usuario.

  • Interrupciones externas de hardwareLas interrupciones externas las generan los dispositivos perifricos, como pueden ser: teclado, impresoras, tarjetas de comunicaciones, etc. Tambin 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 funcin 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 comunicacin llamadas puertos.

  • Interrupciones de softwareLas interrupciones de software pueden ser activadas directamente por el ensamblador invocando al nmero de interrupcin deseada con la instruccin INT.El uso de las interrupciones nos ayuda en la creacin de programas, utilizandolas nuestros programas son ms cortos, es ms fcil entenderlos y usualmente tienen un mejor desempeo debido en gran parte a su menor tamao.Este tipo de interrupciones podemos separarlas en dos categorias: las interrupciones del sistema operativo DOS y las interrupciones del BIOS.La diferencia entre ambas es que las interrupciones del sistema operativo son ms fciles de usar pero tambin son ms lentas ya que estas interrupciones hacen uso del BIOS para lograr su cometido, en cambio las interrupciones del BIOS son mucho ms rpidas pero tienen la desventaja que, como son parte del hardware son muy especficas y pueden variar dependiendo incluso de la marca del fabricante del circuito.La eleccin del tipo de interrupcin a utilizar depender unicamente de las caracteristicas que le quiera dar a su programa: velocidad (utilizando las del BIOS) o portabilidad (utilizando las del DOS).

  • Interrupcin 10H.

    Propsito: Llamar a diversas funciones de video del BIOS.Sintaxis: Int 10HEsta interrupcin 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.

  • INT 10H Funcin 00H Establecer modo de Vdeo LLAMADA: AH = 00H AL = Modo de vdeo. DEVUELVE: NADA.

    EFECTO: Selecciona y activa el modo de vdeo especificado. A no ser que se utilice el truco que se indica a continuacin, al llamar a esta funcin, se borra la pantalla. Pero se borra el contenido de pantalla. Por suerte hay una especie de 'truco' para evitar este borrado automtico de la pantalla. Consiste en poner con valor 1 el bit 7 del registro AL (que contiene el modo de vdeo) en la llamada a la funcin. As por ejemplo, si queremos cambiar a modo 13h, y queremos que se pierda el contenido que hubiera en la pantalla en este modo, en vez de introducir en AL el nmero 13h (00010011b), introduciramos el nmero 93h (10010011b). TARJETA GRAFICA: TODAS (MDA, CGA, EGA, MCGA, VGA...)

  • Modos de vdeo y caractersticas principalesModos superiores al 13h pertenecen a tarjetas Super-VGA superior.

  • INT 10H Funcin 01H Establecer tamao del Cursor LLAMADA: AH = 01H Bits 0-4 de CH = Lnea inicial del Cursor Bits 0-4 de CL = Lnea final del Cursor. DEVUELVE: NADA. EFECTO: Se selecciona un nuevo tamao de Cursor en modo texto.

  • INT 10H Funcin 02H Posicionar el Cursor LLAMADA: AH = 02H BH = Pgina de vdeo DH = Lnea donde situar el cursor DL = Columna donde situar el cursor DEVUELVE: NADA.

    EFECTO:Posiciona el cursor en pantalla, de acuerdo a las coordenadas indicadas en los registros DH y DL Slo se desplazar el cursor si la pgina de vdeo indicada mediante BH es la pgina de vdeo activa. Esto es as ya que existe un cursor independiente para cada una de las pginas de vdeo con las que contamos en el modo actual.Las coordenadas para la columna empiezan a partir de 0. Las coordenadas para la fila empiezan a partir de 0. Esto quiere decir que la esquina superior izquierda de la pantalla tendr las coordenadas (lnea=0,columna=0). La columna mxima es la 39 (si estamos en un modo de vdeo de 40 columnas) la 79 (si estamos en un modo de vdeo de 80 columnas). La lnea mxima es la 24 (si estamos en un modo de vdeo de 25 lneas) la 49 (si estamos en un modo de vdeo de 50 lneas). (Un 'truco' para hacer desaparecer el cursor de la pantalla consiste en dar valores no vlidos para la columna o la fila. Por ejemplo, si damos a la columna el valor 100, el cursor desaparece de la pantalla)

  • INT 10H Funcin 03H Buscar posicin del Cursor y Tamao LLAMADA: AH = 03H BH = Pgina de vdeo. DEVUELVE: CH = Lnea inicial del cursor CL = Lnea final del cursor DH = Fila donde se encuentra el cursor DL = Columna donde se encuentra el cursor

    EFECTO: Obtiene las coordenadas del cursor en una pgina de vdeo dada. Tambin se obtiene el tamao del cursor.

  • INT 10H Funcin 05H Establecer nueva pgina de vdeo LLAMADA: AH = 05H AL = Pgina de vdeo. DEVUELVE: NADA. EFECTO: Establece como activa la nueva pgina de vdeo indicada mediante el registro AL, mostrndose por pantalla el contenido de esa pgina de vdeo, y situando el cursor en la posicin que le corresponda para esa pgina de vdeo. Las pginas posibles para cada modo de vdeo son:Los modos de vdeo 11h en adelante cuentan slo con una pgina de vdeo.

  • INT 10H Funcin 06H Desplazar lneas de texto hacia arriba LLAMADA: AH = 06H AL = Nmero de lneas a desplazar. Si AL=0, se borra toda la ventana seleccionada mediante los registros CX y DX BH = Atributo a usar en las lneas borradas. CH = Lnea donde comienza la ventana de texto. CL = Columna donde comienza la ventana de texto. DH = Lnea donde acaba la ventana de texto. DL = Columna donde acaba la ventana de texto. DEVUELVE: NADA.

    EFECTO: Desplaza hacia arriba un nmero determinado de lneas en la ventana especificada mediante los registros CX y DX. Las lneas desplazadas, quedan vacas, rellenndose con blancos. El color utilizado en estas lneas vacas se indica mediante el registro BH.

  • INT 10H Funcin 07H Desplazar lneas de texto hacia abajo LLAMADA: AH = 07H AL = Nmero de lneas a desplazar. Si AL=0, se borra toda la ventana seleccionada mediante los registros CX y DX BH = Atributo a usar en las lneas borradas. CH = Lnea donde comienza la ventana de texto. CL = Columna donde comienza la ventana de texto. DH = Lnea donde acaba la ventana de texto. DL = Columna donde acaba la ventana de texto. DEVUELVE: NADA. EFECTO: Desplaza hacia abajo un nmero determinado de lneas en la ventana especificada mediante los registros CX y DX . Las lneas desplazadas, quedan vacas, rellenndose con blancos. El color utilizado en estas lneas vacas se indica mediante el registro BH.

  • INT 10H Funcin 08H Leer carcter y atributo LLAMADA: AH = 08H BH = Pgina de vdeo. DEVUELVE: AH = Atributo (color del carcter). AL = Cdigo ASCII del carcter ledo.

    EFECTO: Mediante la llamada a esta funcin, se devuelve en AL el cdigo del carcter situado en la posicin del cursor. As mismo, obtenemos en AH el color de este carcter.

  • INT 10H Funcin 09H Escribir carcter y atributo LLAMADA: AH = 09H AL = Cdigo del carcter a escribir. BH = Pgina de vdeo donde escribir el carcter. BL = Atributo color que va a tener el carcter. CX = Cantidad de veces que se debe escribir el carcter, uno a continuacin de otro. DEVUELVE: NADA. EFECTO: Se escribe un carcter en la posicin actual del cursor, en la pgina de vdeo deseada. El carcter tendr el color indicado mediante BL.

  • INT 10H Funcin 0AH Escribir carcter LLAMADA: AH = 0AH AL = Cdigo del carcter a escribir. BH = Pgina de vdeo donde escribir el carcter. CX = Cantidad de veces que se debe escribir el carcter, uno a continuacin de otro. DEVUELVE: NADA.

    EFECTO: Se escribe un carcter en la posicin actual del cursor, en la pgina de vdeo deseada. El carcter tendr el mismo color que tuviera el carcter antiguo en esa posicin. Es decir, se modifica el carcter, pero no el color. En caso de querer modificar el color del carcter, usar la funcin 09h.

  • INT 10H Funcin 0CH Escribir un punto pixel grfico LLAMADA: AH = 0CH AL = Valor del color a usar. BH = Pgina de vdeo donde escribir el carcter. CX = Columna donde escribir el pixel (coordenada grfica x) CX = Fila donde escribir el pixel (coordenada grfica y) DEVUELVE: NADA.

    EFECTO: Da un nuevo color a un pixel grfico. Funcin vlida slo para modos grficos.

  • INT 10H Funcin 0DH Obtener el color de un pixel grfico LLAMADA: AH = 0DH BH = Pgina de vdeo. CX = Columna del pixel que nos interesa (coordenada grfica x). DX = Fila del pixel que nos interesa (coordenada grfica y). DEVUELVE: AL = Valor del color del pixel.

    EFECTO: Obtiene el color de un punto grfico de la pantalla. Este punto se referenciar mediante las coordenadas grficas (x,y): (CX,DX). Funcin vlida slo para modos grficos.

  • INT 10H Funcin 0FH Obtener el Modo de vdeo actual LLAMADA: AH = 0FH DEVUELVE: AL = Modo de vdeo actual. AH = Cantidad de caracteres que caben en una lnea en el modo de vdeo actual. BH = Nmero de la pgina activa.

    EFECTO: Mediante esta funcin podemos saber en todo momento, en qu modo de vdeo estamos trabajando. La utilidad de esta funcin reside sobre todo en la construccin de programas residentes.

  • EJEMPLOS

    *****