PlantillaProblemasLa..

Anuncio
D I G I T A L II – D E P A R T A M E N T O
DE
SISTEMAS
E
INFORMÁTICA – UNIVERSIDAD NACIONAL
DE
ROSARIO
PRÓLOGO
Este apunte contiene los problemas para el segundo práctico de Digital II.
En este trabajo práctico se plantea resolver un problema integral emulando un
sistema microprocesado completo, esto es, deberá realizarse la programación
en assembler del programa principal y de las rutinas de servicio de
interrupción, el mapeo de memoria, y la configuración de la IVT para que se
realice un correcto llamado a las rutinas de servicio de interrupción que se
solicite implementar en cada uno de los problemas.
Por otra parte el sistema microprocesado a emular deberá tener un mapeo
como el siguiente:
0xFFFFF
0xFFFF0
SECTOR DE ARRANQUE
~
(área reservada)
inicio
fin
MEMORIA DE USUARIO
~
(área reservada)
0x000FF
0x00000
IVT
Dónde “inicio” y “fin” refieren a direcciones de memoria que serán
especificadas en cada uno de los problemas.
Para implementar este mapeo utilizar la funcionalidad de ajustar el mapa de
memoria brindada por el EMU8086.
El problema debe ser resuelto mediante programación en assembler utilizando
el entorno EMU8086 y los dispositivos virtuales desarrollados por la cátedra.
El alumno deberá presentarse a rendir el laboratorio con el problema resuelto y
funcionando correctamente.
PROBLEMA 1
Diseñar un software que implemente una calculadora utilizando 8086.
Esta versión simplificada de la calculadora debe aceptar las siguientes
operaciones matemáticas: suma(+), resta(-), división(/) y multiplicación(*) y
debe tener memoria de los últimos 10 resultados (R01 al R10) para que estos
puedan utilizarse en nuevas operaciones.
La calculadora debe funcionar continuamente, es decir cuando devuelve un
resultado debe estar lista para recibir una nueva operación.
Para resolver el problema se deberán utilizar los dispositivos virtuales
“Entrada(texto)” e “impresora”. Debe realizarse el correcto tratamiento de las
interrupciones generadas por el DVIO Entrada.
Problemas de laboratorio - Vers.1, 2010
1/5
D I G I T A L II – D E P A R T A M E N T O
DE
SISTEMAS
E
INFORMÁTICA – UNIVERSIDAD NACIONAL
DE
ROSARIO
Se asumirá que el numero mas largo será de cuatro dígitos, es decir el numero
máximo que podrá ingresarse será 9999 (entero). Los resultados serán
números enteros y deberá contemplarse que las operaciones se realicen en
forma correcta para cualquier combinación de los datos de entrada valor y
signo, incluyendo el caso de la división por cero. Para detectar este último caso
deberá hacerse uso de la interrupción por división por cero.
Para este problema:
inicio = 0x0A000
fin
= 0x0AFFF
PROBLEMA 2
Diseñar un software que implemente un temporizador multiproposito utilizando
el 8086 y los dispositivos DVIO.
El temporizador que se desea implementar deberá ser totalmente configurable.
Deberá contar con la posibilidad de cargar un valor de comparación
(modificable), así como también deberá contar con dos modos posibles de
operación (cíclico o one-shot)
Para resolver el problema se deberán utilizar los dispositivos virtuales
“Pulsadores”, “Display” y “Timer”. Debe realizarse el correcto tratamiento de
las interrupciones generadas por los DVIO Pulsadores y Timer.
Para lograr la configuración del Temporizador se utilizarán los pulsadores que
deberán tener asociadas las siguientes funciones:
Pulsador 1 : Subir
Pulsador 2 : Bajar
Pulsador 3 : Entrar
Pulsador 4 : Arrancar/Parar
Modo Configuración:
Pulsando “Entrar” se ingresará al modo de configuración del temporizador, en
el que se deberá ingresar el valor de comparación con los pulsadores “Subir” y
“Bajar” (dicho valor se deberá ir mostrando en el Display). Pulsando
nuevamente “Entrar” se deberá grabar el valor de comparación y quedará
disponible nuevamente el display en “0000” para configurar el modo de
operación del Timer (cíclico = 1 y one-shot =2). Con los pulsadores “Subir” y
“Bajar” elegimos el modo de operación y pulsando nuevamente “Entrar” se
finalizará la configuración.
Modo Operación:
Una vez finalizada la configuración el display deberá mostrar el valor “0000” y
pulsando “Arrancar/Parar” se da comienzo al ciclo configurado. Si se pulsa
Problemas de laboratorio - Vers.1, 2010
2/5
D I G I T A L II – D E P A R T A M E N T O
DE
SISTEMAS
E
INFORMÁTICA – UNIVERSIDAD NACIONAL
DE
ROSARIO
nuevamente “Arrancar/Parar” el ciclo se abortará y el temporizador deberá
mostrar el valor “0000” y quedar a la espera de un nuevo pulsado de
“Arrancar/Parar”.
Si en cualquier momento del ciclo se pulsara el botón “Entrar”, se deberá
ingresar inmediatamente al modo de configuración. En operación normal los
pulsadores “Subir” y “Bajar” carecen de sentido y no deben realizar ninguna
acción.
El DVIO Timer deberá cumplir la función de generar la base de tiempo de 1 seg
para el temporizador.
Para este problema:
inicio = 0x0B000
fin
= 0x0BFFF
PROBLEMA 3
Diseñar un software que implemente el control de llenado y vaciado del DVIO
Tanque.
El control de nivel del tanque deberá operar de la siguiente manera:
1 - El tanque deberá ser llenado hasta lo que ocurra primero, se alcance el
nivel máximo del tanque (sensor LS) o se cumpla con un tiempo máximo (XX)
configurado en el DVIO Timer X. Durante este proceso se debe tener en cuenta
que antes de detener el proceso de llenado del tanque se debe superar el nivel
intermedio (sensor LM) del mismo.
2 - El control deberá ser capaz de mantener el nivel del agua entre los
sensores LM y LS contemplando cualquier estado de las válvulas manuales
(purga y llenado).
3 - En el caso que se presione el DVIO Pulsador1, el tanque deberá vaciarse
en forma completa tomando el tiempo que este proceso demande haciendo
uso del DVIO Timer X. (El tiempo será medido desde el pulsado hasta que se
alcanza el sensor de nivel mínimo LI). El tiempo medido deberá mostrarse en
el DVIO Display.
Para este problema:
inicio = 0x0C000
fin
= 0x0CFFF
Problemas de laboratorio - Vers.1, 2010
3/5
D I G I T A L II – D E P A R T A M E N T O
DE
SISTEMAS
E
INFORMÁTICA – UNIVERSIDAD NACIONAL
DE
ROSARIO
PROBLEMA 4
Diseñar un software que implemente el control de llenado y vaciado del DVIO
Tanque.
El control de nivel del tanque será realizado a través del DVIO Pulsadores, los
cuales deberán tener la siguiente funcionalidad:
Pulsador 1: Controlar el nivel del tanque entorno al sensor de nivel LI
Pulsador 2:Controlar el nivel del tanque entorno al sensor de nivel LM
Pulsador 3: Controlar el nivel del tanque entorno al sensor de nivel LS
Pulsador 4: Deberá vaciar el tanque por debajo del nivel de LI y luego
llenarlo completamente hasta superar el valor LS y quedar
a la espera de un mando de control (pulsador 1,2 o 3).
Al iniciar el proceso, el sistema deberá llenar el tanque hasta superar el valor
LS y quedar a la espera de un mando de control (pulsador 1,2 o 3).
Para este problema:
inicio = 0x0D000
fin
= 0x0DFFF
PROBLEMA 5
Diseñar un software que implemente un sistema de conversión de caracteres
haciendo uso de los DVIO Impresora, Entrada y Pulsadores.
El sistema deberá permitir el ingreso de datos en formato texto en el DVIO
entrada (letras en minúsculas y mayúsculas, números y caracteres especiales).
El sistema deberá operar de la siguiente manera:
1 - El texto ingresado por Entrada deberá ir mostrándose por la Impresora. El
texto debe contener 5 caracteres.
2 - En el caso de que se presione el pulsador 1, la totalidad del mensaje
ingresado deberá ser mostrado en letras MAYUSCULAS (de existir números
deberán quedar sin alteraciones).
3 - En el caso de que se presione el pulsador 2, la totalidad del mensaje
ingresado deberá ser mostrado en letras MINUSCULA (de existir números
deberán quedar sin alteraciones).
4 - Si el texto ingresado contiene caracteres especiales (/, “, @ ..) al presionar
el pulsador 1 o 2 el sistema deberá generar una interrupción por software e
imprimir el siguiente mensaje de error en la impresora: “Conversión No
Valida”. Luego de esto, si se presionan nuevamente el pulsador 1 o 2 el
sistema deberá mostrar nuevamente el mensaje de error.
Luego de ingresar un texto de caracteres válidos deberá ser posible convertir
sus letras en mayúsculas o minúsculas presionando los pulsadores 1 o 2 de
manera alternada.
Problemas de laboratorio - Vers.1, 2010
4/5
D I G I T A L II – D E P A R T A M E N T O
DE
SISTEMAS
E
INFORMÁTICA – UNIVERSIDAD NACIONAL
DE
ROSARIO
Notas:
Utilizar la taba de caracteres ASCII, disponible en la barra de herramientas
del emu8086 (“ascii codes”), para determinar el código asociado (en hexa o decimal) a
cada carácter o letra para determinar si se trata de una letra mayúscula, minúscula o
carácter especial
Al momento del ingreso de caracteres e impresión de los mismos (punto 1)
tener en cuenta que velocidades de simulación menores a 200ms pueden ocasionar
errores en el uso del DVIO Impresora.
Para este problema:
inicio = 0x0E000
fin
= 0x0EFFF
PROBLEMA 6
Diseñar un software que implemente un sistema de ingreso de números a
través del DVIO Entrada de números y visualización de los mismos mediantes
el DVIO Display 7 Segmentos.
El sistema deberá operar de la siguiente manera:
1- El sistema deberá permitir el ingreso de un número de 8 cifras. Para esto se
debe utilizar el DVIO Entrada de números.
2- Una vez que se haya detectado el ingreso de los 8 números, el sistema
deberá comenzar a mostrar dichos números en el display 7 segmentos de a
uno a la vez, rotando la cadena de números de derecha a izquierda hasta
mostrar la totalidad de los mismos. La velocidad de barrido de caracteres se
deberá conseguir mediante el uso del DVIO Timer 1.
3- Una vez mostrada la primera cadena de caracteres el display deberá
mostrar 8888, lo que habilitará al sistema al ingreso de otros 8 números para
ser mostrados de la forma que se indicó en el punto 2.
Para este problema:
inicio = 0x09000
fin
= 0x09FFF
Problemas de laboratorio - Vers.1, 2010
5/5
Descargar