21
UNIVERSIDAD NACIONAL DE SAN AGUSTIN DE AREQUIPA FACULTAD 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 1

CMOS .docx

Embed Size (px)

Citation preview

UNIVERSIDAD NACIONAL DE SAN AGUSTIN DE AREQUIPAFACULTAD DE INGENIERIA DE PRODUCCION Y SERVICIOSESCUELA PROFESIONAL DE INGENIERIA ELECTRNICA

CURSO:PRACTICAARQUITECTURA DE COMPUTADORASTURNO: D VIERNES 07- 09 AMCMOS Programas residentes y Programacin de Interrupciones.INTEGRANTES: FERNANDEZ LOPEZ TORRES, ROY ROGGER20101713

JUAREZ CHAVEZ, BILLY STEVE 20103748

TICONA OLAZABAL RENZO ALBERTO20103197

Viernes 12 de Junio del 2015

Contenido1.Traer programas residentes tipeados de los textos especializados en algn lenguaje pequeo portable.(asembler,basic,c std, pascal, etc)2Programa residente2Programas residentes en memoria2Programas22.Describa la direccin base del reloj de tiempo real de la PC y realizar un programa para poder tener acceso a dicho reloj en lectura y escritura.4Reloj en tiempo real4Beneficios4Alimentacin5Medicin del tiempo5Leer el Reloj del Sistema53.Como podemos programar alarmas de acuerdo al uso del reloj de tiempo real de la PC. Traer programa de alarmas.64.Describir las interrupciones por hardware usadas en la PC cuales estn ocupadas y cuales disponibles.7Interrupciones75.Describir el procedimiento para acceder a una interrupcin96.Describir las interrupciones por software usadas en la PC cuales estn ocupadas y cuales disponibles.97.Realizar el diseo de un sistema de forma que podamos probar las interrupciones de ambos tipos. Traer programa probado fuente y compilado118.Describir el setup de la PC, las opciones de configuracin y los parmetros.13BIBLIOGRAFIA15

CMOS Programas residentes y Manejo de Interrupciones.I .-TITULO: SOFTWARE-HARDWARE (SETUP)RELOJ DE TIEMPO REALPROGRAMACION RESIDENTE. INTERRUPCIONES POR HARDWARE Y SOFTWAREII.- OBJETIVO: Conocer programacin residente en memoria y la configuracin del reloj de tiempo real de la PC (leer y escribir el CMOS RAM). Conocer la manera en que se configura las interrupciones tanto por hardware como por software.III.- INFORME PREVIO:1. Traer programas residentes tipeados de los textos especializados en algn lenguaje pequeo portable.(asembler,basic,c std, pascal, etc)Programa residenteUn programa residente es un programa que permanece en la memoria del ordenador, por eso hablamos de programas residentes en memoria. Cualquier aplicacin que uses en tu ordenador (juego, p2p, editor de imagenes, word, etc) ocupa cierta cantidad de memoria pero cuando cierras el programa la memoria se libera y puede ser utilizada para otro fin. Los programas residentes permanecen todo el tiempo en memoria, aunque no ests utilizndolo en ese momento y por tanto ocupan permanentemente una porcin de la memoria de tu ordenador.Para que quede un poco ms 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, despus de haberlo analizado el antivirus permanece en memoria protegiendo tu ordenador.Programas residentes en memoriaCada vez que enciendes el ordenador los programas residentes en memoria, como el antivirus, se cargan junto con el sistema operativo de forma que estos programas estn disponibles desde el primer momento. 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.ProgramasORG 100h mov ax, 10 ;AX=10 mov bx, 00F9h ;BX=0xF9 inc bx ;BX++ add ax, 4 ;AX=AX+4 mov cx,45 ;CX=45 sub cx,cx ;CX=CX-CXretSaber si un numero es mayor:name "mayor"mov AX, 5mov BX, 5;mov DX, AX;CX el valor ms grande entre AX Y BX ;AX-BX mayor a 0sub AX,BXjs A_MENOR_Bmov CX,AXjmp FINA_MENOR_B:mov CX,BXFIN:

Utilizar Loop:ORG 100hMOV CX, 5 MOV BX, 1 MOV DL, 2comienzo: MOV AX, BX MUL DX MOV BX, AX LOOP comienzo RET

Programa en C que lea dos nmeros y que escriba el mayor de los dos.#include int main(){double x,y;

