La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Pbn - 13 - 1 © Jaime Alberto Parra Plaza CLASE 13 INTERRUPCIONES E INTERRUPCIONES DE ENTRADA/SALIDA.

Presentaciones similares


Presentación del tema: "Pbn - 13 - 1 © Jaime Alberto Parra Plaza CLASE 13 INTERRUPCIONES E INTERRUPCIONES DE ENTRADA/SALIDA."— Transcripción de la presentación:

1 Pbn © Jaime Alberto Parra Plaza CLASE 13 INTERRUPCIONES E INTERRUPCIONES DE ENTRADA/SALIDA

2 Pbn © Jaime Alberto Parra Plaza TEMA 1 INTERRUPCIONES

3 Pbn © Jaime Alberto Parra Plaza El microprocesador provee un mecanismo para que la comunicación con los periféricos sean fácil de implementar, éste es el de las interrupciones. Puede decirse que un uP cuando está activo estará en una de dos situaciones: Ejecutando el programa actual Atendiendo una interrupción

4 Pbn © Jaime Alberto Parra Plaza Una instrucción de interrupción, en su forma más simple, permite llamar una subrutina. Estas subrutinas han sido implementadas para darle al usuario la capacidad de interactuar con los servicios disponibles en la BIOS o en la parte interna del sistema operativo, ya sea para comunicarse con los periféricos o para manejar el sistema de archivos.

5 Pbn © Jaime Alberto Parra Plaza La dirección de inicio de las subrutinas se almacena en una tabla al comienzo de la RAM (tabla de vectores de interrupción), la cual es accesible a cualquier programa. La subrutina que es invocada se conoce como servicio de interrupción. La sintaxis de la orden es: INTn donde n es un número entre 0 y 255.

6 Pbn © Jaime Alberto Parra Plaza Cuando aparece esta orden, el uP realiza la siguiente secuencia de pasos: Detectar la instrucción Guardar IP, CS y banderas en la pila Multiplicar el número de int. por 4 Cargar CS e IP con los nuevos valores Ejecutar el código en la nueva dirección Continuar ejecutando hasta llegar a IRET Retraer de la pila IP, CS y banderas Continuar el programa anterior

7 Pbn © Jaime Alberto Parra Plaza CS IP INT 7 Segmento de código actual uP MEMORIA 1. DETECTAR LA INSTRUCCIÓN:

8 Pbn © Jaime Alberto Parra Plaza uP CS IP Flags MEMORIA Pila 2. GUARDAR IP, CS Y BANDERAS EN LA PILA:

9 Pbn © Jaime Alberto Parra Plaza 3. MULTIPLICAR n POR 4: p n * 4 Para el ejemplo: p 7 * 4 p 28

10 Pbn © Jaime Alberto Parra Plaza 4. CARGAR CS E IP CON LOS VALORES APUNTADOS POR p: IP0 : [ p ] CS0 : [ p + 2 ] Estos valores son el segmento y el desplazamiento del servicio a la interrupción y se llaman vectores de interrupción.

11 Pbn © Jaime Alberto Parra Plaza MEMORIA uP IP CS primer Kilobyte

12 Pbn © Jaime Alberto Parra Plaza MEMORIA uP 1a. instrucción nuevo segmento de Código CS IPIRET última instrucción 5. EJECUTAR EL CÓDIGO QUE INDICA LA NUEVA DIRECCIÓN:

13 Pbn © Jaime Alberto Parra Plaza MEMORIA uP CS IPIRET 6. CONTINUAR EJECUTANDO EL SERVICIO HASTA HALLAR LA ORDEN IRET (RETORNAR DE INTERRUPCIÓN):

14 Pbn © Jaime Alberto Parra Plaza CS IP Flags uP MEMORIA Pila 7.EXTRAER DE LA PILA LOS ANTIGUOS VALORES DE CS, IP Y BANDERAS:

15 Pbn © Jaime Alberto Parra Plaza Segmento de Código actual MEMORIA uP CS IP INT 7 8. CONTINUAR LA EJECUCIÓN DEL PROGRAMA ANTERIOR:

16 Pbn © Jaime Alberto Parra Plaza El sistema operativo MS-DOS se compone de una serie de miniprogramas, que dan soporte al manejo de recursos físicos y de recursos lógicos. Todo el sistema operativo está hecho en assembly puro y llano, igual al que se usa para crear programas de usuario. La estructura del DOS es:

17 Pbn © Jaime Alberto Parra Plaza COMMAND. COM Manejadores de Dispositivos Estándares MSDOS. SYS IO.SYS y BIOS

18 Pbn © Jaime Alberto Parra Plaza INTÉRPRETE DE COMANDOS (COMMAND.COM) Interacciona con el usuario y traduce las órdenes que éste ingresa en llamados a los programas que realizan esas tareas.

19 Pbn © Jaime Alberto Parra Plaza MANEJADORES DE DISPOSITIVOS ESTÁNDARES Traducen órdenes de alto nivel en comandos para los periféricos. Estas rutinas pueden ser invocadas por el Intérprete de Órdenes o por un programa de usuario.

20 Pbn © Jaime Alberto Parra Plaza MANEJADORES DE RECURSOS LÓGICOS (MSDOS.SYS) Funciones para manejo de archivos y de directorios. Traducen órdenes abstractas como abrir archivo o cambiar directorio a las órdenes físicas que hacen tales labores.

21 Pbn © Jaime Alberto Parra Plaza DRIVERS DE RECURSOS FÍSICOS (IO.SYS) Funciones y Servicios para manejo de periféricos a nivel físico. Estas rutinas, que actúan en coordinación con las rutinas de la ROM-BIOS, se entienden con los periféricos a nivel hardware.

22 Pbn © Jaime Alberto Parra Plaza Cuando el sistema se inicializa, se cargan las funciones de MSDOS.SYS e IO.SYS desde disco y se llena la tabla de vectores de interrupción con las direcciones de cada función. Estas funciones usualmente están en la ROM BIOS o, si son actualizaciones, en el IO.SYS. Pueden incluso estar en la memoria convencional, si el usuario ha decidido remplazar la función de atención nativa por una creada por él o por un proveedor.

23 Pbn © Jaime Alberto Parra Plaza Ejemplos de funciones disponibles: Soporte Lógico: Crear directorio Abrir archivo Leer archivo, etc. Soporte Físico: Inicializar impresora Mover cursor Cambiar modo de pantalla Leer teclado Escribir vídeo, etc.

24 Pbn © Jaime Alberto Parra Plaza Tanto las funciones DOS (de MSDOS.SYS) como las funciones BIOS (de IO.SYS) se invocan con números de interrupción. Es natural que las funciones DOS sean de más alto nivel, pues no se relacionan directamente con el hardware, como sí lo hacen las interrupciones BIOS. Prácticamente, casi todas las funciones DOS están incluídas en una sola interrupción, la INT 21H, cada función se discrimina dando el número de la función.

25 Pbn © Jaime Alberto Parra Plaza El esquema típico de llamado es: MOV AH, nf ; nf es el número de función a solicitar ; llenar, eventualmente, otros registros con ; información necesaria para la función INT 21H ; invocar los servicios DOS ; recoger, si corresponde, valores ; retornados por la función en registros ; específicos

26 Pbn © Jaime Alberto Parra Plaza TEMA 2 INTERRUPCIONES DE ENTRADA / SALIDA (E/S)

27 Pbn © Jaime Alberto Parra Plaza De todos los servicios, aquéllos que son indispensables para crear programas de cierta utilidad, son los que permiten interactuar con un usuario, es decir, los servicios de entrada de información por teclado y los servicios de salida de información por vídeo. Cada servicio de interrupción será explicado siguiendo el siguiente formato:

28 Pbn © Jaime Alberto Parra Plaza función: un nombre significativo, preferiblemente el nombre de la función equivalente en lenguaje C, si existe. propósito: explica qué hace la función. entrada: muestra qué parámetros recibe la función y en qué registros deben colocarse.

29 Pbn © Jaime Alberto Parra Plaza salida: indica qué valor(es) retorna la función y en qué registros quedan ubicados. observación: campo opcional, que se coloca cuando se requiera dar una explicación más amplia sobre alguno de los campos anteriores. ejemplo: código que muestra cómo usar la función.

30 Pbn © Jaime Alberto Parra Plaza INTERRUPCIONES DE ENTRADA: Las funciones básicas con la entrada estándar (teclado) son: 1. Indagar si se ha pulsado alguna tecla 2. Leer una tecla sin mostrarla en pantalla 3. Leer una tecla mostrándola en pantalla Antes de ver estas funciones, es conveniente aclarar unos aspectos sobre el teclado:

31 Pbn © Jaime Alberto Parra Plaza TECLAS Y CÓDIGOS: El teclado original del IBM poseía sólo las teclas para edición básica: a. Letras: a, b, c, , y, z. b. Números: 0, 1,......, 8, 9. c. Signos de puntuación:, ;. : !, etc. d. Teclas de edición: TAB, ENTER, ESCAPE, BackSpace, etc.

32 Pbn © Jaime Alberto Parra Plaza Cada una de estas teclas puede asociarse con un código ASCII entre 1 y 255 (no se usan todos) y casi todas tienen un símbolo asociado que puede escribirse en pantalla. A este teclado se le llama estándar y a las teclas que en él están se les llama normales.

33 Pbn © Jaime Alberto Parra Plaza Los teclados actuales poseen teclas adicionales: a. De función: F1, F2, etc. b. De movimiento del cursor:,, HOME, PgUp, etc. c. De combinación: CTRL-tecla, ALT-tecla.

34 Pbn © Jaime Alberto Parra Plaza A este teclado se le llama extendido y a las teclas adicionales se les llama especiales. Para diferenciar las teclas especiales de las normales, se les asigna a aquéllas un código de 2 bytes: El primero siempre es el carácter NULO (ASCII 0) y el segundo es el código de la tecla. Estas teclas por lo general no tienen un símbolo asociado, así que cuando se intenta imprimir en pantalla no siempre se obtiene un símbolo significativo.

35 Pbn © Jaime Alberto Parra Plaza INTERRUPCIONES PARA ENTRADA BÁSICA: 1. DETECTAR ESTADO DEL TECLADO: Función:kbhit() Propósito:Detectar si una tecla ha sido pulsada Entrada: AH = 0BH Salida: AL = FFH si hay carácter disponible, AL = 00H si no hay.

36 Pbn © Jaime Alberto Parra Plaza Ejemplo: WAIT: MOVAH, 0BH INT21H IF23: CMPAL, 0FFH; hay tecla pulsada? JE KEYPRESSED; si: procesarla JMPWAIT; no: esperar

37 Pbn © Jaime Alberto Parra Plaza 2. LEER TECLA SIN HACER ECO: Función: getch() Propósito: Leer una tecla sin hacer eco a la pantalla (sin mostrarla) Entrada: AH = 08H Salida: AL = carácter leído Observación: Si el carácter leído es 0, indica un carácter especial, en este caso debe invocarse el servicio nuevamente para obtener el código de la tecla especial.

38 Pbn © Jaime Alberto Parra Plaza Ejemplo: WAIT_ESC: MOVAH, 08H INT21H IF14: CMPAL, 27; ¿pulsada ESC? JEBYE; si: terminar JMPWAIT_ESC; no: esperar

39 Pbn © Jaime Alberto Parra Plaza 3. LEER TECLA HACIENDO ECO A LA PANTALLA: Función: getche() Propósito:Leer una tecla haciendo eco a la pantalla (mostrándola) Entrada:AH = 01H Salida:AL = carácter leído Observaciones:Igual que getch().

40 Pbn © Jaime Alberto Parra Plaza Ejemplo: MOVAH, 01H INT21H CMPAL, 00H; ¿es especial? JNENORMAL_KEY MOVAH, 01H; sí es especial,... INT21H;... leer el código MOVtecla, AL MOVtipo, E ;

41 Pbn © Jaime Alberto Parra Plaza ; JMPCONTINUE NORMAL_KEY: MOVtecla, AL MOVtipo, N CONTINUE:

42 Pbn © Jaime Alberto Parra Plaza INTERRUPCIONES PARA SALIDA BÁSICA: 1. ESCRIBIR UN CARACTER EN PANTALLA: Función:putch() Propósito: Escribir un carácter ASCII en la pantalla Entrada:AH = 02H, DL = carácter a escribir Salida:Ninguna.

43 Pbn © Jaime Alberto Parra Plaza Ejemplo: MOVDL, A MOVAH, 02H INT21H; escribir la letra A

44 Pbn © Jaime Alberto Parra Plaza MANEJO DE CADENAS: La interrupción 21H posee servicios tanto para leer cadena (funciones 0AH y 3FH) como para escribir cadena (funciones 09H y 40H). Sin embargo, el instructor desaprueba su uso, puesto que precisan que las cadenas estén en un formato que es incompatible con los estándares para manejo de cadenas.

