Operaciones con números fraccionarios
Conversión binario-ASCII
Captura de teclas pulsadas
Escritura en pantalla
Manejo de interrupciones
Funcionamiento
La finalidad de la práctica es convertir la pantalla del PC en
una pantalla de visualización de un equipo de adquisición de
datos, con 4 canales. La entrada será una serie de números,
comprendidos entre el 0 y el 255 (00-FFH), que simularán ser la salida
de un conversor analógico-digital de 8 bits, que provienen de un "driver"
que, en esta primera práctica, será entregada por el profesor.
El conversor analógico/Digital convertiría una señal
analógica entre 0 voltios y +5 voltios a un valor binario entre el
0 y el 255. El programa irá leyendo estos datos digitales de uno en
uno, según lo vaya entregando el conversor, los convertirá
al valor de tensión correspondiente y presentará en pantalla
(con dos dígitos decimales) lo siguiente:
.
|
![]() |
La periodicidad con que se leen los datos (y por tanto se refrescará
la pantalla) se controlará mediante las teclas + y - e irá
desde el mínimo posible hasta un máximo de un segundo, aproximadamente.
Este tiempo también se deberá indicar en la pantalla.
El programa comenzará la presentación al pulsar F10 y se
detendrá al pulsar F9, pudiendo volver a arrancar con F10. Finalizará
al pulsar F7.
Mediante las teclas F1 a F4 se activara/desactivará la lectura
y presentación de los canales 1 a 4 respectivamente.
Plazo de entrega : La presentación y evaluación de esta práctica será la sindicada en el calendario, según el grupo (ver calendario ). El nombre del fichero o ficheros a entregar será de la forma parejap1.asm, por ejemplo 3a28p1.asm. Si hay más de un fichero, nombrarlo con números sucesivos y añadir un .bat que los ensamble y linke.(3a28p11.asm, 3a28p12.asm,... 3a28p1.bat)
Realizar un programa que muestre en pantalla el contenido de la posición de memoria 0:300. La presentación debe hacerse en hexadecimal en la fila 20 y columnas 34 y 35 de la pantalla. Se puede utilizar la interrupción 10H o el acceso directo a memoria de video Realizar un programa que muestre en pantalla el contenido de la posición de memoria 0:300. La presentación debe hacerse en decimal en la fila 20 y columnas 34 y sucesivas de la pantalla. Se puede utilizar la interrupción 10H o el acceso directo a memoria de video Realizar un programa que de forma consecutiva muestre inicialmente en las posiciones anteriores de la pantalla el dígito decimal 3. Cada vez que se pulsa las tecla + se muestra el número pero incrementado en una unidad. Si se pulsa -, se muestra el número pero decrementado en una unidad. Si se pulsa * se acaba el programa. Solo se consideran números decimales de 1 dígito
Conversor Analógico-Digital. Dispositivo que obtiene una
representación digital de una señal analógica presente
a su entrada. Los procesos que debe llevar a cabo son los de cuantificación
, por el que la señal analógica de entrada se transforma
en un conjunto discreto de estados de salida, y codificación
, el cual asigna un conjunto de bits a cada uno de dichos estados.
Suponer que la señal de entrada a medir estuviera en el margen
de -12 a 12 v. y el conjunto de estados de salida posible es desde el 0
al 255 (8 bits). Cualquier valor de tensión se codificará
con un número entre el 0 y el FFH, para lo que se deberá calcular
a qué tensión equivale pasar de un estado al siguiente: si
el margen a medir es de 24 voltios y disponemos de 256 estados diferentes,
cada estado consecutivo representa un salto de 24/256=0,09375 voltios. Esto
limitará la precisión de la conversión, valores muy
cercanos de tensión, cuya diferencia sea menor al valor anterior,
tendrán la misma codificación.
La siguiente tabla muestra unos ejemplos de codificaciones de diferentes
valores de tensión a la entrada del conversor:
|
Codificación | Tensión entrada | Codificación |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
El programa pedido deberá hacer la conversión inversa, dado
un número codificado, obtener el valor analógico de tensión
al que corresponde. Por ejemplo, sea el estado 57H (dato leído del
fichero del disco). El valor absoluto de tensión que representa es
de 57H x 0,09375 voltios = 8,15625 voltios, respecto del 0H, osea, respecto
de -12 v. Por tanto la tensión real será -12+8,15625 = -3,84375.
Como nos piden sólo dos decimales, el dato final a presentar será
-3,84 voltios.
NOTA: en la práctica de este curso el margen de valores de tensión
a la entrada es de 0 a 5 v.
Operaciones con decimales. Se puede utilizar la técnica que se desee. Una posible solución puede ser emplear punto fijo. Tomar los datos en un tamaño de16 bits, de forma que los 8 más significativos representen la parte entera y los 8 menos significativos la parte decimal. De esta forma se pueden utilizar las operaciones aritméticas definidas en el 8086 sin mayor problema. Recordar la notación binaria para números fraccionarios.
Control de acciones periodicas. La interrupción 8 (INT 8H)
del PC se activa mediante un generador de reloj interno cada 55 mseg. La
rutina de atención a la interrupción actualiza la hora del PC
y llama a la interrupción 1CH. La subrutina de atención a esta
interrupción no realiza ninguna función, ya que tan sólo
contiene una instrucción IRET.
Se puede realizar un programa que instale unos nuevos vectores a la interrupción
1CH, de forma que apunten a una rutina de atención cuya finalidad
sea la que nos convenga. De esta forma podremos realizar ciertas operaciones
de forma periodica, sin tener que modificar ni complicar el código
del programa principal
Caracteres de gran tamaño. La idea se basa en explorar la
tabla de caracteres empleada internamente por el ordenador. Esta tabla se
encuentra en la memoria ROM, a partir de la dirección F000:FA6E. La
forma de cada carácter está descrita por 8 bytes, cada uno
de los cuales representa una fila, según se muestra a continuación:
|
............ | Representación en ROM
0011 1110 = 3EH
|