printf("Escribe el primer nmero");scanf("%lf",&x);printf("Escribe el segundo nmero");scanf("%lf",&y);

if(x>y) printf("El mayor es %f",x);else if(y>x) printf("El mayor es %f",y);else printf("Son iguales");}

Programa en C que lea un nmero e indique si es par o no#include int main(){int x;

printf("Escribe el nmero (sin decimales");scanf("%i",&x);

if(x%2==0) printf("Es par");else printf("Es impar");}Programa C que lea exactamente 8 nmeros y luego escriba la suma de todos ellos#include int main(){int x;int suma=0;

for(int i=1; i DEBUG [INTRO]) e ingresamos lo siguiente:

-AMOV AH,0INT 1AMOV AX,4CINT 21[INTRO]-G 100-p-pAqu se leen los valores que aparecen en CD:DX pero estn en hex

Poner a Cero el Reloj de SistemaSe realiza la interrupcin 1A con AH=1Abrimos una sesin de DOS (Inicio/Ejecutar command) e ingresamos lo siguiente:-AMOV AH,1INT 1AMOV AH,0INT 1AMOV AX,4CINT 21[INTRO]-G 100-P (se ejecuta el MOV)3. Como podemos programar alarmas de acuerdo al uso del reloj de tiempo real de la PC. Traer programa de alarmas.La interrupcin de alarma se produce cada da cuando llega la hora en que ha sido programada y el bit que permite esta interrupcin est habilitado. Una forma de programar la alarma, basado en los cdigos indiferentes almacenables en los bytes de la alarma; un cdigo indiferente es cualquier valor comprendido entre 0C0h y 0FFh. Si el valor de la hora de alarma es un cdigo indiferente, la alarma se producir cada hora. Si el valor de la hora y minuto de alarma son cdigos indiferentes, sta se producir cada minuto. Si el valor de la hora como el minuto y segundo de la alarma son cdigos indiferentes, la alarma se producir cada segundo.Para configurar la alarma tenemos que tener en cuenta las direcciones de la CMOS:

Como vemos entonces almacenando los valores especificados en los bytes 01, 03 y 05 podremos activar las alarmas, pero adems debemos configurar el registro B.REGISTRO B (lectura/escritura)En este registro se encuentran los bits para controlar la inicializacin de la fecha y hora, para habilitar o inhibir las diversas interrupciones y para establecer ciertas caractersticas de operacin.

El bit PIE (Periodic Interrupt Enable) sirve para permitir la interrupcin peridica cuando es puesto a 1; tras una seal -RESET es puesto a 0. El bit AIE (Alarm Interrupt Enable) ha de estar a 1 para habilitar la interrupcin de alarma; tambin es puesto a cero tras un -RESET. El bit UIE (Update Interrupt Enable) sirve para habilitar o inhibir la interrupcin de fin de actualizacin, que se producira tras cada actualizacin del reloj. El MC146818 est diseado para ser conectado a un bus multiplexado, por lo que la circuitera de apoyo se encarga de gestionar la comunicacin con el microprocesador, estableciendo dos puertos de entrada/salida en las direcciones 70h y 71h. Para leer o escribir cualquier registro de la RAM CMOS, basta con enviar al puerto 70h el nmero de registro y a continuacin leer o escribir del puerto 71h. Entre los accesos a ambos puertos debe mediar un tiempo mnimo; de lo contrario la operacin fallar.

A nivel de interrupciones, la salida -IRQ del MC146818 est conectada a IRQ8 (INT 70h) a travs del segundo controlador de interrupciones.Desde la interrupcin 1Ah, la BIOS implementa una serie de servicios para acceder al reloj de tiempo real, incluyendo la posibilidad de programar la alarma (que invoque una INT 4Ah cuando llegue la hora). Las funciones de retardo de la INT 15h se apoyan tambin en el reloj de tiempo real.

