Introducción Ejercicio Interrupciones Ejercicio Cierre. Entrada/Salida. Organización del Computador I. Departamento de Computación - FCEyN UBA

Documentos relacionados
Práctica 5 - Entrada/Salida

Entrada/Salida. Polling e Interrupciones. Verano de Mariano Moscato. Organización del Computador 1

Práctica 8 - DMA y Almacenamiento Masivo

SISTEMAS OPERATIVOS Arquitectura de computadores

INFORMATICA I EJERCICIOS PROPUESTOS Buscar en el diccionario Qué es INFORMÁTICA?, Qué es

Arquitectura de Computadores. Apellidos, Nombre:

Introducción a la arquitectura de computadores

CICLOS DEL PROCESADOR

FUNCIONAMIENTO DEL ORDENADOR

Tema 9 Periféricos de Entrada

Introducción a la Computación. Capítulo 10 Repertorio de instrucciones: Características y Funciones

Métodos para escribir algoritmos: Diagramas de Flujo y pseudocódigo

Conceptos de Arquitectura de Computadoras Curso 2015

Objetivos. Objetivos. Arquitectura de Computadores. R.Mitnik

ESTRUCTURA BÁSICA DE UN ORDENADOR

Mc-119. Manual del Usuario. 1

Tema 6: Periféricos y entrada-salida

2º CURSO INGENIERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN TEMA 5 ENTRADA/SALIDA. JOSÉ GARCÍA RODRÍGUEZ JOSÉ ANTONIO SERRA PÉREZ Tema 5.

Manejo de Entrada-Salida. Arquitectura de Computadoras

Estructura del Computador

Arquitectura de Computadores II 8086 Parte II

Anexo C. Manual del usuario

Caché. Matías Barbeito Organización del computador 1 2 cuatrimestre 2011

Manejo de Entrada-Salida. Arquitectura de Computadoras

VOCABULARIO DEL HARDWARE. Docente Yeni Ávila

Ensamblador. Interrupciones. Dentro de una computadora existen dos clases de interrupciones:

Práctica 4 - Arquitectura CPU

Práctica 4. Organización del Computador 1 12 de septiembre de Algunas consideraciones preliminares:

Tema: Microprocesadores

PROCESADORES. Existen 3 tipos de procesadores: DE GALLETA, DE PINES Y DE CONTACTO. DE GALLETA: se utilizaban en las board en los años 80 y 90.

Ficheros conceptos. Manejo de ficheros en C. Apertura del fichero Función fopen: nombre del fichero. Apertura del fichero Función fopen

UNIDAD 1. COMPONENTES DEL COMPUTADOR

1) Se dispone de un computador de 32 bits con la siguiente estructura:

Clase 3: Sensores I. Conviértete en un Joven Inventor PENTA UC

Tema 5.1: Presentación de datos en pantalla

Conceptos básicos y manual de procedimientos para Windows e Internet

Tutoría 2. Banco de memoria de 8 y 16 bits (8086)

Robótica. Un robot...

TEMA 2. El ordenador: hardware y software

Arquitectura intel Preámbulo de OSO para alumnos formados en el procesador MIPS. Asignatura Sistemas Operativos Murcia abril de 2005

Organización lógica Identificación de bloque

Examen de Arquitectura de Computadores 2 22 de febrero del 2011

0-31 : caracteres de control : carac. Comunes : especiales (flechas, símbolos) y particulares (ñ)

Soluciones a los problemas impares. Tema 5. Memorias. Estructura de Computadores. I. T. Informática de Gestión / Sistemas

Sistema electrónico digital (binario) que procesa datos siguiendo unas instrucciones almacenadas en su memoria

Introducción a los Sistemas Operativos

Práctica 3: El teclado del PC

La arquitectura CISCA

MANUAL DEL USUARIO CONTROL TRACKER VERSION 3.1

Funciones básicas del depurador

Definición de Memoria

«LAS PARTES DEL CPU»

Sistemas Operativos. Curso 2014 Estructura de los sistemas operativos

Tema 2 Introducción a la Programación en C.

Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial.

4.2 Servicio de exploración de E/S

Ejercicios de Arquitectura de Computadoras

Guía rápida para gestionar el puerto paralelo del PC

