UNIVERSIDAD NACIONAL DE SAN AGUSTIN DE AREQUIPAFACULTAD DE INGENIERIA DE PRODUCCION Y SERVICIOS ESCUELA PROFESIONAL DE INGENIERIA ELECTRÓNICA CURSO: PRACTICA ARQUITECTURA DE COMPUTADORAS TURNO: “D” VIERNES 07- 09 AM CMOS Programas residentes y Programación de Interrupciones. INTEGRANTES: FERNANDEZ LOPEZ TORRES, ROY ROGGER 20101713 JUAREZ CHAVEZ, BILLY STEVE 20103748 TICONA OLAZABAL RENZO ALBERTO 20103197 Viernes 12 de Junio del 2015 1 .............................. 13 BIBLIOGRAFIA.... las opciones de configuración y los parámetros.................................................................... 4 Beneficios........ 5 Medición del tiempo.........9 6.................. 2 Programas residentes en memoria..........................................................................................................c std............................................... Describir el setup de la PC..................................... Describir el procedimiento para acceder a una interrupción............................. ..........9 7............................ 15 2 ............................. Traer programas residentes tipeados de los textos especializados en algún lenguaje pequeño portable................. etc).........Contenido 1.................................. 4 Alimentación........................... Traer programa probado fuente y compilado.....6 4............................................ Traer programa de alarmas.................... Describa la dirección base del reloj de tiempo real de la PC y realizar un programa para poder tener acceso a dicho reloj en lectura y escritura.................................................................2 Programa residente....................................................................(asembler.......... pascal. 2 2......... Describir las interrupciones por hardware usadas en la PC cuales están ocupadas y cuales disponibles....................................................................... 7 5..... 5 Leer el Reloj del Sistema.................... 5 3........7 Interrupciones.. Describir las interrupciones por software usadas en la PC cuales están ocupadas y cuales disponibles...........................................................................................................................................11 8........................................................................... Realizar el diseño de un sistema de forma que podamos probar las interrupciones de ambos tipos................................................... Como podemos programar alarmas de acuerdo al uso del reloj de tiempo real de la PC................................................2 Programas..............................basic..4 Reloj en tiempo real........................... Cualquier aplicación que uses en tu ordenador (juego. 00F9h .AX=10 mov bx. Para que quede un poco más claro digamos que por ejemplo cuando dejas de jugar con uno de tus juegos éste libera completamente la memoria pero si usas el antivirus para analizar un archivo.(asembler. etc) Programa residente Un programa residente es un programa que permanece en la memoria del ordenador.INFORME PREVIO: 1. Los programas residentes permanecen todo el tiempo en memoria.. 10 . después de haberlo analizado el antivirus permanece en memoria protegiendo tu ordenador. 4 . I . p2p. Conocer la manera en que se configura las interrupciones tanto por hardware como por software.OBJETIVO: Conocer programación residente en memoria y la configuración del reloj de tiempo real de la PC (leer y escribir el CMOS RAM).45 .BX=0xF9 inc bx . INTERRUPCIONES POR HARDWARE Y SOFTWARE II. Programas residentes en memoria Cada vez que enciendes el ordenador los programas residentes en memoria. Traer programas residentes tipeados de los textos especializados en algún lenguaje pequeño portable. etc) ocupa cierta cantidad de memoria pero cuando cierras el programa la memoria se libera y puede ser utilizada para otro fin. III. se cargan junto con el sistema operativo de forma que estos programas están disponibles desde el primer momento.-TITULO: SOFTWARE-HARDWARE (SETUP) RELOJ DE TIEMPO REAL PROGRAMACION RESIDENTE. como el antivirus. por eso hablamos de programas residentes en memoria. Programas ORG 100h mov ax.c std.. aunque no estés utilizándolo en ese momento y por tanto ocupan permanentemente una porción de la memoria de tu ordenador. editor de imagenes.AX=AX+4 mov cx.BX++ add ax. En el caso del antivirus ésto permite que el sistema esté protegido desde que el ordenador arranca sin que tengas tu que abrir el antivirus cada vez que enciendes el ordenador. pascal.CMOS Programas residentes y Manejo de Interrupciones. word.CX=45 3 .basic. } 4 . 2 comienzo: MOV AX.AX-BX mayor a 0 sub AX.x).BX FIN: Utilizar Loop: ORG 100h MOV CX. 5 mov BX.BX js A_MENOR_B mov CX. else printf("Son iguales"). #include <stdio. 1 MOV DL. if(x>y) printf("El mayor es %f".h> int main(){ double x. AX LOOP comienzo RET Programa en C que lea dos números y que escriba el mayor de los dos. scanf("%lf". printf("Escribe el segundo número").y. 5 MOV BX.CX el valor más grande entre AX Y BX .&y).mov DX. BX MUL DX MOV BX. 5 . AX .sub cx.cx . else if(y>x) printf("El mayor es %f". printf("Escribe el primer número").CX=CX-CX ret Saber si un numero es mayor: name "mayor" mov AX.y).&x). scanf("%lf".AX jmp FIN A_MENOR_B: mov CX. for(int i=1. servidores y sistemas embebidos.h> int main(){ int x.suma). i<=8.&x). printf("Escribe el número (sin decimales"). i++){ scanf("%i". else printf("Es impar"). } Programa C que lea exactamente 8 números y luego escriba la suma de todos ellos #include <stdio. } printf ("Suma= %i". Beneficios Aunque controlar el tiempo puede hacerse sin un RTC usar uno tiene beneficios: Bajo consumo de energía (importante cuando está funcionando con una pila) Libera de trabajo al sistema principal para que pueda dedicarse a tareas más críticas. int suma=0.&x). Describa la dirección base del reloj de tiempo real de la PC y realizar un programa para poder tener acceso a dicho reloj en lectura y escritura. suma+=x. real-time clock. Algunas veces más preciso que otros métodos 5 . Aunque el término normalmente se refiere a dispositivos en ordenadores personales.h> int main(){ int x. if(x%2==0) printf("Es par"). Reloj en tiempo real Un reloj en tiempo real (en inglés. incluido en un circuito integrado. los RTC están presentes en la mayoría de los aparatos electrónicos que necesitan guardar el tiempo exacto. que mantiene la hora actual. RTC) es un reloj de un ordenador. scanf("%i".Programa en C que lea un número e indique si es par o no #include <stdio. } 2. 768 kHz. que generalmente almacena la configuración de la BIOS de la placa base. La Interrupción Int 1Ah Genéricamente esta interrupción permite el acceso al reloj interno de la PC (146818).2 porque son recargables y pueden ser soldados. Medición del tiempo La mayoría de los RTC usan un oscilador de cristal.0 INT 1A MOV AX. que es un ratio muy práctico para usar con circuitos de contadores binarios simples. que la frecuencia es exactamente 2 15 ciclos por segundo. por lo que pueden seguir midiendo el tiempo mientras la fuente de alimentación principal está apagada o no está disponible. y por las mismas razones.4C INT 21 [INTRO] -G 100 -p 6 .2 tics por segundo (65536 es el número de cuentas entre 0000 y FFFF.Alimentación Los RTC a menudo tienen una fuente de alimentación alternativa. esto es 18. Los valores estarán en hexadecimal. pero algunos sistemas nuevos usan un supercapacitor. por lo que hay que convertirlos a decimal para su interpretación Abrimos una sesión de DOS (Inicio/Ejecutar command) y dentro de la ventana de DOS iniciamos DEBUG (C:\> DEBUG [INTRO]) e ingresamos lo siguiente: -A MOV AH. es decir. La fuente de alimentación alternativa también puede suministrar energía a una memoria RAM dentro del mismo RTC. Leer el Reloj del Sistema Se realiza la interrupción 1A con AH=0 En este caso. se usa AH el byte alto del registro AX y devuelve en CX:DX (los valores mayores en CX) el número de tics desde la medianoche a una razón de 18.2 tics por segundo o un tic cada 54.92 ms (milisegundos).3 Ésta es la misma frecuencia usada en los relojes de cuarzo.3 4 pero algunos usan la frecuencia de la fuente de alimentación.5 En muchos casos la frecuencia del oscilador es 32. un registro de 16 bits). Este reloj realiza un conteo de 1193180/65536 tics/segundo. Esta fuente de alimentación alternativa es normalmente una batería de litio en los sistemas antiguos. Si el valor de la hora como el minuto y segundo de la alarma son códigos indiferentes.4C INT 21 [INTRO] -G 100 -P (se ejecuta el MOV) 3. la alarma se producirá cada segundo.1 INT 1A MOV AH. basado en los códigos indiferentes almacenables en los bytes de la alarma. Si el valor de la hora y minuto de alarma son códigos indiferentes. la alarma se producirá cada hora. Traer programa de alarmas. Si el valor de la hora de alarma es un código indiferente. un código indiferente es cualquier valor comprendido entre 0C0h y 0FFh. Como podemos programar alarmas de acuerdo al uso del reloj de tiempo real de la PC. ésta se producirá cada minuto.0 INT 1A MOV AX. La interrupción de alarma se produce cada día cuando llega la hora en que ha sido programada y el bit que permite esta interrupción está habilitado. Una forma de programar la alarma.-p Aquí se leen los valores que aparecen en CD:DX pero están en hex Poner a Cero el Reloj de Sistema Se realiza la interrupción 1A con AH=1 Abrimos una sesión de DOS (Inicio/Ejecutar command) e ingresamos lo siguiente: -A MOV AH. Para configurar la alarma tenemos que tener en cuenta las direcciones de la CMOS: 7 . estableciendo dos puertos de entrada/salida en las direcciones 70h y 71h. también es puesto a cero tras un -RESET. tras una señal -RESET es puesto a 0. El bit UIE (Update Interrupt Enable) sirve para habilitar o inhibir la interrupción de fin de actualización. 03 y 05 podremos activar las alarmas. para habilitar o inhibir las diversas interrupciones y para establecer ciertas características de operación. pero además debemos configurar el registro B. que se produciría tras cada actualización del reloj. incluyendo la posibilidad de programar la alarma (que 8 . A nivel de interrupciones. El bit PIE (Periodic Interrupt Enable) sirve para permitir la interrupción periódica cuando es puesto a 1. la salida -IRQ del MC146818 está conectada a IRQ8 (INT 70h) a través del segundo controlador de interrupciones. basta con enviar al puerto 70h el número de registro y a continuación leer o escribir del puerto 71h. El MC146818 está diseñado para ser conectado a un bus multiplexado. por lo que la circuitería de apoyo se encarga de gestionar la comunicación con el microprocesador. El bit AIE (Alarm Interrupt Enable) ha de estar a 1 para habilitar la interrupción de alarma. REGISTRO B (lectura/escritura) En este registro se encuentran los bits para controlar la inicialización de la fecha y hora.Como vemos entonces almacenando los valores especificados en los bytes 01. Desde la interrupción 1Ah. de lo contrario la operación fallará. Entre los accesos a ambos puertos debe mediar un tiempo mínimo. Para leer o escribir cualquier registro de la RAM CMOS. la BIOS implementa una serie de servicios para acceder al reloj de tiempo real. No respetar este principio puede provocar la lectura de fechas u horas incorrectas o una errónea asignación de valores. se solicita al procesador que suspenda lo que está haciendo para atender la petición. pero las interrupciones permiten que los dispositivos puedan permanecer en silencio hasta el momento que requieren atención del procesador. estableciendo un flag. 4. devolviéndolo a 1 después. Principio de funcionamiento Int Nombre XT: Descripción AT: Descripción (hex) --Paridad* Paridad* NMI 0 08 Temporizador* Temporizador* 1 09 Teclado* Teclado* Interrupciones 8 a 15 IRQ2 0A Reservado (PIC#2) IRQ3 0B Puertos serie COM2/COM4 Puerto serie COM2/COM4 IRQ4 0C Puertos serie COM1/COM3 Puerto serie COM1/COM3 IRQ5 0D Disco duro Impresora secundaria LPT2 IRQ6 0E Disquete Disquete Impresora primaria LPT1 IRQ7 0F Impresora primaria LPT1 [8] 8 70 No aplicable Reloj de tiempo real* 9 71 No aplicable Redirigido a IRQ2* IRQ10 72 No aplicable no asignado IRQ11 73 No aplicable no asignado IRQ12 74 No aplicable Ratón PS2 9 13 75 No aplicable Coprocesador 80287* IRQ14 76 No aplicable Contr. disco IDE primario Contr. Sin ellas el sistema debería chequear constantemente los dispositivos para comprobar su actividad. Describir las interrupciones por hardware usadas en la PC cuales están ocupadas y cuales disponibles. disco IDE IRQ15 77 No aplicable secundario . Conviene tener presente que es de vital importancia acceder a los primeros 14 bytes de la CMOS sólo si el bit UIP del registro A (bit 7) está a cero. un periférico). Interrupciones Una petición de interrupción IRQ ("Interrupt Request") es una señal que se origina en un dispositivo hardware (por ejemplo. dentro de un programa residente que se encargue de la programación del timer de la computadora. Otra forma de realizar es con la programación directa del hardware de la computadora. Hemos señalado que las interrupciones juegan un papel fundamental. ya que les permite enviar estas peticiones a la UCP. También es necesario poner a 1 el bit SET del registro B (bit 7) antes de modificar dichos bytes. para indicar al procesador que algo requiere su atención inmediata. Para los demás bytes de la CMOS no es necesario tomar esta precaución.invoque una INT 4Ah cuando llegue la hora). Las funciones de retardo de la INT 15h se apoyan también en el reloj de tiempo real. en especial en la operación de dispositivos E/S. llamando a la función set_intr_gate(). las estructuras de datos relacionas con las interrupciones. En cualquier caso se trata siempre de ejecutar un programa situado en algún lugar de la memoria RAM o en la ROM-BIOS. en init/main. debe asignársele una IRQ adecuada. que se conocen como vectores de interrupción. cuando requiera atención debe enviar una señal en la línea IRQ especificada. el sistema al arrancar debe inicializar mediante unos procedimientos.h. a partir de este momento. Cuando se instala un dispositivo E/S que puede necesitar atención del procesador. pero actualmente esta selección puede hacerse por software. Dicho en otras palabras. razón por la cual estas rutinas se conocen también como servicios del BIOS.Cuando un dispositivo reclama atención del procesador es para que este haga algo. Este "algo" es lo que se conoce como servicio. por medio de puentes ("Jumpers") en la placa o dispositivo. cuando se vayan cargando los diferentes manejadores de dispositivos éstos harán uso de las 10 . init_IRQ().Seguidamente inicializa la tabla IDT. Básicamente esta es la parte en la que se realiza el "cableado" de las interrupciones dentro del sistema. Se encuentra definida en el fichero arch/i386/kernel/i8259.15]. Los dispositivos son de enchufar y usar PnP ("Plug and play" ) 5. controlador o gestor de la interrupción. Esta función pone a punto la tabla de descriptores de interrupciones (IDT). Esta función es llamada por el programa de inicio del sistema init start_kernel (). set_intr_gate Por medio de la función set_intr_gate se rellena la tabla de descriptores de interrupciones (IDT). se copian en una tabla de 1024 Bytes que se carga al principio de la memoria de usuario (direcciones 0000h a 0400h) durante el proceso de inicio del sistema. Ocurre que las dirección de inicio de estos programas.c.c. ISR ("Interrupt service routine"). que se encuentran en /arch/x86/kernel/irqinit. Inicialmente esta asignación se efectuaba de forma manual.. cualquier interrupción será atendida. request_irq Una vez que el sistema de interrupciones está inicializado.cPrimeramente inicializa el vector de interrupciones hardware irq_desc[0. Describir el procedimiento para acceder a una interrupción Para que los dispositivos puedan utilizar el sistema de interrupciones. Se encuentra en el fichero arch/x86/include/asm/desc. actúan de la siguiente manera: 1. 4. y una vez que se haya leído el disco y verificado que la lectura es correcta. Quita un manejador de interrupción y si es el último libera la interrupción. Describir las interrupciones por software usadas en la PC cuales están ocupadas y cuales disponibles. La ejecución de INT 21 permite hallar la subrutina del Sistema Operativo. por ejemplo para leer un archivo de disco (cuando un programa necesita un dato exterior . luego de I5 existe en el programa. Puesto que no puede seguir la ejecución de la instrucción I6 y siguientes del programa hasta que no se haya leído el disco y esté en memoria principal dicho archivo. las instrucciones que se ejecutarán no serán del programa. se detiene y pasa a cumplir con las tareas de recoger ese dato). para poder seguir el programa que la ordeno ). Las interrupciones por software. simbolizada INT 21 en Assembler. se encuentra definida en kernel/irq/manage. también denominadas llamadas al sistema. free_irq Llamada por los manejadores para quitar un nodo de la lista irqaction. el Sistema Operativo ordenará reanudar la ejecución del programa auto interrumpido en espera. la interrupción a liberar y dev_id el dispositivo que ya no interrumpe. La ejecución del programa se reanuda. que luego de INT 21. siendo. la instrucción de código de máquina CD21.c. que realiza el requerimiento del paso 1. 3. llama al Sistema Operativo. Un programa que se venía ejecutando luego de su instrucción I5 . además. 11 . es la acción inversa de request_irq. 2. Se ejecuta la subrutina del Sistema Operativo que prepara la lectura del disco. Luego de ejecutarse la subrutina del Sistema Operativo. En general. son aquellas generadas por un programa mientras este está ejecutándose. sino del Sistema Operativo. virtualmente el programa se ha interrumpido. A tal efecto.funciónes request_irq y setup_x86_irq para colocar la dirección de la función manejadora de interrupción propia y activar la interrupción. Tiene dos parámetros irq. 5. 6. (se detiene el programa y ordena en este caso mediante INT21 ( interrupción predefinida ) que recoge el dato solicitado. 6. 7.9 Entrada de carácter sin eco. · INT 15H Manejo de cinta magnética. · INT 25H Lectura directa de sectores del disco. · INT 26H Escritura directa de sectores del disco. Manejo de dispositivos periféricos · INT 10H Manejo de la pantalla. las cuales deben ser invocadas en conjunto con el registro AH. · INT 12H Servicios para el cálculo del tamaño de la memoria. Servicios de fecha y hora · INT 1AH Manejo del reloj. · INT 13H Manejo de unidades de disco. Manejo del estado del equipo · INT 11H Servicios de la lista de elementos de la computadora. · INT 14H Manejo de los puertos de comunicaciones (RS232). 4 Entrada por el puerto serie. Guarda la dirección donde se transfiere el control cuando termina la ejecución del programa. 11 Entrada desde el teclado. 8 Entrada directa de carácter sin eco. · INT 27H Terminar un programa y devolver el control al DOS sin borrar el programa de la memoria. 2 Entrada de carácter con eco. Impresión de pantalla · INT 5H Impresión de la información contenida en la pantalla. · INT 19H Activación de la rutina de arranque de la computadora. · INT 17H Manejo de la impresora. 6 Salida a la impresora. 7 E/S directa por pantalla. 10 Visualizar cadenas de caracteres. · INT 24H Manejo de errores críticos. 1 Terminación de un programa. · INT 21H Esta interrupción proporciona una gran cantidad de funciones. Interrupciones del DOS · INT 20H Termina la ejecución de un programa. · INT 22H Dirección de terminación. 12 . 5 Salida por el puerto serie. Servicios especiales · INT 18H Activación del lenguaje Interprete Basic de la ROM. La siguiente es una lista de las interrupciones por software disponibles por el sistema operativo. · INT 23H Dirección de la interrupción que se ejecuta cuando se presiona Ctrl-Break. 3 Salida a pantalla. · INT 16H Manejo del teclado. pero a diferencia del anterior éste no regresa al DOS inmediatamente.MODEL tiny . para ello se utiliza la función 10h de la interrupción 16h del BIOS.09h Int 21h Mov ax.ASM Descripción: Imprime una cadena de caracteres en la pantalla por medio de la función 09h de la interrupción 21h del DOS.CODE Inicio: Lea DX.12 Comprobación del estado de entrada.COMMENT * Programa: Int1.ASM Descripción: Imprime dos cadenas de caracteres en la pantalla por medio de la función 09h de la interrupción 21h del DOS y después espera a que una tecla sea presionada. Traer programa probado fuente y compilado El siguiente programa utiliza la función 09h de la interrupción 21 del DOS para mostrar en la pantalla un mensaje.4C00h Int 21h END Inicio END El siguiente programa exhibe dos cadenas de caracteres en la pantalla. 7. esto por medio de la interrupción 16h del BIOS con la función 10h.'$' . . 13 Borrar registro de entrada. espera a que cualquier tecla sea presionada y entonces termina.DATA Mensaje db 'Interrupciones 21h del DOS'. .10.13. * 13 . 14 Inicializar unidad de disco.COMMENT * Programa: Int2. Realizar el diseño de un sistema de forma que podamos probar las interrupciones de ambos tipos. * .Mensaje Mov Ah. 10.13.10h Int 16h Mov ax.MODEL tiny . las opciones de configuración y los parámetros.13.09h Int 21h Mov Ah.'$' Mensaje2 db 'Presione cualquier tecla. 14 .'..10.Mensaje2 Mov Ah.. Describir el setup de la PC.'$' .Mensaje Mov Ah.09h Int 21hLea DX.DATA Mensaje db 'Mas interrupciones'..CODE Inicio: Lea DX.4C00h Int 21h END Inicio END 8. 15 . la secuencia de arranque o la configuración de nuestros puertos. la fecha y la hora. es un programa informático inscrito en componentes electrónicos de memoria Flash existentes en la placa base.BIOS El Sistema Básico de Entrada/Salida (Basic Input-Output System). Podemos almacenar datos como por ejemplo. Este programa controla el funcionamiento de la placa base y de dichos componentes. CMOS La CMOS (Complementary Metal Oxide Semiconductor) es una porción de 64 bytes encargada de almacenar los valores y ajustes de la BIOS (aquellos que el usuario podrá cambiar). conocido simplemente con el nombre de BIOS. los parámetros que definen nuestro disco duro. Se encarga de realizar las funciones básicas de manejo y configuración del ordenador. 16 . Podremos ajustar una configuración personalizada en base al grado de ahorro que deseemos. Exit Without Saving: Nos permite salir de la utilidad de configuración pero sin salvar ningún cambio realizado. Para eliminar la clave pulsaremos "Enter" en el momento de introducir la nueva. colocaremos todos los valores por defecto con el fin de solucionar posibles errores. IDE Hard Disk Detection: Desde aquí detectaremos el tipo de disco duro que tenemos instalado en nuestro PC. así como del proceso y configuración de arranque. Chipset Features Setup: Desde aquí accedemos a los parámetros del chipset y la memoria RAM. tipos de disqueteras. Power Management Setup: Dentro de este submenú tenemos todas las posibilidades sobre la gestión avanzada de energía.. de forma que cuando encendamos el ordenador o entremos a la BIOS nos pida una clave. encontraremos también información de los voltajes. Save & Exit Setup: Con esta opción podemos grabar todos los cambios realizados en los parámetros y salir de la utilidad de configuración de la BIOS. Integrated Peripherals: Desde aquí configuraremos los parámetros que afectan a la controladora de puertos y sistemas de almacenamiento integrados.Configuración y parámetros de la BIOS CPU Soft Menú: Desde esta opción ajustaremos todos los parámetros de nuestro microprocesador (voltajes. eliminando así cualquier control de acceso. fecha y hora. Standard CMOS Setup: Dentro de esta sección están las variables más básicas. PNP/PCI Configuration: En este apartado ajustaremos las variables que afectan al sistema “Plug & Play” y los buses PCI. multiplicador y bus). temperaturas y RPMs de los ventiladores. Password Setting: Nos permitirá asignar la contraseña de entrada al equipo o a la BIOS del sistema. En las placas en las que se incluye un chip de monitorización. BIOS Features Setup: En este apartado se sitúan las opciones de configuración de la propia BIOS. tales como discos duros. Load Setup Defaults: Seleccionando esta opción. com/Hardware/H2_4.ulpgc.es/iidso/leclinux/interrupciones/int_hard/LEC3_INT_HARD.dis.com.htm http://sopa.utn.py/escritorio/ensamblador/ejemplos-deprogramas-en-ensamblador-8086 http://www.pdf 17 .edu.frsn.net/programacion/ejerciciosc/sencillos.html http://www.programacion.pdf PROGRAMACIÓN EN ENSAMBLADOR PARA PROCESADORES 80x86.jorgesanchez.BIBLIOGRAFIA http://www.zator. Tecnológico De Estudios Superiores De Jocotitlàn Ingeniería En Sistemas Computacionales http://www.ar/tecnicas3/apuntes/La%20BIOS%20de%20la %20PC.