Conviene tener presente que es de vital importancia acceder a los primeros 14 bytes de la CMOS slo si el bit UIP del registro A (bit 7) est a cero. Tambin es necesario poner a 1 el bit SET del registro B (bit 7) antes de modificar dichos bytes, devolvindolo a 1 despus. No respetar este principio puede provocar la lectura de fechas u horas incorrectas o una errnea asignacin de valores. Para los dems bytes de la CMOS no es necesario tomar esta precaucin.Otra forma de realizar es con la programacin directa del hardware de la computadora, estableciendo un flag, dentro de un programa residente que se encargue de la programacin del timer de la computadora.4. Describir las interrupciones por hardware usadas en la PC cuales estn ocupadas y cuales disponibles.InterrupcionesUna peticin de interrupcin IRQ ("Interrupt Request") es una seal que se origina en un dispositivo hardware (por ejemplo, un perifrico), para indicar al procesador que algo requiere su atencin inmediata; se solicita al procesador que suspenda lo que est haciendo para atender la peticin.Hemos sealado que las interrupciones juegan un papel fundamental, en especial en la operacin de dispositivos E/S, ya que les permite enviar estas peticiones a la UCP. Sin ellas el sistema debera chequear constantemente los dispositivos para comprobar su actividad, pero las interrupciones permiten que los dispositivos puedan permanecer en silencio hasta el momento que requieren atencin del procesador. NombreInt (hex)XT: DescripcinAT: Descripcin

NMI ---Paridad*Paridad*

008Temporizador*Temporizador*

109Teclado*Teclado*