la solución a una ecuación cuadrática solicitando al usuario los términos de dicha ecuación.

Práctica final. Emilia Cruz Fernández Martínez

Que es una computadora?

Sistemas Electrónicos Digitales

TEMA 1: Concepto de ordenador

ENIAC, Primer computador electrónico y su panel de conexiones

ARQUITECTURA BÁSICA DEL ORDENADOR: Hardware y Software. IES Miguel de Cervantes de Sevilla

MANUAL DEL USUARIO BALANZA ELECTRÓNICA PROGRAMABLE MX8F MIXER VERSION C-1.7

La resolución de un problema

INTRODUCCIóN A LA PROGRAMACIóN APUNTES DE JAVA APUNTES DE JAVA

Arquitectura de Computadores

INTERRUPCIONES. Existen 256 interrupciones En el modo real cada una tiene un vector asociado Vectores de 4 bytes: segmento + offset 32 F0 50 8A

Actividad 4: Comunicación entre PLC s vía Ethernet

Tema 1: Arquitectura de ordenadores, hardware y software

PROBLEMAS TEMA 3: Unidad de Entrada/Salida

Estatutos de Control C# Estatutos de Decisión (Selección)

W4IKS MANUAL DEL USUARIO

Se llama hardware a todos los dispositivos que forman la PC y que se puedan tocar, es decir, es todo el conjunto de accesorios que se le pueden

Android 2.3 Tablet Manual de Usuario

Bienvenidos IMPORTANTE:

Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo

Práctica 3. Paso de parámetros entre subrutinas. 3. Consideraciones sobre el paso de parámetros

Tema 5. Presentación de datos por pantalla

Partes Internas y Externas de la Computadora

ACTIVIDADES DE SCRATCH PARA ARDUINO (S4A) 3º ESO TECNOLOGÍAS

MegaPower 168 Suplemento de Control de Videograbador y Programación de Macros

Qué es un Procesador de textos? Iniciar Word. Microsoft Word Microsoft Office 2010

UNIVERSIDAD DE GUADALAJARA

(1) Unidad 1. Sistemas Digitales Basados en Microprocesador SISTEMAS BASADOS EN MICROPROCESADORES. Grado en Ingeniería Informática EPS - UAM

Herramientas Informáticas I Software: Sistemas Operativos

ESTRUCTURAS ALGORITMICAS

TEMA 4. ESTRUCTURAS DE CONTROL

Balanza de refrigerante programable. Manual de usuario

Arquitectura de Computadores II Clase #3

CONTROLADOR DE ALARMAS Y PROCESOS INDUSTRIALES POR MENSAJES SMS - CONTROLADOR CALDERAS BIOMASA BIO-ROBOTICA - FUNCIÓN DE TELEMANDO

Introducción a BMP085 Versión 1.0

TEMA 7: Ficheros. TEMA 7: Ficheros Concepto de fichero

1. DATOS e INFORMACIÓN.

Situaciones Binarias

Estructuras Repetitivas

Muchas gracias por adquirir un producto de GADNIC.

Control de Flujo. Estructuras de Control! Experiencia Educativa de Algorítmica CONTROL DE FLUJO

Transcripción:

Entrada/Salida Organización del Computador I Departamento de Computación - FCEyN UBA Primer Cuatrimestre 2017 1 / 28

Hasta ahora vimos... Representación de números enteros Circuitos combinatorios y secuenciales Arquitecturas Algo de programación en assembler de ORGA1 2 / 28

Hasta ahora vimos... Representación de números enteros Circuitos combinatorios y secuenciales Arquitecturas Algo de programación en assembler de ORGA1 De qué sirve una computadora sin dispositivos de E/S? 2 / 28

Dispositivos de E/S Entrada: Salida: Entrada/Salida: 3 / 28

Dispositivos de E/S Entrada: Teclado, Mouse, Micrófono, etc. Salida: Entrada/Salida: 3 / 28

Dispositivos de E/S Entrada: Teclado, Mouse, Micrófono, etc. Salida: Monitor, Parlantes, Impresora, etc. Entrada/Salida: 3 / 28

