La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

CLASE 13 INTERRUPCIONES E INTERRUPCIONES DE ENTRADA/SALIDA

Presentaciones similares


Presentación del tema: "CLASE 13 INTERRUPCIONES E INTERRUPCIONES DE ENTRADA/SALIDA"— Transcripción de la presentación:

1 CLASE 13 INTERRUPCIONES E INTERRUPCIONES DE ENTRADA/SALIDA

2 TEMA 1 INTERRUPCIONES

3 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 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. 2

5 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: INT n donde n es un número entre 0 y 255.

6 Detectar la instrucción Guardar IP, CS y banderas en la pila
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 3

7 1. DETECTAR LA INSTRUCCIÓN:
CS IP INT 7 Segmento de código actual uP MEMORIA

8 2. GUARDAR IP, CS Y BANDERAS EN LA PILA:
uP CS IP Flags MEMORIA Pila

9 3. MULTIPLICAR n POR 4: p n * 4 Para el ejemplo: p 7 * 4 p 28

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

11 MEMORIA uP IP CS 28 29 30 31 primer Kilobyte

12 5. EJECUTAR EL CÓDIGO QUE INDICA LA NUEVA DIRECCIÓN:
MEMORIA uP 1a. instrucción nuevo segmento de Código CS IP IRET última instrucción

13 6. CONTINUAR EJECUTANDO EL SERVICIO HASTA HALLAR LA ORDEN IRET (RETORNAR DE INTERRUPCIÓN):
MEMORIA uP CS IP IRET

14 7.EXTRAER DE LA PILA LOS ANTIGUOS VALORES DE CS, IP Y BANDERAS:
Flags uP MEMORIA Pila

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

16 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 Manejadores de Dispositivos Estándares
COMMAND. COM Manejadores de Dispositivos Estándares MSDOS. SYS IO.SYS y BIOS

18 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 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 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 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 Cuando el sistema se inicializa, se cargan las funciones de MSDOS
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 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 Tanto las funciones DOS (de MSDOS. SYS) como las funciones BIOS (de IO
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 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 TEMA 2 INTERRUPCIONES DE ENTRADA / SALIDA (E/S)

27 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 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 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 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 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 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 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 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 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 Ejemplo:. WAIT:. MOV. AH, 0BH. INT. 21H IF23:. CMP. AL, 0FFH
Ejemplo: WAIT: MOV AH, 0BH INT 21H IF23: CMP AL, 0FFH ; hay tecla pulsada? JE KEYPRESSED ; si: procesarla JMP WAIT ; no: esperar

37 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 Ejemplo: WAIT_ESC: MOV AH, 08H INT 21H IF14: CMP AL, 27 ; ¿pulsada ESC? JE BYE ; si: terminar JMP WAIT_ESC ; no: esperar

39 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 Ejemplo: MOV AH, 01H INT 21H CMP AL, 00H ; ¿es especial? JNE NORMAL_KEY MOV AH, 01H ; sí es especial, ... INT 21H ; ... leer el código MOV tecla, AL MOV tipo, ‘E’ ; < sigue >

41 ; < viene > JMP CONTINUE NORMAL_KEY: MOV tecla, AL MOV tipo, ‘N’ CONTINUE:

42 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 Ejemplo: MOV DL, ‘A’ MOV AH, 02H INT 21H ; escribir la letra A

44 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 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 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 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 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 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 Ejemplo: Respuesta DB 50 DUP (?) ; buffer para guardar la cadena Gets 49, Respuesta ; dar el máximo de caracteres permitidos, ... ; ... se debe dejar un byte libre para el final ... ; ... de cadena

51 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 Ejemplo: Mensaje DB “¡Hola mundo!”, 0 ; cadena a escribir (¡recordar el terminador!) Puts Mensaje ; interactuar con el mundo real

53 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 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 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 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 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 < FIN DE LA CLASE 13 >


Descargar ppt "CLASE 13 INTERRUPCIONES E INTERRUPCIONES DE ENTRADA/SALIDA"

Presentaciones similares


Anuncios Google