Escolar Documentos
Profissional Documentos
Cultura Documentos
P.A. Castillo Valdivieso, M. Garca Cruz, M.G. Arenas, G. Romero, A. Prieto Espinosa
Dpto. de Arquitectura y Tecnologa de Computadores
Universidad de Granada, 18071 Granada
e-mail: pedro@atc.ugr.es
Figura 1. Captura de pantalla bajo Windows en la que el programa-control (a la derecha) enva coordenadas al
simulador del radar (a la izquierda). En este caso, el radar muestra cinco objetivos, de los cuales el control
ha interceptado a dos (a la derecha vemos las coordenadas a las que se ordena interceptar). Conforme el
detector del radar avanza, los objetivos que quedan ms lejanos van desapareciendo.
(programa que se ejecuta en modo texto en una decida no actuar; en ese caso, los valores
ventana de comandos, a la derecha). para X e Y deben ser igual a 0. En
cualquier otro caso, las ecuaciones a
El sistema funciona de la siguiente forma: utilizar sern las siguientes:
1. La sincronizacin entre el programa- X = 200 + distancia * cos(angulo)
control y el simulador se hace a travs de Y = 200 - distancia * sen(angulo)
dos ficheros (S y A). 5. Una vez calculada la coordenada a
2. El simulador inicializa la ventana, dibuja interceptar, se guardan los valores X e Y
el radar, y va haciendo avanzar el en el fichero A (en la primera lnea,
indicador de forma constante. A cada separados ambos nmeros por un
paso escribe en el fichero S el ngulo espacio). Para ello hay que pasar a
actual del indicador y la distancia a un cadena cada uno de los nmeros, y
objetivo detectado en ese momento (si no escribirlos en el fichero como caracteres
hubiera objetivo, escribe el valor 0 como individuales (texto plano). As, si la
distancia). coordenada es (45,70) se guardara como
3. El programa-control, que estaba en un la secuencia de caracteres 4, 5, , 7,
bucle de espera hasta que hubiera datos 0, 13, 10 (el \n , en MSDOS, se cambia
en el fichero S, lee los 2 valores. Se trata por los dos caracteres con cdigos ASCII
de acceder al fichero en modo de texto e 13 y 10).
ir leyendo carcter a carcter hasta
encontrar un espacio, lo que indicar que La sincronizacin por ficheros hace ms
se ha ledo un nmero ms. Seguiremos fcilmente portable el sistema, y al tiempo
leyendo esa lnea hasta haber ledo los 2 delimita los aspectos que el alumno debe estudiar
nmeros; despus se pasan esas cadenas para hacer la prctica:
ledas a nmeros enteros. !" E/S por pantalla
4. El control procesa esos dos valores para !" E/S por fichero
calcular la coordenada cartesiana (X,Y) !" Estructuras de control complejas para la
donde debemos interceptar. Es posible sincronizacin
que en alguna ocasin (si la distancia es
0, esto es, si no hay objetivo), el control
XI Jornadas de Enseanza Universitaria de la Informtica 509
Figura 2. Controles del simulador para iniciar o detener su funcionamiento, para reiniciarlo, obtener informacin sobre
la versin del programa, o para terminar su ejecucin.
!" Clculos matemticos con nmeros !" Reiniciar : si queremos probar diferentes
enteros y en coma flotante programas-control, pulsaremos este botn, de
!" Formato IEEE-754 de representacin de forma que se reinicie el valor del nmero de
nmeros reales objetivos y aciertos, y el indicador se site en
!" Transformacin de datos entre diversas su posicin inicial.
representaciones !" Ayuda : muestra informacin sobre la
versin del programa simulador.
3. Cmo usar el simulador en prcticas? !" Salir : termina el programa.
Hemos desarrollado una versin del simulador Para sincronizar ambos programas a travs
de los dos ficheros, el bucle principal del
para Linux y otra para Win32, por lo que la
prctica puede plantearse en ambos sistemas programa-control (el programa que debemos
operativos. realizar en ensamblador) debe ser similar al
Las versiones del simulador para los siguiente:
repetir
diferentes sistemas pueden descargarse de la URL abrir_fichero("S")
http://atc.ugr.es/~pedro/docencia/simuladores mientras(no_hay_datos_en(S)){
El programa simulador dispone de varios cerrar_fichero
botones para iniciar o detener su funcionamiento, hacer_pausa
o reiniciarlo (ver Figura 2). Su funcin queda abrir_fichero("S")
descrita a continuacin: fin_mientras
// leer los datos
!" Parar : detiene el simulador. El indicador angulo = leer_del_fichero
deja de girar y las comunicaciones se paran. distancia = leer_del_fichero
!" Continuo : comienza el funcionamiento del cerrar_fichero
radar. El indicador ir girando, y de cuando //calcular coordenada
en cuando detectar nuevos objetivos. Las x = calcular_coord_X
comunicaciones se llevarn a cabo y = calcular_coord_Y
//escribir en A la coordenada
continuamente con el programa de control.
510 Recursos docentes
FSINCOS : halla el seno y el coseno del El funcionamiento de los registros internos del
ngulo (en radianes) que hay en la cima de la coprocesador matemtico es diferente al del 8086.
pila, y deja ambos valores en la cima y en la No existen aislados ni con nombres distintos.
siguiente posicin de la pila. Estn estructurados en forma de pila cclica de
ocho elementos. Cada elemento de la pila es de
5. Conclusiones 10 bytes de longitud (80 bits), y el formato de los
datos es real temporal, de forma que el rango de
El aprendizaje del lenguaje ensamblador suele valores representable va de 3.4E-4932 hasta
resultar complicado a los alumnos, as como llegar 1.2E4932. La representacin binaria interna sigue
a hacerles ver la necesidad de su estudio. Sin el formato IEEE754 [4,5].
embargo, plantearles unas prcticas amenas y El puntero de pila indica en todo momento
atractivas puede motivarlos, evitando que les cul es el elemento que se encuentra en la
resulte tan engorroso el estudio a tan bajo nivel de cabecera de la pila (Stack Top). Puede valer entre
la programacin. 0 y 7, es decir, seala el nmero del elemento.
Este trabajo presenta un simulador de radar La mayor parte de las instrucciones del 8087
desarrollado con esta idea. El alumno debe usan los registros de la pila. As, las aritmticas
desarrollar un programa de control que recibe el utilizan uno o dos operandos de la pila y el
valor de la distancia y ngulo del objetivo resultado se deja tambin en la pila.
detectado, y le enva la coordenada cartesiana del Todos los nombres simblicos de las
objetivo a interceptar. instrucciones empiezan por F. El conjunto de
El primer ao en que se ha ofertado esta instrucciones se puede dividir en los siguientes
prctica varios alumnos han desarrollado tipos(ver [1,2] para obtener ms detalles):
programas de control siguiendo las diferentes
opciones para el clculo del seno y coseno. Les !" de transferencia de datos. Sirven para mover
result estimulante y motivador comprobar cmo operandos entre los elementos de la pila y la
sus programas calculaban las coordenadas memoria:
correctamente y acertaban en los objetivos. FLD cargar real en la pila
FST almacenar real en mem.
FILD cargar entero en la pila
Referencias FIST almacenar entero en mem.
fldz ; st0= 0
Z=YX*X fld dword [y] ; st0=y st1=0
fld dword [x] ; st0=x st1=y st2=0
fld dword [y] ; st0=y st1=x*x st2=x ; si (st0<st1) entonces ah=???????1 (x<y)
; si (st0>st1) entonces ah=???????0 (x>y)
; st0=st1-st0 and ah,00000001b
fsubrp st1 ; st0=y-x*x st1=y st2=x*x jnz x_menor
XI Jornadas de Enseanza Universitaria de la Informtica 513
x_menor:
Figura 3. Captura de pantalla bajo Linux en la que el programa-control (abajo a la derecha) enva coordenadas al
simulador del radar (arriba a la izquierda). En este caso, la pantalla del simulador muestra tres objetivos,
uno de los cuales ha sido interceptado.