Dispositivos de E/S Entrada: Teclado, Mouse, Micrófono, etc. Salida: Monitor, Parlantes, Impresora, etc. Entrada/Salida: Disco rígido, Módem, Placa de Red, etc. 3 / 28

Dispositivos de E/S Entrada: Teclado, Mouse, Micrófono, etc. Salida: Monitor, Parlantes, Impresora, etc. Entrada/Salida: Disco rígido, Módem, Placa de Red, etc. Y cómo intercambio información con un dispositivo de E/S? 3 / 28

Qué es un dispositivo de E/S para la CPU? Cada dispositivo de E/S tiene sus propios registros, donde la CPU puede leer o escribir datos. 4 / 28

Qué es un dispositivo de E/S para la CPU? Cada dispositivo de E/S tiene sus propios registros, donde la CPU puede leer o escribir datos. Tipos de registro: Lectura. Escritura. Lectura/Escritura. 4 / 28

Métodos de acceso a los registros Con qué instrucciones accedo a estos registros? 5 / 28

Métodos de acceso a los registros Con qué instrucciones accedo a estos registros? Hay dos formas de referirse a los registros de un dispositivo de E/S: 5 / 28

Métodos de acceso a los registros Con qué instrucciones accedo a estos registros? Hay dos formas de referirse a los registros de un dispositivo de E/S: E/S independiente (instrucciones especiales: IN y OUT). Espacio de direcciones independiente 5 / 28

Métodos de acceso a los registros Con qué instrucciones accedo a estos registros? Hay dos formas de referirse a los registros de un dispositivo de E/S: E/S independiente (instrucciones especiales: IN y OUT). Espacio de direcciones independiente E/S mapeado a direcciones de memoria. Direcciones de memoria principal reservadas para E/S 5 / 28

Métodos de acceso a los registros Con qué instrucciones accedo a estos registros? Hay dos formas de referirse a los registros de un dispositivo de E/S: E/S independiente (instrucciones especiales: IN y OUT). Espacio de direcciones independiente E/S mapeado a direcciones de memoria. Direcciones de memoria principal reservadas para E/S ORGA1 reserva las direcciones de memoria 0xFFF0 a 0xFFFF para E/S. 5 / 28

Esquemas de E/S E/S por encuesta (Polling) o Programada E/S por interrupciones E/S por acceso directo a memoria (DMA) 6 / 28

Esquemas de E/S E/S por encuesta (Polling) o Programada E/S por interrupciones E/S por acceso directo a memoria (DMA) Como funciona cada uno? 6 / 28

1 1 Luego de muchos años de discusiones, la FIFA accedió a incorporar tecnología a los fallos de los árbitros en los partidos de fútbol. Gracias a ello nunca más se generará polémica a la hora de decidir si la pelota ingresó al arco o no. Para lograr esto la FIFA, con su gran presupuesto, decidió comprar una máquina ORGA1 junto con dispositivo de E/S llamado LTA. LTA cuenta con un registro de estado mapeado a la dirección de E/S 0xFFF0 de sólo lectura, en el cuál se refleja el porcentaje de la pelota ingresado al arco. Inicialmente, el registro se encuentra en el valor 0x0000 y aumenta a medida que la pelota va ingresando. Escribir una rutina en ensamblador para satisfacer el sistema pedido, guardando la cantidad de goles en R0. Esta rutina se invoca al iniciar el partido. 7 / 28

1 Solucion 1) comienzaelpartido : MOV R0, 0 x0000 noentro : CMP [0 xfff0 ], 0 x0064 JNE noentro ADD R0, 0 x0001 sigueadentro : CMP [0 xfff0 ], 0 x0000 JG sigueadentro JMP noentro 8 / 28

El procesador ORGA1i El procesador ORGA1i es un procesador ORGA1 que ha sido extendido con la capacidad de atender una única interrupción (enmascarable) de un dispositivo de E/S. 9 / 28

El procesador ORGA1i El procesador ORGA1i es un procesador ORGA1 que ha sido extendido con la capacidad de atender una única interrupción (enmascarable) de un dispositivo de E/S. Nuevas señales: Entrada: INTR (Interrupción) Salida: INTA (Interrupción reconocida) 9 / 28