45 Pbn © Jaime Alberto Parra Plaza CADENAS ASCIIZ: Dado que una cadena es una sucesión de caracteres, se precisa, para su adecuado manejo, saber dos cosas: El código en que se representan los caracteres El número de caracteres que forman la cadena

46 Pbn © Jaime Alberto Parra Plaza El estándar que usan la mayoría de computadores y de sistemas para representar cadenas es el llamado ASCIIZ cuyo nombre indica que: Los caracteres se representan usando el código ASCII La longitud de la cadena es desconocida, pero se sabe que termina con el carácter ASCII 0 o carácter NULO

47 Pbn © Jaime Alberto Parra Plaza Para manipular cadenas, se utilizarán dos funciones implementadas por el instructor (explicadas en detalle posteriormente). Este enfoque ofrece dos ventajas: Se comprende que, cuando el sistema operativo no ofrece un servicio que se requiere, puede crearse a partir de los que si ofrece Es un excelente ejemplo para aprender a implementar funciones

48 Pbn © Jaime Alberto Parra Plaza FUNCIONES GETS Y PUTS: Se han implementado dos macros que permiten leer (gets) o escribir (puts) una cadena. Gets lee una sucesión de caracteres y le añade un terminador NULO. Puts escribe en pantalla una cadena que sea terminada por ASCII 0.

49 Pbn © Jaime Alberto Parra Plaza LEER UNA CADENA: Función:gets max, cadena Propósito:Leer caracteres desde el teclado hasta que se presione ENTER o hasta que se lean max caracteres Entrada:max: máximo número de caracteres a leer (hasta 255) cadena: puntero a un buffer en memoria donde se alojará la cadena leída Salida:Ninguna.

50 Pbn © Jaime Alberto Parra Plaza Ejemplo: RespuestaDB50 DUP (?) ; buffer para guardar la cadena Gets49, Respuesta ; dar el máximo de caracteres permitidos,... ;... se debe dejar un byte libre para el final... ;... de cadena

51 Pbn © Jaime Alberto Parra Plaza ESCRIBIR UNA CADENA: Función:puts cadena Propósito:Escribir los caracteres de cadena en pantalla hasta encontrar un carácter ASCII 0 Entrada:cadena: puntero a un buffer en memoria donde reside la cadena a escribir Salida:Ninguna.

52 Pbn © Jaime Alberto Parra Plaza Ejemplo: MensajeDB¡Hola mundo!, 0 ; cadena a escribir (¡recordar el terminador!) PutsMensaje ; interactuar con el mundo real

53 Pbn © Jaime Alberto Parra Plaza INTERRUPCIONES HARDWARE Lo descrito hasta ahora corresponde a las llamadas interrupciones software, nombre que indica que los servicios se invocan desde dentro de un programa. Existen también las interrupciones hardware en donde la petición de servicio se hace desde fuera del microprocesador, ya sea desde un periférico o un chip de soporte.

54 Pbn © Jaime Alberto Parra Plaza A grandes rasgos, para activar una interrupción por hardware, se debe colocar un valor binario 0 en una entrada de control del uP llamada también INT. Cada vez que el uP realiza una instrucción, consulta el estado de esta línea y, si está en 0, procede a entrar en un estado llamado atención a interrupción hardware.

55 Pbn © Jaime Alberto Parra Plaza En este estado se realiza un intercambio de información entre el uP y el elemento que solicita el servicio (SR), siendo un proceso en el cual intervienen activamente entidades hardware y software. Para que la comunicación tenga éxito, ambas partes deben estar de acuerdo en comunicarse siguiendo un protocolo común:

56 Pbn © Jaime Alberto Parra Plaza ATENCIÓN A UNA INT. HARDWARE: El SR activa el pin INT El uP termina de ejecutar la instrucción actual y consulta el pin INT Como el pin INT está activado procede a responder activando el pin INTA El SR coloca en el bus de datos el número de interrupción que desea El uP procede a realizar el servicio

57 Pbn © Jaime Alberto Parra Plaza PREGUNTA 13 ¿Cómo utiliza el computador el chip PIC 8259 (controlador de interrupciones programable) para aumentar la capacidad de atención de interrupciones del microprocesador?.

58 Pbn © Jaime Alberto Parra Plaza


Descargar ppt "Pbn - 13 - 1 © Jaime Alberto Parra Plaza CLASE 13 INTERRUPCIONES E INTERRUPCIONES DE ENTRADA/SALIDA."

Presentaciones similares


Anuncios Google