IRQ20AReservadoInterrupciones 8 a 15 (PIC#2)

IRQ30BPuertos serie COM2/COM4Puerto serie COM2/COM4

IRQ40CPuertos serie COM1/COM3Puerto serie COM1/COM3

IRQ50DDisco duroImpresora secundaria LPT2

IRQ60EDisqueteDisquete

IRQ70FImpresora primaria LPT1Impresora primaria LPT1 [8]

870 No aplicableReloj de tiempo real*

971 No aplicableRedirigido a IRQ2*

IRQ1072 No aplicable no asignado

IRQ1173 No aplicable no asignado

IRQ1274 No aplicableRatn PS2

1375 No aplicableCoprocesador 80287*

IRQ1476 No aplicableContr. disco IDE primario

IRQ1577 No aplicableContr. disco IDE secundario

Principio de funcionamientoCuando un dispositivo reclama atencin del procesador es para que este haga algo. Este "algo" es lo que se conoce como servicio; controlador o gestor de la interrupcin, ISR ("Interrupt service routine"). En cualquier caso se trata siempre de ejecutar un programa situado en algn lugar de la memoria RAM o en la ROM-BIOS. Ocurre que las direccin de inicio de estos programas, que se conocen como vectores de interrupcin, 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, razn por la cual estas rutinas se conocen tambin como servicios del BIOS.Cuando se instala un dispositivo E/S que puede necesitar atencin del procesador, debe asignrsele una IRQ adecuada. Dicho en otras palabras, cuando requiera atencin debe enviar una seal en la lnea IRQ especificada. Inicialmente esta asignacin se efectuaba de forma manual, por medio de puentes ("Jumpers") en la placa o dispositivo, pero actualmente esta seleccin puede hacerse por software. Los dispositivos son de enchufar y usar PnP ("Plug and play" )5. Describir el procedimiento para acceder a una interrupcinPara que los dispositivos puedan utilizar el sistema de interrupciones, el sistema al arrancar debe inicializar mediante unos procedimientos, que se encuentran en /arch/x86/kernel/irqinit.c, las estructuras de datos relacionas con las interrupciones.init_IRQ().Esta funcin es llamada por el programa de inicio del sistema init start_kernel (), en init/main.c. Esta funcin pone a punto la tabla de descriptores de interrupciones (IDT). Se encuentra definida en el fichero arch/i386/kernel/i8259.cPrimeramente inicializa el vector de interrupciones hardware irq_desc[0..15].Seguidamente inicializa la tabla IDT, llamando a la funcin set_intr_gate().set_intr_gatePor medio de la funcin set_intr_gate se rellena la tabla de descriptores de interrupciones (IDT). Bsicamente esta es la parte en la que se realiza el "cableado" de las interrupciones dentro del sistema, a partir de este momento, cualquier interrupcin ser atendida. Se encuentra en el fichero arch/x86/include/asm/desc.h.request_irqUna vez que el sistema de interrupciones est inicializado, cuando se vayan cargando los diferentes manejadores de dispositivos stos harn uso de las funcines request_irq y setup_x86_irq para colocar la direccin de la funcin manejadora de interrupcin propia y activar la interrupcin.free_irqLlamada por los manejadores para quitar un nodo de la lista irqaction, es la accin inversa de request_irq, se encuentra definida en kernel/irq/manage.c.Quita un manejador de interrupcin y si es el ltimo libera la interrupcin. Tiene dos parmetros irq, la interrupcin a liberar y dev_id el dispositivo que ya no interrumpe.6. Describir las interrupciones por software usadas en la PC cuales estn ocupadas y cuales disponibles.Las interrupciones por software, tambin denominadasllamadas al sistema, son aquellas generadas por un programa mientras este est ejecutndose. En general, actan de la siguiente manera:1. Un programa que se vena ejecutando luego de su instruccin I5 , llama alSistema Operativo, por ejemplo para leer un archivo dedisco(cuando un programa necesita un dato exterior , se detiene y pasa a cumplir con las tareas de recoger ese dato).2. A tal efecto, luego de I5 existe en el programa, la instruccin decdigo de mquinaCD21, simbolizada INT 21 en Assembler, que realiza el requerimiento del paso 1. Puesto que no puede seguir la ejecucin de la instruccin I6 y siguientes del programa hasta que no se haya ledo el disco y est en memoria principal dicho archivo, virtualmente el programa se ha interrumpido, siendo, adems, que luego de INT 21, las instrucciones que se ejecutarn no sern del programa, sino del Sistema Operativo. (se detiene el programa y ordena en este caso mediante INT21 ( interrupcin predefinida ) que recoge el dato solicitado, para poder seguir el programa que la ordeno ).3. La ejecucin de INT 21 permite hallar lasubrutinadel Sistema Operativo.4. Se ejecuta la subrutina del Sistema Operativo que prepara la lectura del disco.5. Luego de ejecutarse la subrutina del Sistema Operativo, y una vez que se haya ledo el disco y verificado que la lectura es correcta, el Sistema Operativo ordenar reanudar la ejecucin del programa auto interrumpido en espera.6. La ejecucin del programa se reanuda.7. La siguiente es una lista de las interrupciones por software disponibles por el sistema operativo.Manejo de dispositivos perifricos INT 10H Manejo de la pantalla. INT 13H Manejo de unidades de disco. INT 14H Manejo de los puertos de comunicaciones (RS232). INT 15H Manejo de cinta magntica. INT 16H Manejo del teclado. INT 17H Manejo de la impresora.Manejo del estado del equipo INT 11H Servicios de la lista de elementos de la computadora. INT 12H Servicios para el clculo del tamao de la memoria.Servicios de fecha y hora INT 1AH Manejo del reloj.Impresin de pantalla INT 5H Impresin de la informacin contenida en la pantalla.Servicios especiales INT 18H Activacin del lenguaje Interprete Basic de la ROM. INT 19H Activacin de la rutina de arranque de la computadora.Interrupciones del DOS INT 20H Termina la ejecucin de un programa. INT 22H Direccin de terminacin. Guarda la direccin donde se transfiere el control cuando termina la ejecucin del programa. INT 23H Direccin de la interrupcin que se ejecuta cuando se presionaCtrl-Break. INT 24H Manejo de errores crticos. INT 25H Lectura directa de sectores del disco. INT 26H Escritura directa de sectores del disco. INT 27H Terminar un programa y devolver el control al DOS sin borrar el programa de la memoria. INT 21H Esta interrupcin proporciona una gran cantidad de funciones, las cuales deben ser invocadas en conjunto con el registro AH.1 Terminacin de un programa.2 Entrada de carcter con eco.3 Salida a pantalla.4 Entrada por el puerto serie.5 Salida por el puerto serie.6 Salida a la impresora.7 E/S directa por pantalla.8 Entrada directa de carcter sin eco.9 Entrada de carcter sin eco.10 Visualizar cadenas de caracteres.11 Entrada desde el teclado.12 Comprobacin del estado de entrada.13 Borrar registro de entrada.14 Inicializar unidad de disco.

7. Realizar el diseo de un sistema de forma que podamos probar las interrupciones de ambos tipos. Traer programa probado fuente y compiladoEl siguiente programa utiliza la funcin 09h de la interrupcin 21 del DOS para mostrar en la pantalla un mensaje.

.COMMENT*Programa: Int1.ASMDescripcin: Imprime una cadena de caracteres en la pantalla por medio de la funcin 09hde la interrupcin 21h del DOS.*.MODEL tiny.DATAMensaje db 'Interrupciones 21h del DOS',13,10,'$'.CODEInicio:Lea DX,MensajeMov Ah,09hInt 21hMov ax,4C00hInt 21hEND InicioEND

El siguiente programa exhibe dos cadenas de caracteres en la pantalla, pero a diferencia del anterior ste no regresa al DOS inmediatamente, espera a que cualquier tecla sea presionada y entonces termina, para ello se utiliza la funcin 10h de la interrupcin 16h del BIOS..COMMENT*Programa: Int2.ASMDescripcin: Imprime dos cadenas de caracteres en la pantalla por medio de la funcin09h de la interrupcin 21h del DOS y despus espera a que una tecla sea presionada, estopor medio de la interrupcin 16h del BIOS con la funcin 10h.*.MODEL tiny.DATAMensaje db 'Mas interrupciones',13,10,'$'Mensaje2 db 'Presione cualquier tecla...',13,10,'$'.CODEInicio:Lea DX,MensajeMov Ah,09hInt 21hLea DX,Mensaje2Mov Ah,09hInt 21hMov Ah,10hInt 16hMov ax,4C00hInt 21hEND InicioEND

8. Describir el setup de la PC, las opciones de configuracin y los parmetros.

BIOSEl Sistema Bsico de Entrada/Salida (Basic Input-Output System), conocido simplemente con el nombre de BIOS, es un programa informtico inscrito en componentes electrnicos de memoria Flash existentes en la placa base. Este programa controla el funcionamiento de la placa base y de dichos componentes. Se encarga de realizar las funciones bsicas de manejo y configuracin del ordenador.

CMOS

La CMOS (Complementary Metal Oxide Semiconductor) es una porcin de 64 bytes encargada de almacenar los valores y ajustes de la BIOS (aquellos que el usuario podr cambiar). Podemos almacenar datos como por ejemplo, la fecha y la hora, los parmetros que definen nuestro disco duro, la secuencia de arranque o la configuracin de nuestros puertos. Configuracin y parmetros de la BIOS CPU Soft Men: Desde esta opcin ajustaremos todos los parmetros de nuestro microprocesador (voltajes, multiplicador y bus). Standard CMOS Setup: Dentro de esta seccin estn las variables ms bsicas, tales como discos duros, fecha y hora, tipos de disqueteras.. BIOS Features Setup: En este apartado se sitan las opciones de configuracin de la propia BIOS, as como del proceso y configuracin de arranque. Chipset Features Setup: Desde aqu accedemos a los parmetros del chipset y la memoria RAM. En las placas en las que se incluye un chip de monitorizacin, encontraremos tambin informacin de los voltajes, temperaturas y RPMs de los ventiladores. Power Management Setup: Dentro de este submen tenemos todas las posibilidades sobre la gestin avanzada de energa. Podremos ajustar una configuracin personalizada en base al grado de ahorro que deseemos. PNP/PCI Configuration: En este apartado ajustaremos las variables que afectan al sistema Plug & Play y los buses PCI. Integrated Peripherals: Desde aqu configuraremos los parmetros que afectan a la controladora de puertos y sistemas de almacenamiento integrados. Load Setup Defaults: Seleccionando esta opcin, colocaremos todos los valores por defecto con el fin de solucionar posibles errores. Password Setting: Nos permitir asignar la contrasea de entrada al equipo o a la BIOS del sistema, de forma que cuando encendamos el ordenador o entremos a la BIOS nos pida una clave. Para eliminar la clave pulsaremos "Enter" en el momento de introducir la nueva, eliminando as cualquier control de acceso. IDE Hard Disk Detection: Desde aqu detectaremos el tipo de disco duro que tenemos instalado en nuestro PC. Save & Exit Setup: Con esta opcin podemos grabar todos los cambios realizados en los parmetros y salir de la utilidad de configuracin de la BIOS. Exit Without Saving: Nos permite salir de la utilidad de configuracin pero sin salvar ningn cambio realizado.

BIBLIOGRAFIA

http://www.jorgesanchez.net/programacion/ejerciciosc/sencillos.html http://www.programacion.com.py/escritorio/ensamblador/ejemplos-de-programas-en-ensamblador-8086 http://www.zator.com/Hardware/H2_4.htm http://sopa.dis.ulpgc.es/ii-dso/leclinux/interrupciones/int_hard/LEC3_INT_HARD.pdf PROGRAMACIN EN ENSAMBLADOR PARA PROCESADORES 80x86, Tecnolgico De Estudios Superiores De Jocotitln Ingeniera En Sistemas Computacionales http://www.frsn.utn.edu.ar/tecnicas3/apuntes/La%20BIOS%20de%20la%20PC.pdf

8