El procesador ORGA1i El procesador ORGA1i es un procesador ORGA1 que ha sido extendido con la capacidad de atender una única interrupción (enmascarable) de un dispositivo de E/S. Nuevas señales: Entrada: INTR (Interrupción) Salida: INTA (Interrupción reconocida) Nuevo flag: I, que indica si el procesador puede ser interrumpido o no 9 / 28

El procesador ORGA1i El procesador ORGA1i es un procesador ORGA1 que ha sido extendido con la capacidad de atender una única interrupción (enmascarable) de un dispositivo de E/S. Nuevas señales: Entrada: INTR (Interrupción) Salida: INTA (Interrupción reconocida) Nuevo flag: I, que indica si el procesador puede ser interrumpido o no Nuevo registro: PSW, en donde se almacenan los flags 9 / 28

El procesador ORGA1i El procesador ORGA1i es un procesador ORGA1 que ha sido extendido con la capacidad de atender una única interrupción (enmascarable) de un dispositivo de E/S. Nuevas señales: Entrada: INTR (Interrupción) Salida: INTA (Interrupción reconocida) Nuevo flag: I, que indica si el procesador puede ser interrumpido o no Nuevo registro: PSW, en donde se almacenan los flags Nuevas instrucciones: CLI y STI IRET PUSH Ri y POP Ri 9 / 28

El procesador ORGA1i El procesador ORGA1i es un procesador ORGA1 que ha sido extendido con la capacidad de atender una única interrupción (enmascarable) de un dispositivo de E/S. Nuevas señales: Entrada: INTR (Interrupción) Salida: INTA (Interrupción reconocida) Nuevo flag: I, que indica si el procesador puede ser interrumpido o no Nuevo registro: PSW, en donde se almacenan los flags Nuevas instrucciones: CLI y STI IRET PUSH Ri y POP Ri Nueva dirección reservada: 0x0000, donde se indica la dirección de la rutina de atención de la interrupción 9 / 28

Qué pasa cuando interrumpen al CPU? En el caso de un procesador ORGA1i, si el dispositivo de E/S activa la señal de interrupción y el flag I vale 1, termina de ejecutar la instrucción en curso y realiza atómicamente los siguientes pasos: 10 / 28

Qué pasa cuando interrumpen al CPU? En el caso de un procesador ORGA1i, si el dispositivo de E/S activa la señal de interrupción y el flag I vale 1, termina de ejecutar la instrucción en curso y realiza atómicamente los siguientes pasos: Coloca [SP] = PSW y decrementa SP 10 / 28

Qué pasa cuando interrumpen al CPU? En el caso de un procesador ORGA1i, si el dispositivo de E/S activa la señal de interrupción y el flag I vale 1, termina de ejecutar la instrucción en curso y realiza atómicamente los siguientes pasos: Coloca [SP] = PSW y decrementa SP Coloca [SP] = PC y decrementa SP 10 / 28

Qué pasa cuando interrumpen al CPU? En el caso de un procesador ORGA1i, si el dispositivo de E/S activa la señal de interrupción y el flag I vale 1, termina de ejecutar la instrucción en curso y realiza atómicamente los siguientes pasos: Coloca [SP] = PSW y decrementa SP Coloca [SP] = PC y decrementa SP Coloca I=0 para evitar que el procesador vuelva a interrumpirse 10 / 28

Qué pasa cuando interrumpen al CPU? En el caso de un procesador ORGA1i, si el dispositivo de E/S activa la señal de interrupción y el flag I vale 1, termina de ejecutar la instrucción en curso y realiza atómicamente los siguientes pasos: Coloca [SP] = PSW y decrementa SP Coloca [SP] = PC y decrementa SP Coloca I=0 para evitar que el procesador vuelva a interrumpirse Coloca PC = [0x0000] 10 / 28

Qué pasa cuando interrumpen al CPU? En el caso de un procesador ORGA1i, si el dispositivo de E/S activa la señal de interrupción y el flag I vale 1, termina de ejecutar la instrucción en curso y realiza atómicamente los siguientes pasos: Coloca [SP] = PSW y decrementa SP Coloca [SP] = PC y decrementa SP Coloca I=0 para evitar que el procesador vuelva a interrumpirse Coloca PC = [0x0000] Activa la señal INTA para indicarle al dispositivo que atenderá su pedido 10 / 28

Qué pasa cuando interrumpen al CPU? En el caso de un procesador ORGA1i, si el dispositivo de E/S activa la señal de interrupción y el flag I vale 1, termina de ejecutar la instrucción en curso y realiza atómicamente los siguientes pasos: Coloca [SP] = PSW y decrementa SP Coloca [SP] = PC y decrementa SP Coloca I=0 para evitar que el procesador vuelva a interrumpirse Coloca PC = [0x0000] Activa la señal INTA para indicarle al dispositivo que atenderá su pedido Se ejecuta la rutina de atención de interrupción (RAI) 10 / 28

Qué pasa cuando interrumpen al CPU? En el caso de un procesador ORGA1i, si el dispositivo de E/S activa la señal de interrupción y el flag I vale 1, termina de ejecutar la instrucción en curso y realiza atómicamente los siguientes pasos: Coloca [SP] = PSW y decrementa SP Coloca [SP] = PC y decrementa SP Coloca I=0 para evitar que el procesador vuelva a interrumpirse Coloca PC = [0x0000] Activa la señal INTA para indicarle al dispositivo que atenderá su pedido Se ejecuta la rutina de atención de interrupción (RAI) La RAI termina con la ejecución de IRET 10 / 28

2 3 4 2 Una computadora ORGA1i se está utilizando para monitorear el estado de una montaña rusa. Esta computadora se encarga de verificar ciertos parámetros de la montaña rusa y actuar de acuerdo a su estado. Para ello, cuenta con: dos dispositivos de E/S que actúan como sensores, uno que actúa como alarma y otro que efectúa una parada de emergencia. Cada sensor posee un registro de E/S de sólo lectura que reportan la siguiente información: Velocidad: Mide la velocidad del carrito de la montaña rusa (VEL STATUS) Frenos: Mide el estado de los frenos (BR STATUS) 11 / 28

2 3 4 2 (continuación) El dispositivo de alarma posee un registro de E/S de lectura/escritura (ALARMA) que permite activar dos alarmas distintas: El bit menos significativo representa la alarma de velocidad. Esta le indica al operador que el carrito está yendo muy rápido. El segundo bit representa el estado de los frenos comunes. Este indica que hay un problema con estos frenos y que se van a activar los frenos de emergencia. Si un bit está en 1, la alarma correspondiente se enciende. Las alarmas se apagan de manera externa al sistema. Para determinar si se exceden los parámetros de velocidad o de estado de frenos se tienen las etiquetas MAX SPEED y MIN BRAKES (constantes de 16 bits). El dispositivo de frenos de emergencia posee un registro de E/S de escritura (FRENOS EM) que los activa en caso que se detecte un problema con los frenos comunes, poniendo todo los bits en 1. 12 / 28

2 3 4 2 a) Mapear los registros de E/S a direcciones de E/S de ORGA1. b) Realizar el código para sensar y activar las alarmas correspondientes. c) Suponiendo que el ciclo de instrucción de cada instrucción del programa tarda 3 ms y los valores máximos nunca se alcanzan Cuál es la frecuencia (en Hz) de muestreo (lectura) de los sensores? Y si todos los sensores sobrepasan los máximos? 13 / 28

2 3 4 Solución 2.a) Mapeo de registros. VEL STATUS 0xFFF0 BR STATUS 0xFFF1 ALARMA 0xFFF2 FRENOS EM 0xFFF3 14 / 28

2 3 4 Solución 2.b) sensavel : CMP [0 xfff0 ], MAX_SPEED ; alcanzo velocidad maxima? JL sensafrenos OR [0 xfff2 ], 0 x0001 sensafrenos : CMP [0 xfff1 ], MIN_BRAKES ; problema con los frenos? JG sensavel MOV [0 xfff3 ], 0 xffff OR [0 xfff2 ], 0 x0002 JMP sensavel 15 / 28

2 3 4 Solución 2.c) Si no se alcanzan los valores máximos, cada iteración ejecuta 4 instrucciones. Por lo tanto, podemos concluir que cada iteración tarda 4 3 ms. Como podemos realizar una única lectura por iteración, se lee cada señal cada 4 3 ms. En conclusión (y teniendo en cuenta que 1000ms= 1s), la frecuencia de muestreo es 1000 4 3 = 83, 33 Hz. En cambio, si se sobrepasan los valores máximos, cada iteración ejecuta 8 instrucciones, tardando 8 3 ms. Cada señal se lee cada 8 3 ms, dando una frecuencia de 1000 8 3 = 41, 66 Hz. 16 / 28

2 3 4 3 El dueño de la montaña rusa invirtió algo de dinero y compró un nuevo sensor para los frenos. Este nuevo sensor solicita una interrupción si se detecta un inconveniente con los frenos comunes. a) Modificar el programa presentado para aprovechar esta característica de modo que la frecuencia de muestreo sea mayor. b) Escribir la rutina de atención de la interrupción del sensor de frenos. c) Calcular la nueva frecuencia de muestreo para el sensor de velocidad. d) Cómo quedaría la memoria si se pide además, que la rutina principal se carge a partir de la posición 0xAAAA y la rutina de atención de interrupciones 20 posiciones antes? 17 / 28

2 3 4 Solución 3) Modificación sensavel: CMP [0xFFF0], MAX SPEED ;alcanzó velocidad máxima? JL sensavel OR [0xFFF2], 0x0001 ; prendo la alarma de velocidad JMP sensavel 18 / 28

2 3 4 Solución 3) Modificación sensavel: CMP [0xFFF0], MAX SPEED ;alcanzó velocidad máxima? JL sensavel OR [0xFFF2], 0x0001 ; prendo la alarma de velocidad JMP sensavel Rutina de atención de la interrupción rut at int: MOV [0xFFF3], 0xFFFF ; activo los frenos de emergencia OR [0xFFF2], 0x0002 ; prendo la alarma de frenos IRET 18 / 28

2 3 4 Solución 3) Modificación sensavel: CMP [0xFFF0], MAX SPEED ;alcanzó velocidad máxima? JL sensavel OR [0xFFF2], 0x0001 ; prendo la alarma de velocidad JMP sensavel Rutina de atención de la interrupción rut at int: MOV [0xFFF3], 0xFFFF ; activo los frenos de emergencia OR [0xFFF2], 0x0002 ; prendo la alarma de frenos IRET Muestreo Si no se alcanza el valor máximo, cada iteración ejecuta 2 instrucciones. Dando una frecuencia de muestreo de 1000 = 166, 66 Hz. Si, en cambio, se sobrepasa 2 3 el valor máximo, cada iteración ejecuta 4 instrucciones, dando una frecuencia de 1000 = 83, 33 Hz. 4 3 18 / 28

2 3 4 Solución 3.d) A partir de la posición de memoria 0xAAAA se carga la rutina principal. A partir de la posición de memoria 0xAA96 se carga la rutina de atención de interrupciones. En la posición 0x0000 cargamos 0xAA96, que es la posición de memoria donde comienza la RAI. 19 / 28

2 3 4 4 Se está desarrollando un novedoso dispositivo llamado ewc. Su funcionalidad es almacenar agua en un tanque y dejar pasar la misma por una exclusa, cuando el operario de la máquina lo disponga. Además, posee un sistema de llenado automático y una luz para avisar al operario que el tanque está lleno. Se desea controlar este dispositivo con una ORGA1i. Para lograr esto el sistema posee: 20 / 28

2 3 4 un botón que puede ser apretado por el usuario. Su estado se ve reflejado en el registro VAL BOTON: si está presionado vale 0xB010, caso contrario 0x0000. un LED que se debe encender cuando el tanque está lleno para indicar que el sistema está listo para volver a usarse. Para encenderlo hay que escribir 0xFFFF en el registro LED STATE, y para apagarlo hay que escribir 0x0000 en dicho registro. una exclusa que permite dejar pasar el agua. Para que la misma esté abierta se debe escribir continuamente el valor 0xAB1E en el registro SALIDA, en cambio, para cerrarla se debe escribir 0xCE11. un sensor de nivel del agua que produce una interrupción cuando el agua se pasa de los ĺımites permitidos. Al producir la interrupción, además, escribe 0xA17A en el registro NIV AGUA si la interrupción se produjo porque el agua superó en nivel alto, y escribe 0xBA1A si fue por el bajo. una canilla que deja entrar agua al tanque si escribimos 0xADE7 en el registro CANILLA ST, para cerrar la canilla hay q escribir 0x00FF en el mismo registro. 21 / 28

2 3 4 Las funcionalidades del dispositivo deben ser las siguientes: al apretarse el botón, se debe abrir la exclusa que deja circular el agua y apagar el LED. El sistema mantendrá este estado hasta que se produzca una interrupción por el nivel bajo del agua. En ese momento se debe cerrar la exclusa, y abrir la canilla. Cuando se vuelva a producir una interrupción por el nivel alto de agua, se debe cerrar la canilla y prender el led para avisar al usuario que el sistema esta listo para usarse nuevamente. Se pide: a) Describir los estados por los que pasa el sistema. b) Mapear los registros de E/S a direcciones de E/S de ORGA1i. c) Escribir el pseudocodigo de la máquina ORGA1i. d) Escribir en leguaje ensamblador la rutina principal y la rutina de atención de interrupciones. 22 / 28

2 3 4 Solución 4.b) Mapeo de registros. NIV AGUA 0xFFF0 LED STATE 0xFFF1 VAL BOTON 0xFFF2 SALIDA 0xFFF3 CANILLA ST 0xFFF4 23 / 28

2 3 4 Solución 4.c) Rutina Principal ESTADO = ESPERANDO ; while ( true ){ if ( ESTADO == ESPERANDO ){ SALIDA = 0 xce11 ; // mantengo la exclusa cerrada LED_STATUS = 0 xffff ; // el LED queda prendido CANILLA_ST = 0 x00ff ; // mantengo la canilla cerrada if ( VAL_BOTON == 0 xb010 ){ // alguien apreto el boton ESTADO = DESCARGANDO ; // cambio de estado } } else if ( ESTADO == DESCARGANDO ){ SALIDA = 0 xab1e ; // mantengo la exclusa abierta LED_STATUS = 0 x0000 ; // mantengo el LED apagado CANILLA_ST = 0 x00ff ; // mantengo la canilla cerrada } else if ( ESTADO == CARGANDO ){ SALIDA = 0 xce11 ; // mantengo la exclusa cerrada LED_STATUS = 0 x0000 ; // mantengo el LED apagado CANILLA_ST = 0 xade7 ; // mantengo la canilla abierta } } 24 / 28

2 3 4 Solución 4.c) Rutina Atención if ( NIV_AGUA == 0 xa17a ){ ESTADO = ESPERANDO ; // termine de cargar y vuelvo a empezar } else if ( NIV_AGUA == 0 xba1a ){ ESTADO = CARGANDO ; // termine de descargar y empiezo a cargar } IRET (); 25 / 28

2 3 4 Solución 4.d) Rutina Principal ; R1 --> ESTADO : 0 x000 (esperando ), 0 x0001 ( descargando ), 0 x0002 (cargando ) MOV R1, 0 x0000 ; inicio : CMP R1, 0 x0000 ; esperando? JE esperando ; CMP R1, 0 x0001 ; descargando? JE descargando ; CMP R1, 0 x0002 ; cargando? JE cargando ; JMP fin ; esperando : MOV [0 xfff3 ], 0 xce11 ; MOV [0 xfff1 ], 0 xffff ; MOV [0 xfff4 ], 0 xce11 ; CMP [0 xfff2 ], 0 xb010 ; JE cmb_estado JMP fin ; descargando : MOV [0 xfff3 ], 0 xce11 ; MOV [0 xfff1 ], 0 xffff ; MOV [0 xfff4 ], 0 xce11 ; JMP fin ; cargando : MOV [0 xfff3 ], 0 xce11 ; MOV [0 xfff1 ], 0 xffff ; MOV [0 xfff4 ], 0 xce11 ; JMP fin ; cmb_estado : ADD R1, 0 x0001 ; fin : JMP inicio ; 26 / 28

2 3 4 Solución 4.d) Rutina de Atención rut_ate_int : CMP [0 xfff0 ], 0 xa17a JE otro MOV R1, 0 x0000 otro : CMP [0 xfff0 ], 0 xba1a JE fin_int MOV R1, 0 x0002 fin_int : IRET 27 / 28

Preguntas? 28 / 28