Está en la página 1de 29

Proyecto de Programaci on en Ensamblador Estructura de Computadores, Plan 2009

Departamento de Arquitectura y Tecnolog a de Sistemas Inform aticos

Segundo Semestre, 2012-2013

Proyecto de Programaci on en Ensamblador (19/03/2013)

Introducci on
El proyecto consiste en la programaci on, en ensamblador del Motorola 88110, de un conjunto de rutinas que realicen el ltrado de una imagen mediante un ltro programable. La imagen ser a una matriz de p xeles, cada uno de los cuales se representa mediante un byte sin signo que especica su nivel de gris (0 equivale a negro y 255 a blanco). El ltro est a basado en una operaci on recursiva de convoluci on con un n ucleo representado por una constante K y una matriz de dimensi on 3. Cada uno de los elementos del ltro es en realidad un n umero fraccionario que se obtiene al dividir el correspondiente elemento de la matriz entre la constante K .

AVISO
El enunciado de este proyecto coincide con el planteado el semestre/curso anterior, por lo que aquellos alumnos que tengan que repetir o corregir el proyecto que desarrollaron entonces, podr an partir de los programas ya realizados anteriormente, si bien deber an superar las pruebas que se establezcan para la convocatoria actual. Por otra parte, s se ha modicado para el curso actual la especicaci on del contenido que debe tener la memoria del proyecto, por lo que debe observarse con atenci on el apartado de este documento que describe las normas de entrega. El hecho de plantear el mismo proyecto que en el curso anterior tiene adem as las siguientes implicaciones: Se realizar a una revisi on minuciosa de los proyectos realizados en este semestre para descartar o localizar posibles casos de copia. La formaci on de grupos de proyecto estar a limitada para aquellos alumnos que ya hubieran formado parte de un grupo durante convocatorias anteriores, de modo que: Alumnos que aprobaron la parte de ejecuci on (pasaron las pruebas sucientes para aprobar) durante el curso/semestre anterior: Deber an realizar el proyecto de forma individual o bien establecer grupo con los mismos compa neros que tuvieron en dicho curso o semestre. Alumnos que presentaron el proyecto pero NO pasaron todas las pruebas: Podr an realizar el proyecto de forma individual o bien establecer grupo con los mismos compa neros del curso anterior o con alumnos que no hubieran participado anteriormente en la realizaci on del proyecto. En el proyecto se programar a en ensamblador una serie de subrutinas que permitan aplicar el ltro especicado en cada caso a la matriz que se proporcione como ejemplo, obteniendo como resultado una nueva matriz con la imagen ltrada. La funci on principal que debe realizar este conjunto de subrutinas se describe a continuaci on.

Proyecto de Programaci on en Ensamblador (19/03/2013) Transformar una imagen mediante la aplicaci on de un ltro gen erico

El ltrado de una imagen consiste en realizar una serie de operaciones sobre cada uno de los p xeles que la componen. Puesto que se trabaja con im agenes en escala de grises, cada p xel corresponde a un byte sin signo, que indica su luminosidad. El ltro que se emplea en este proyecto pertenece a la categor a de los ltros lineales FIR, aunque se ha modicado para que su implementaci on permita profundizar en algunos conceptos importantes de la programaci on en ensamblador. El ltro se basa en la convoluci on discreta de dos matrices: la primera corresponde a la imagen a ltrar, y la segunda el propio ltro (tambi en llamado el n ucleo del ltro), que podr a considerarse como otra imagen, pero de menor tama no. De hecho, en el presente proyecto, este n ucleo del ltro es una matriz de 3x3 elementos. El modo de aplicaci on del ltro 3x3 consiste en efectuar, sobre cada p xel de la matriz que representa la imagen, ciertas operaciones en las que interviene el valor de dicho p xel, el de sus ocho vecinos m as cercanos, y el de todos los elementos de la matriz que se toma como n ucleo del ltro. Puesto que se trabaja con ltros cuyos valores num ericos no necesariamente son enteros, es posible que la aplicaci on de un ltro produzca como resultado un valor no entero. En estos casos, el valor obtenido se aproximar a truncando, ya que es la opci on que realiza por defecto el procesador simulado. Adem as, puesto que los p xeles de las dos las y de las dos columnas de los extremos de la imagen no tienen ocho vecinos, se evita aplicar para dichos p xeles las operaciones de ltrado. Denominando fi,j al elemento situado en la la i y en la columna j de la matriz que representa el n ucleo del ltro (una vez que se ha dividido por la constante K ), mi,j al elemento de la la i y la columna j de la matriz que representa la imagen y ri,j al correspondiente elemento en la imagen ltrada, la operaci on de ltrado es la siguiente: ri,j = f0,0 mi1,j 1 + f0,1 mi1,j + f0,2 mi1,j +1 + + f1,0 mi,j 1 + f1,1 mi,j + f1,2 mi,j +1 + + f2,0 mi+1,j 1 + f2,1 mi+1,j + f2,2 mi+1,j +1 Por ejemplo, en el caso representado en la gura 1, el nuevo valor del p xel 2, 2 de la imagen imoriginal (m2,2 = 1) tras aplicar el ltro F 1 ser a r2,2 = 4:
r2,2 = = f0,0 m1,1 + f0,1 m1,2 + f0,2 m1,3 + f1,0 m2,1 + f1,1 m2,2 + f1,2 m2,3 + + f2,0 m3,1 + f2,1 m3,2 + f2,2 m3,3 = 6 0, 125 + 7 0, 125 + 8 0, 125 + 0 0, 125 + 1 0, 0 + 2 0, 125 + + 4 0, 125 + 5 0, 125 + 6 0, 125 = 4 (tras el ajuste de 4, 75)

Para obtener esta expresi on en que cada coeciente del ltro tiene el valor 0, 125, se ha partido de los coecientes de la matriz M at, todos los cuales tienen valor unidad y se han dividido entre la constante K = 8. Seg un se se nalaba anteriormente, el ltro de imagen presenta una modicaci on respecto al uso m as frecuente de este tipo de ltros: consiste en que su aplicaci on ser a recursiva, de modo que se volver a a aplicar el mismo ltro sucesivas veces. De hecho, se aplicar a de nuevo siempre que se cumplan las condiciones siguientes: En la u ltima aplicaci on del ltro se ha modicado un n umero sucientemente alto de p xeles (se denir a m as adelante). El n umero de veces que se ha aplicado el ltro no ha alcanzado un m aximo predeterminado (se denir a m as adelante).

Proyecto de Programaci on en Ensamblador (19/03/2013)

Im_original (mi,j)
1 5 9 3 7 . 2 6 0 4 8 . 3 7 1 5 9 . 4 8 2 6 0 . 5 9 3 7 1 . 6 0 4 8 2 . 7 1 5 9 3 . . . . . . . . . . . . . . . . . . .

Filtro F1 (fi,j)
0,125 0,125 0,125 0,125 0,0 0,125 1 0,125 0,125 0,125 1 0 1 1 1 1

formado por: K=8 Mat= 1


1

Valor de m2,2= 1

Valor de r2,2= 4,75 4

Figura 1. Aplicaci on de un ltro de imagen. En la descripci on de la rutina correspondiente a la aplicaci on del ltro quedar an aclarados los aspectos concretos de implementaci on.

Estructura del proyecto


El proyecto estar a compuesto por cuatro subrutinas que se relacionan tal y como se indica en la gura 2. Adem as, se construir a un programa principal para cada una de las pruebas que sea necesario realizar durante la implementaci on y depuraci on de las subrutinas del proyecto. Se ha desglosado el programa de ltrado en un n umero alto de subrutinas para facilitar al alumno su depuraci on, ya que as se enfrentar a a fragmentos de c odigo de tama no manejable. Adem as, al tener el programa segmentado en varias partes, el corrector autom atico proporcionar a informaci on m as precisa sobre las partes que se han implementado correctamente y las que necesitan corregirse.

FILTROREC

FILTRO

COMPARA

FILTRAPIXEL
Figura 2. Jerarqu a de las rutinas del proyecto.

Programa Principal
El programa principal se encargar a de inicializar la pila de usuario, almacenar en ella los par ametros que se deben pasar, e invocar a las distintas rutinas objetivo de este proyecto.

Proyecto de Programaci on en Ensamblador (19/03/2013)

Los par ametros de las rutinas se pasar an siempre en la pila salvo que se especique lo contrario. El resultado se recoger a normalmente en el registro r29, salvo que se especique de otro modo.

Filtro recursivo
NPasadas = FILTROREC ( Imagen, MFiltro, NCambios, NPasadas ) Par ametros: Imagen: Es la matriz que contiene tanto la imagen de entrada, a la que se ha de aplicar el ltro, como la imagen de salida, una vez ltrada. El ltro gen erico que se ha de aplicar de forma recursiva est a especicado por la matriz de coecientes que se facilita en el segundo par ametro. Se pasa por direcci on, por lo que ocupa 4 bytes. Es un par ametro de entrada y salida que tiene tres campos: El n umero de las, de tipo entero (M). El n umero de columnas, de tipo entero (N). Los elementos almacenados por las, cada uno de tipo byte sin signo (MxN bytes, MxN/4 palabras). MFiltro. Es la matriz cuadrada que dene los elementos del ltro que se ha de pasar a la imagen proporcionada a trav es del primer par ametro. Es un par ametro de entrada que se pasa por direcci on, por lo que ocupa 4 bytes. Dene la posici on de memoria en que se encuentra la especicaci on del ltro, formada por dos campos: La constante entera K que divide a cada componente del ltro Los nueve elementos del ltro almacenados por las, cada uno de tipo entero (en total 9 palabras). NCambios: Es un valor que dene el m nimo n umero de p xeles diferentes entre la imagen original y la ltrada que determina la necesidad de realizar un nuevo ltrado (una nueva llamada recursiva). Es un par ametro de entrada, de tipo entero, se pasa por valor y ocupa 4 bytes. NPasadas: Es un valor que dene el n umero de pasadas ya realizadas del ltro denido por M F iltro. Es un par ametro de entrada, de tipo entero, se pasa por valor y ocupa 4 bytes. Valor de retorno: NPasadas: La funci on devuelve el n umero de pasadas del ltro ya realizadas a la imagen original. El valor de retorno se devuelve en el registro r29. Descripci on: La rutina FILTROREC realiza el ltrado recursivo de una imagen. La imagen de entrada est a denida por el primer par ametro de la subrutina, que especica el n umero de las

Proyecto de Programaci on en Ensamblador (19/03/2013)

y columnas y los bytes que representan cada uno de sus p xeles. La labor b asica de esta subrutina consiste en aplicar una funci on de ltrado a cada uno de los p xeles de la imagen (mediante la llamada a la subrutina FILTRO) y comprobar si se ha alcanzado alguna de las condiciones de terminaci on de la recursividad, en cuyo caso se devuelve el control al llamante. La condici on de salida de la recursividad es que se observe cualquiera de las siguientes situaciones: 1. El n umero de pasadas ya realizadas sobrepasa el valor l mite, que se ha jado en 20. Puesto que este n umero se comunica como par ametro de entrada, es necesario que el programa llamante a esta subrutina proporcione 0 como valor de este par ametro. 2. El n umero de diferencias detectadas entre la imagen original y la ltrada tras la u ltima aplicaci on del ltro es menor que el jado por el par ametro N Cambios. La implementaci on de esta subrutina debe realizarse obligatoriamente mediante el algoritmo recursivo aqu descrito. En caso de entregar una implementaci on no recursiva, el proyecto ser a evaluado como suspenso a un en el caso de que supere todas las pruebas del corrector autom atico. El funcionamiento de la rutina ser a el descrito a continuaci on: 1. Reservar a espacio en el marco de pila para almacenar la imagen ltrada ImF iltrada. L ogicamente se reservar a el mismo espacio que ocupa la imagen sin ltrar, pero ajustado por exceso para que sea un m ultiplo de 4 bytes. 2. Llamar a a la subrutina FILTRO, que se encargar a de aplicar una vez el ltro denido por la matriz de coecientes M F iltro. Para ello habr a preparado los par ametros de dicha llamada, que ser an los siguientes: la imagen original Imagen, la zona de memoria de la imagen ltrada, que ser a la que se ha reservado en el marco de pila en el paso anterior ImF iltrada, y la matriz de coecientes, M F iltro. 3. Incrementar a el n umero de pasadas del ltro que se ha realizado, que pasar a a ser N P asadas + 1. Si (N P asadas + 1) >= 20, se abandonar a el proceso recursivo (por requerir un n umero demasiado alto de aplicaciones del ltro). En este caso, la ejecuci on continuar a en el paso 6 de este procedimiento. 4. Contabilizar a el n umero de p xeles que dieren entre la imagen original y la ltrada para decidir si el proceso recursivo debe continuar o nalizar. Para ello, llamar aa la subrutina COMPARA, pas andole como par ametros las im agenes original y ltrada. Si el n umero de cambios detectado por COMPARA es menor que el especicado por el par ametro N Cambios, se dar a por terminado el proceso recursivo, continuando la ejecuci on en el paso 6 de este procedimiento. 5. Al no haberse alcanzado el nal de la recursividad, llamar a a la propia subrutina FILTROREC, con los siguientes par ametros: la imagen ltrada, ImF iltrada, la matriz de coecientes, M F iltro, el n umero m aximo de cambios para que se termine el proceso recursivo N Cambios y, nalmente, el n umero de pasadas ya realizadas, que se encontr o en el paso 3 de este procedimiento. Al retornar de esta llamada recursiva, la ejecuci on continuar a por el paso 6. 6. Copiar a la imagen ltrada sobre la zona que ocupaba la imagen original.

Proyecto de Programaci on en Ensamblador (19/03/2013) 7. Devolver a el control al programa llamante, proporcion andole como valor de retorno el n umero de pasadas realizadas hasta el momento.

Filtro de imagen
FILTRO ( Imagen, ImFiltrada, MFiltro ) Par ametros: Imagen: Es la matriz que contiene la imagen de entrada a la que se ha de aplicar el ltro. El ltro gen erico que se ha de aplicar a la imagen est a especicado por la matriz de coecientes que se facilita en el u ltimo par ametro. Se pasa por direcci on, por lo que ocupa 4 bytes. Es un par ametro de entrada que tiene tres campos: El n umero de las, de tipo entero (M). El n umero de columnas, de tipo entero (N). Los elementos almacenados por las, cada uno de tipo byte sin signo (MxN bytes, MxN/4 palabras). ImFiltrada: Es la matriz que contendr a la imagen de entrada una vez que se le haya aplicado el ltro. Se pasa por direcci on, por lo que ocupa 4 bytes. Es un par ametro de salida que tiene tres campos: El n umero de las, de tipo entero (M). El n umero de columnas, de tipo entero (N). Los elementos almacenados por las, cada uno de tipo byte sin signo (MxN bytes, MxN/4 palabras). MFiltro. Es la matriz cuadrada que dene los elementos del ltro que se ha de pasar a la imagen proporcionada a trav es del primer par ametro. Es un par ametro de entrada que se pasa por direcci on, por lo que ocupa 4 bytes. Dene la posici on de memoria en que se encuentra la especicaci on del ltro, formada por dos campos: La constante entera K que divide a cada componente del ltro Los nueve elementos del ltro almacenados por las, cada uno de tipo entero (en total 9 palabras). Descripci on: La rutina FILTRO aplica la m ascara de ltrado denida por la matriz M F iltro a la imagen proporcionada como primer par ametro, Imagen y deja el resultado en la imagen especicada como segundo par ametro ImF iltrada. El funcionamiento de esta rutina ser a el siguiente: 1. Copiar a las constantes que denen el n umero de las M y el n umero de columnas N de la imagen original sobre la imagen ltrada ImF iltrada. 2. Copiar a la primera la completa de la imagen original sobre la imagen ltrada.

Proyecto de Programaci on en Ensamblador (19/03/2013)

3. Desde la segunda (i = 1) hasta la pen ultima la (i = (M 2)), de la matriz original, realizar a las siguientes operaciones: a ) Copiar a el p xel de la primera columna (j = 0) desde la imagen original hasta la imagen ltrada. b ) Iniciar a un bucle que recorrer a desde el segundo (j = 1) al pen ultimo (j = (N 2)) p xel de la la que se est a procesando en que se realizar an las siguientes operaciones: 1) Preparar a los par ametros y realizar a una llamada a la subrutina FILTRAPIXEL para el elemento actual. Los par ametros que se proporcionan son los siguientes: la imagen original Imagen, el n umero de la i, y de columna j , y matriz de coecientes M F iltro. 2) Almacenar a el valor de retorno recogido de la subrutina FILTRAPIXEL en la posici on que le corresponde (i, j ) de la imagen ltrada ImF iltrada. c ) Copiar a el p xel de la u ltima columna de la la actual, desde la imagen original hasta la imagen ltrada. 4. Copiar a la u ltima la completa de la imagen original sobre la imagen ltrada.

Filtro de un p xel
ValorPixel = FILTRAPIXEL ( Imagen, i, j, MFiltro ) Par ametros: Imagen: Es la matriz que contiene la imagen de entrada a uno de cuyos p xeles se ha de aplicar el ltro. El ltro gen erico que se ha de aplicar a la imagen est a especicado por la matriz de coecientes que se facilita en el u ltimo par ametro. Se pasa por direcci on, por lo que ocupa 4 bytes. Es un par ametro de entrada que tiene tres campos: El n umero de las, de tipo entero (M). El n umero de columnas, de tipo entero (N). Los elementos almacenados por las, cada uno de tipo byte sin signo (MxN bytes, MxN/4 palabras). i: Es el n umero de la (comprendido entre 0 y M-1) del p xel de la imagen proporcionada como primer par ametro Imagen al que se quiere aplicar la m ascara denida por M F iltro. Es un par ametro de entrada que se pasa por valor. j: Es el n umero de columna (comprendido entre 0 y N-1) del p xel de la imagen proporcionada como primer par ametro Imagen al que se quiere aplicar la m ascara denida por M F iltro. Es un par ametro de entrada que se pasa por valor. MFiltro. Es la matriz cuadrada que dene los elementos del ltro que se ha de pasar a la imagen proporcionada a trav es del primer par ametro. Es un par ametro de entrada que se pasa por direcci on, por lo que ocupa 4 bytes. Dene la posici on de memoria en que se encuentra la especicaci on del ltro, formada por dos campos:

10

Proyecto de Programaci on en Ensamblador (19/03/2013) La constante entera K que divide a cada componente del ltro Los nueve elementos del ltro almacenados por las, cada uno de tipo entero (en total 9 palabras).

Valor de retorno: ValorPixel: La funci on devuelve el valor que se ha de asignar al p xel seleccionado una vez aplicado el ltro. El valor de retorno es un entero sin signo que se devuelve en el registro r29. Descripci on: La rutina FILTRAPIXEL aplica la m ascara de ltrado denida por la matriz M F iltro al p xel seleccionado por los par ametros i y j de la imagen proporcionada como primer par ametro, Imagen. La rutina devuelve como resultado el valor equivalente al mismo p xel en la imagen ltrada. No ser a necesario comprobar que los valores de i y j facilitados como par ametros dan lugar a un elemento v alido de la imagen, sino que se supondr a que el programa llamante solo proporcionar a valores adecuados para dichos par ametros. El funcionamiento de esta rutina ser a el siguiente: 1. Inicializar a a 0 un acumulador entero de una palabra ACC y leer a el valor K (denido como parte del ltro M F iltro), asign andoselo a una variable local (puede ser un registro). 2. Asignar a a un puntero la direcci on del elemento i 1, j 1 de la imagen de entrada Imagen. Otro puntero se nalar a al primer elemento de la matriz de coecientes del ltro M F iltro. 3. Recorrer a los 9 elementos de la Imagen involucrados en la operaci on de ltro tal como se explica en la introducci on de este enunciado. Al mismo tiempo se recorren los 9 elementos de la matriz de coecientes del ltro. En cada iteraci on de estos bucles se efectuar an las siguientes operaciones: a ) Se leer a sobre un registro general el byte sin signo que determina el nivel de intensidad del p xel seleccionado. Con esta lectura, el registro contendr a el mismo valor pero representado como un entero de 32 bits. b ) Se multiplicar a el valor obtenido en el paso anterior por el valor correspondiente de la matriz de coecientes, acumulando el resultado sobre el acumulador ACC . 4. Dividir a el valor acumulado en ACC entre el valor de K , dejando de nuevo el resultado en ACC . Utilizar a la divisi on entera. 5. Ajustar a el valor obtenido en el paso anterior, de modo que si es negativo se sustituir a por cero y si es positivo y superior a 255 se sustituir a por este nivel m aximo de intensidad 255. 6. Devolver a el control al programa llamante, dando como resultado en r29 el valor obtenido en el paso anterior.

Proyecto de Programaci on en Ensamblador (19/03/2013)

11

Compara im agenes
Diferencias = COMPARA ( Imagen1, Imagen2 ) Par ametros: Imagen1: Es la matriz que contiene la primera de las dos im agenes que se han de comparar. Se pasa por direcci on, por lo que ocupa 4 bytes. Es un par ametro de entrada que tiene tres campos: El n umero de las, de tipo entero (M). El n umero de columnas, de tipo entero (N). Los elementos almacenados por las, cada uno de tipo byte sin signo (MxN bytes, MxN/4 palabras). Imagen2: Es la matriz que contiene la segunda de las dos im agenes que se han de comparar. Se pasa por direcci on, por lo que ocupa 4 bytes. Es un par ametro de entrada que tiene tres campos con id entica estructura que Imagen1. Valor de retorno: Diferencias: La funci on devuelve el n umero de p xeles cuyo valor de intensidad diere entre las dos im agenes proporcionadas. El valor de retorno es un entero sin signo que se devuelve en el registro r29. Descripci on: La rutina COMPARA recorre las dos im agenes a las que hacen referencia los par ametros y cuenta el n umero de p xeles que dieren entre ambas. El funcionamiento de esta rutina ser a el siguiente: 1. Inicializar a a 0 un contador de diferencias Dif . 2. Recorrer a los MxN elementos de cada matriz, incrementando el contador cada vez que el p xel correspondiente a ambas sea distinto. 3. Devolver a el control al programa llamante, dando como resultado en r29 el valor obtenido en el paso anterior.

Creaci on de una pila de usuario


Debido a que el 88110 no dispone de un registro de prop osito espec co para la gesti on de la pila, se asignar a como puntero de pila uno de los registros de prop osito general. Se utilizar a el registro r30 como puntero de pila. Este apuntar a a la cima de la pila, es decir, a la palabra que ocupa la cabecera de la pila (donde estar a la u ltima informaci on introducida) y esta crecer a hacia direcciones de memoria decrecientes. A modo de ejemplo se muestran las operaciones elementales a realizar sobre la pila: PUSH y POP (v ease la gura 3). Supongamos que el registro r30 contiene el valor 10000 (decimal) y el registro r2 contiene el valor hexadecimal 0x04030201. La operaci on PUSH, que introduce este registro en la pila, se implementa con la siguiente secuencia de instrucciones:

12

Proyecto de Programaci on en Ensamblador (19/03/2013)

9996:

0x01 0x02 0x03 0x04

10000:

xxxx xxxx xxxx xxxx

Figura 3. Operaciones PUSH y POP. subu r30,r30,4 st r2,r30,0 quedando r30(SP) = 9996 y la pila como se indica en la gura 3. Supongamos que despu es de realizar la operaci on anterior se realiza una operaci on POP sobre la pila con el registro r3 como operando. La secuencia de instrucciones resultante ser a la siguiente: ld r3,r30,0 addu r30,r30,4 quedando r3 = 0x04030201 y r30(SP) = 10000

Subrutinas anidadas, variables locales y paso de par ametros


Puesto que las instrucciones de salto con retorno que proporciona el 88110 (jsr y bsr) salvaguardan la direcci on de retorno en el registro r1, hay que incluir un mecanismo que permita realizar llamadas anidadas a subrutinas. Por este motivo es necesario guardar el contenido de dicho registro en la pila. Este mecanismo s olo es estrictamente necesario cuando una subrutina realiza una llamada a otra, pero, para sistematizar la realizaci on de este proyecto, se propone realizar siempre a la entrada de una subrutina la salvaguarda del registro r1 en la pila mediante una operaci on PUSH. El espacio asignado para variables locales se reserva en el marco de pila de la correspondiente rutina. Para construir dicho marco de pila basta con asignar a uno de los registros de la m aquina el valor del puntero de pila r30, despu es de haber salvaguardado el valor que tuviera el registro que act ua como puntero al marco de pila del llamante. Para la realizaci on del proyecto se utilizar a el registro r31. Por tanto, las primeras instrucciones de una subrutina que desea activar un nuevo marco de pila ser an las siguientes:

Proyecto de Programaci on en Ensamblador (19/03/2013)


r30 (SP)

13

IMFilt (M filas) IMFilt (N columnas) IMFilt[0][0] .. IMFilt[0][3]

Final de: IMFilt[][]


.

r31 (FP llamante) r1 (dir retorno) Imagen = 0x8000 Mfiltro = 0x8400 Ncambios = 20 Npasadas = 0

r31 (FP)

Figura 4. Estado de la pila tras activarse la rutina FILTROREC. RUTINA: subu r30,r30,4 st r1,r30,0 subu r30,r30,4 st r31,r30,0 addu r31,r30,r0 ; Se realiza una operacion PUSH r1 ; Se realiza una operacion PUSH r31 ; r31 <- r30

En este proyecto se utilizar an los dos m etodos cl asicos de paso de par ametros: Paso por direcci on: Se pasa la direcci on de memoria donde est a contenido el valor del par ametro sobre el que la subrutina tiene que operar. Paso por valor: Se pasa el valor del par ametro sobre el que la subrutina tiene que operar. El paso de par ametros a todas las subrutinas del proyecto se realizar a utilizando la pila de la m aquina salvo cuando se especique de otro modo. El par ametro que queda en la cima de la pila es el primero de la lista de argumentos. Por ejemplo, para una invocaci on de la rutina FILTROREC los par ametros en pila quedar an tal y como se especica en la gura 4, en la que se ilustra tambi en la reserva de espacio en la pila que realiza FILTROREC para almacenar la imagen ltrada. El comienzo de esta rutina quedar a como sigue: FILTROREC: PUSH (r1) PUSH (r31) addu r31,r30,r0 ld r10, r31, 8 . . . . . clr r6, r6, 2<0> subu r30,r30,r6

; ; ; ; ; ; ;

Se guarda la direccion de retorno Se salva el FP del llamante r31<-r30 Activaci on puntero de marco de pila lee los par ametros de la subrutina . . . . . . . . . . . . . . . . . calcula y asigna a r6 el n umero de bytes a reservar r30<-r30-r6 Reserva espacio para la imagen filtrada

14

Proyecto de Programaci on en Ensamblador (19/03/2013)

Asignaci on de etiquetas y de memoria


El punto de entrada de cada una de las subrutinas deber a ir asociado a las etiquetas FILTROREC, FILTRO, FILTRAPIXEL y COMPARA (todas las letras en may usculas). Por ejemplo, la primera instrucci on perteneciente a la subrutina COMPARA deber a ir precedida de esta etiqueta: COMPARA: subu r30,r30,4 . . . El rango de direcciones 0x00007000 a la 0x00009000 se reservar a para el programa corrector, es decir, el alumno no debe ubicar en dichas posiciones ni c odigo ni datos. La pila se situar a en las posiciones altas de memoria (por ejemplo, puede inicializarse el puntero de pila en la direcci on 0x0000F000). Por otra parte, cuando en una subrutina sea necesario utilizar memoria para almacenar temporalmente informaci on, se emplear a siempre memoria de la pila y nunca variables denidas en direcciones absolutas. Un proyecto que no se atenga a esta norma se evaluar a como suspenso a un en el caso de que llegue a pasar las pruebas establecidas por el Departamento.

Proyecto de Programaci on en Ensamblador (19/03/2013)

15

Ejemplos
A continuaci on se incluye una serie de ejemplos con los argumentos que se pasan a las distintas subrutinas y las direcciones de memoria que se modican. Todos los ejemplos se han descrito utilizando el formato de salida que ofrece el simulador del 88110. En este procesador el direccionamiento se hace a nivel de byte y se utiliza el formato little-endian. En consecuencia, cada una de las palabras representadas a continuaci on de la especicaci on de la direcci on debe interpretarse como formada por 4 bytes con el orden que se muestra en el ejemplo siguiente: Direcciones de memoria, tal como las representa el simulador: 60000 04050607 05010000 Direcciones 60000 60001 60002 60003 60004 60005 60006 60007 de memoria, tal como se deben interpretar: 04 05 06 07 05 01 00 00

Valor de las palabras almacenadas en las posiciones 60000 y 60004, tal como la interpreta el procesador: 60000 60004 0x07060504 = 117.835.012 0x00000105 = 261

Filtrado de un p xel
Caso 1. Llamada a FILTRAPIXEL Se realiza el ltrado de un p xel en una imagen nula y con un ltro unitario, que deja cada p xel con el mismo valor que ten a antes del ltrado. r30=40944 (0x9FF0) Direcciones de memoria: 40944 00800000 02000000 32768 32784 32800 32800 32816 32832 04000000 00000000 00000000 08000000 00000000 00000000

02000000 00000000 00000000

28800000 00000000 00000000

00000000 00000000

00000000 00000000

01000000 00000000 00000000

00000000 01000000 00000000

16 Resultado: r30=40944 (0x9FF0)

Proyecto de Programaci on en Ensamblador (19/03/2013)

r29=0 (0x0)

Caso 2. Llamada a FILTRAPIXEL Se realiza el ltrado de un p xel en una imagen no nula con un ltro que duplica el valor del elemento sobre el que se aplica. r30=40944 (0x9FF0) Direcciones de memoria: 40944 00800000 02000000 32768 32784 32800 32800 32816 32832 Resultado: r30=40944 (0x9FF0) r29=136 (0x88) 04000000 44444444 44444444 08000000 44444444 4444444

02000000 44444444 44444444

28800000 44444444 44444444

00000000 00000000

00000000 00000000

01000000 00000000 00000000

00000000 02000000 00000000

Caso 3. Llamada a FILTRAPIXEL Se realiza el ltrado de un p xel en una imagen no nula con un ltro que obtiene la media de los tres elementos situados en la la anterior. r30=40944 (0x9FF0) Direcciones de memoria: 40944 00800000 02000000 32768 32784 32800 32800 32816 32832 Resultado: r30=40944 (0x9FF0) r29=52 (0x34) 04000000 44353433 44555453 08000000 44444444 44444444

02000000 44444444 44448844

28800000 44444444 44444444

01000000 00000000

01000000 00000000

03000000 00000000 00000000

01000000 00000000 00000000

Filtrado de una imagen


Caso 4. Llamada a FILTRO Llama a FILTRO pas andole una imagen nula de 4x8 elementos y un ltro unitario que devuelve la misma imagen recibida.

Proyecto de Programaci on en Ensamblador (19/03/2013) r30=40948 (0x9FF4) Direcciones de memoria: 40944 00800000 32768 32784 32800 32848 32864 32880 Resultado: r30=40948 (0x9FF4) Direcciones de memoria: 32800 32816 00000000 00000000 32832 00000000 00000000 04000000 00000000 00000000 01000000 00000000 00000000 08000000 00000000 00000000 00000000 01000000 00000000

17

28800000 00000000 00000000

50800000 00000000 00000000

00000000 00000000

00000000 00000000

04000000 00000000 00000000

08000000 00000000 00000000

Caso 5. Llamada a FILTRO Llama a FILTRO pas andole una imagen no nula de 4x8 elementos y un ltro que devuelve la imagen dividiendo entre 2 el valor de sus elementos. r30=40948 (0x9FF4) Direcciones de memoria: 40944 00800000 32768 32784 32800 32848 32864 32880 Resultado: r30=40948 (0x9FF4) Direcciones de memoria: 32800 32816 78563412 FBFCFDFE 32832 782B1A09 7D7E7EFE 04000000 78563412 78563412 02000000 00000000 00000000 08000000 FBFCFDFE FBFCFDFE 00000000 01000000 00000000

28800000 78563412 78563412

50800000 FBFCFDFE FBFCFDFE

00000000 00000000

00000000 00000000

04000000 782B1A09 78563412

08000000 7D7E7EFE FBFCFDFE

Compara dos im agenes


Caso 6. Llamada a COMPARA Llama a COMPARA, pas andole dos imagenes de 4x8 elementos que dieren en uno solo de ellos

18 r30=40952 (0x9FF8) Direcciones de memoria: 40944 32768 32784 32800 32800 32816 32832 Resultado: r30=40952 (0x9FF8) 04000000 00000000 00000000

Proyecto de Programaci on en Ensamblador (19/03/2013)

00800000 08000000 00010000 00000000 00000000 00000000

28800000 00000000 00000000

00000000 00000000

00000000 00000000

04000000 00000000 00000000

08000000 00000000 00000000

r29=1 (0x1)

Caso 7. Llamada a COMPARA Llama a COMPARA, pas andole dos imagenes de 4x8 elementos en las que dieren todos sus elementos r30=40952 (0x9FF8) Direcciones de memoria: 40944 32768 32784 32800 32800 32816 32832 Resultado: r30=40952 (0x9FF8) r29=32 (0x20) 04000000 FF55FF55 FF55FF55 08000000 FF55FF55 FF55FF55

00800000 55FF55FF 55FF55FF

28800000 55FF55FF 55FF55FF

FF77FF77 FF77FF77

FF77FF77 FF77FF77

04000000 77FF77FF 77FF77FF

08000000 77FF77FF 77FF77FF

Filtrado recursivo de una imagen


Caso 8. Llamada a FILTROREC Llama a FILTROREC pas andole una imagen no nula de 4x8 elementos y un ltro que sustituye cada elemento por la media de los que le rodean. El n umero de cambios admitido es 2. r30=40944 (0x9FF0) Direcciones de memoria: 40944 00800000 28800000 32768 04000000 08000000

02000000 00FF00FF

00000000 FF00FF00

Proyecto de Programaci on en Ensamblador (19/03/2013) 32784 32800 32800 32816 32832 Resultado: r30=40944 (0x9FF0) r29=9 (0x9) 00FF00FF 00FF00FF FF00FF00 FF00FF00 00FF00FF FF00FF00

19

01000000 01000000

01000000 01000000

08000000 01000000 01000000

01000000 00000000 01000000

Direcciones de memoria 32768 04000000 32784 004C8B9D 32800 00FF00FF

08000000 9D8B4C00 FF00FF00

00FF00FF 004C8B9D

FF00FF00 9D8B4C00

Caso 9. Llamada a FILTROREC Llama a FILTROREC pas andole una imagen no nula de 4x8 elementos y un ltro que sustituye cada elemento por la media de los que le rodean. El n umero de cambios admitido es 0, por lo que se detiene al alcanzar el m aximo n umero de iteraciones (20). r30=40944 (0x9FF0) Direcciones de memoria: 40944 00800000 28800000 32768 32784 32800 32800 32816 32832 Resultado: r30=40944 (0x9FF0) r29=20 (0x14) 04000000 FF0000FF FF0000FF 08000000 FF0000FF FF0000FF

00000000 FF0000FF FF0000FF

00000000 FF0000FF FF0000FF

01000000 01000000

01000000 01000000

08000000 01000000 01000000

01000000 00000000 01000000

Direcciones de memoria 32768 04000000 32784 FF8F7795 32800 FF0000FF

08000000 95778FFF FF0000FF

FF0000FF FF8F7795

FF0000FF 95778FFF

20

Proyecto de Programaci on en Ensamblador (19/03/2013)

NORMAS DE PRESENTACION
Toda la informaci on relativa a este proyecto se encuentra disponible en el URL: http://www.datsi.fi.upm.es/docencia/Estructura_09/Proyecto_Ensamblador Esta p agina contiene una secci on de anuncios relacionados con el proyecto. CONVOCATORIA DE JUNIO 2013 El plazo de entrega del proyecto estar a abierto desde el viernes d a 5 de abril hasta el viernes 10 de mayo de 2013 en que se realizar a la correcci on denitiva. A partir del d a 13 de mayo el sistema estar a congurado de modo que permita entregar u nicamente la memoria del proyecto. El plazo de entrega para dicha memoria nalizar a el lunes 20 de mayo a las 20:00. Cada grupo podr a disponer de cinco de las correcciones del proyecto planicadas para los d as laborables comprendidos entre el 15 de abril y el 9 de mayo. Adem as de esas cinco, podr a utilizar las correcciones de los d as 5 y 12 de abril, as como la u ltima, prevista para el d a 10 de mayo. Todas las correcciones se realizar an a partir de las 21:00. Para solicitar una correcci on bastar a con entregar correctamente los cheros del proyecto antes de dicha hora l mite. El examen del proyecto est a planicado para el martes d a 14 de mayo a las 20:00 (horario habilitado por Jefatura de Estudios para evaluaci on). CONVOCATORIA EXTRAORDINARIA DE JULIO 2013 El plazo de entrega del proyecto para esta convocatoria terminar a el lunes d a 8 de julio de 2013 a las 21:00, en que se realizar a una correcci on para todos los grupos que hayan realizado la entrega y se encuentren pendientes de correcci on. Adem as, los d as 1 a 5 de julio se realizar an correcciones a las 21:00 para todos los alumnos que hayan realizado correctamente la entrega del proyecto.A partir del d a 10 de julio el sistema estar a congurado de modo que permita entregar u nicamente la memoria del proyecto. El plazo de entrega para dicha memoria nalizar a el lunes 15 de julio a las 20:00. El examen del proyecto se realizar a el mismo d a del examen extraordinario de teor a y a continuaci on de este (planicado para el martes 9 de julio).

TUTOR IAS DEL PROYECTO


Las preguntas relacionadas con este proyecto se atender an por correo electr onico en la direcci on (pr ensamblador@datsi..upm.es) y personalmente en los despachos 4105 y/o 4106. El horario de atenci on personal a los alumnos para cuestiones relacionadas con este proyecto es el indicado en la web del Departamento para los profesores encargados del proyecto durante el presente curso acad emico (Jos e L. Pedraza, Manuel M. Nieto): http://www.datsi.fi.upm.es/docencia/tutorias.html

ENTREGA DEL PROYECTO


La entrega se compone de:

Proyecto de Programaci on en Ensamblador (19/03/2013)

21

1. Una memoria, en formato DIN-A4, en cuya portada deber a gurar claramente el nombre y apellidos de los autores del proyecto, identicador del grupo de alumnos (el mismo que emplean para realizar las entregas y consultas) y el nombre de la asignatura. Dicha memoria se podr a entregar en papel o en formato electr onico PDF. En caso de optar por la entrega en papel, se depositar a en el buz on del departamento, situado en el bloque 4, planta 1. Esta memoria deber a contener los siguientes puntos: Hist orico del desarrollo de las rutinas, con fechas, avances y dicultades encontradas, especicando el trabajo que realiza cada miembro del grupo o si dicho trabajo es com un. Se detallar a en este apartado el n umero total de horas invertidas en el proyecto por cada miembro del grupo, as como la relaci on de visitas realizadas a los profesores del proyecto. Descripci on resumida del juego de ensayo (conjunto de casos de prueba) que el grupo haya dise nado y utilizado para probar el correcto funcionamiento del proyecto. Observaciones nales y comentarios personales de este proyecto, entre los que se debe incluir una descripci on de las principales dicultades surgidas para su realizaci on. NOTA: Tal como se ha indicado, esta memoria no incluye copia del listado en ensamblador de las subrutinas, por lo que s ser a necesario que dichas rutinas se encuentren adecuadamente comentadas en el propio chero que se entrega para las correcciones (el descrito en el siguiente punto, ltro.ens ), ya que dicho chero ser a consultado en el proceso de evaluaci on del proyecto. 2. La entrega de los cheros que contienen el proyecto. Ser a obligatorio entregar los siguientes cheros: autores: Es un chero ASCII que deber a contener los apellidos, nombre, n umero de matr cula, DNI y direcci on de correo electr onico de los autores del proyecto. El proyecto se realizar a individualmente o en grupos de dos alumnos. Cada l nea de este chero contendr a los datos de uno de los autores de acuerdo al siguiente formato: No Matr cula; DNI ; apellido apellido, nombre; correo electr onico El n umero de matr cula que se debe indicar en el chero es el que asigna la secretar a de la Facultad (por ejemplo 990999) y no el que se utiliza como identicador para abrir cuentas en el Centro de C alculo (por ejemplo a990999). La direcci on de correo electr onico deber a ser una direcci on v alida que el alumno consulte frecuentemente. Se recomienda utilizar la direcci on ocial asignada al alumno por la UPM o por la FI, aunque tambi en se admiten direcciones correspondientes a otros proveedores de correo electr onico. ltro.ens: Contendr a las subrutinas que componen el proyecto junto con un programa principal que se haya utilizado para su depuraci on.

22

Proyecto de Programaci on en Ensamblador (19/03/2013) memoria.pdf: Ser a un chero en formato PDF que contenga la memoria del proyecto. Si opta por entregar esta memoria en papel, deber a realizar la entrega de un chero vac o con el nombre especicado (memoria.pdf). Del mismo modo, en las entregas preliminares, antes de realizar la entrega denitiva, podr a entregar un chero memoria.pdf vac o. IMPORTANTE: Antes de efectuar cada entrega del proyecto se recomienda realizar el ensamblado del chero filtro.ens asegurando que no genera ning un error, as como ejecutar el c odigo del proyecto con varios casos de prueba. De este modo se reducir a la probabilidad de malgastar alguna de las correcciones disponibles.

FORMA DE ENTREGA DE LOS FICHEROS


Sistema de entrega en batman
Se utilizar a un programa de entrega denominado ent 88k. Para ejecutar este programa se deber a teclear, desde el int erprete de comandos de batman, la palabra ent 88k. Dicho programa, permite entregar los cheros indicados anteriormente, as como consultar los resultados de la ejecuci on de un conjunto de pruebas utilizadas por el corrector. Al entrar en el programa, este pide la identicaci on del usuario. Tomaremos como identicaci on de usuario el n umero de matr cula de uno de los integrantes del grupo. El programa mostrar a el mensaje: Introduzca su identicador (Num. matricula): 990999 El usuario deber a introducir el n umero de matr cula de uno de los integrantes del grupo (p.e. 990999). Si es la primera vez que el usuario entra en el sistema de entrega, el programa le invitar a a que introduzca una palabra clave (password) mostrando el siguiente mensaje: Se va a establecer password. Password: El usuario deber a introducir una palabra clave (no se mostrar a en pantalla). Para conrmar que no se ha producido ning un error al introducir el password se vuelve a pedir: Repita el password tecleado anteriormente: Si se ha producido alg un error se reintentar a establecer el password de nuevo. Despu es de mostrar este mensaje el programa termina. Si el comando se ha ejecutado con exito se mostrar an los datos que ha registrado el sistema de cada uno de los integrantes del grupo. Seguidamente aparecer a el siguiente mensaje: SE HAN DADO DE ALTA LOS SIGUIENTES ALUMNOS: 123433342 990999 PEREZ PEREZ JESUS Se ha asignado password al usuario 990999.

Proyecto de Programaci on en Ensamblador (19/03/2013) - NO LO OLVIDE - NO LO APUNTE - NO LO DIVULGUE

23

suponiendo que el grupo est e compuesto por un u nico alumno (Jes us P erez P erez con DNI n.o 123433342 y n umero de matr cula 990999) y la informaci on que aparece en el chero autores es: 990999 ; 123433342 ; PEREZ PEREZ JESUS; g990999@zipi..upm.es Si dicho alumno no aparece en las listas disponibles por el departamento o no ha introducido correctamente alguno de los datos, se mostrar a un mensaje de error. A continuaci on se mostrar a el siguiente men u: OPCIONES: 1. Mandar Ficheros. 2. Consultar Resultados. 3. Cancelar Entregas 4. Bloquear la Entrega 5. Ayuda !!!! 6. Noticias. q Abandonar >>>> A continuaci on se explica cada una de las opciones del men u.

MANDAR FICHEROS
Esta opci on permite enviar los cheros de un pr actica o proyecto, que deber an estar en el directorio de trabajo del usuario. Si el comando se ejecuta correctamente se mostrar an los siguientes mensajes: MANDANDO EL FICHERO ltro.ens ...OK. Si alguno de los cheros no se encuentra, el programa lo comunicar a al usuario. Por ejemplo: MANDANDO EL FICHERO ltro.ens ... No se puede abrir el chero ltro.ens Entrega cancelada. El servidor de entregas intenta asegurar que cada uno de los cheros tiene el formato correcto. En nuestro caso esto se traduce en que el chero se va a poder ensamblar correctamente cuando se realice la correcci on. Si el comando de ensamblado no ha nalizado con exito se mostrar a un mensaje: EL FICHERO ltro.ens NO TIENE EL FORMATO CORRECTO ENTREGA NO REALIZADA

24

Proyecto de Programaci on en Ensamblador (19/03/2013)

En este caso el alumno deber a comprobar que se puede ensamblar correctamente el chero y que contiene todas y cada una de las etiquetas que es obligatorio que aparezcan en dicho chero. En el caso de que se genere un error en la entrega de los cheros, el programa de entrega termina su ejecuci on y se muestra el prompt del sistema operativo. Si se desea realizar una nueva entrega se volver a a teclear el comando.

CANCELAR ENTREGAS
Esta opci on permite cancelar todas las entregas realizadas desde la u ltima correcci on. El identicador del grupo de alumnos ser a eliminado de la lista de proyectos pendientes de corregir. Si se han realizado varias entregas se cancelar an todas ellas.

CONSULTAR RESULTADOS
Esta opci on permite consultar los resultados de la correcci on de la entrega de un proyecto. El programa pide el nombre del chero en el que se copiar an los resultados de la ejecuci on del conjunto de pruebas que componen el corrector. Se mostrar a el siguiente mensaje: La salida ser a redirigida a un chero. Nombre del chero (ENTER para salida por pantalla) ?? result.txt En este caso se grabar an los resultados de las pruebas en el chero result.txt. Si como respuesta al mensaje se teclea ENTER, los resultados ser an mostrados por pantalla. El nombre del chero que se proporciona al programa (result.txt) no debe existir en el disco. Esta opci on se incluye para permitir la correcci on autom atica de los proyectos. El alumno/grupo no debe utilizar este programa para depurar su c odigo. Debe ser el propio alumno/grupo quien construya su conjunto de pruebas que le permita comprobar que el proyecto funciona correctamente.

BLOQUEO DE LA ENTREGA
Si el usuario se compromete a no entregar m as veces el c odigo del proyecto en la convocatoria en curso, puede bloquear la entrega para mayor seguridad. Si se ejecuta esta opci on no se podr a volver a realizar una nueva entrega de los cheros asociados al proyecto. Si el comando se ejecuta satisfactoriamente se mostrar a el mensaje: ENTREGA BLOQUEADA.

AYUDA
Esta opci on mostrar a en pantalla una breve descripci on de cada una de las opciones del programa de entrega. No signica que se vaya a proporcionar ayuda para la realizaci on del proyecto.

Proyecto de Programaci on en Ensamblador (19/03/2013)

25

NOTICIAS
Esta opci on es puramente informativa. Permite noticar al alumno modicaciones en la especicaci on del proyecto o, en general, noticias de inter es de la asignatura asociada al mismo. El programa pide el nombre de chero en el que se copiar an las noticias. La salida ser a redirigida a un chero. Nombre del chero (ENTER para salida por pantalla) ?? noticias.txt

En este caso se grabar a la informaci on relativa a la asignatura en el chero noticias.txt. Si como respuesta al mensaje se teclea ENTER, la informaci on ser a mostrada por pantalla.

ABANDONAR
Termina la ejecuci on del programa de entrega. Si se realiza con exito se mostrar a el mensaje: Cerrando la conexion y a continuaci on aparecer a el prompt del sistema operativo.

NOTA: no se corregir a ninguna entrega que no se atenga a estas normas y se considerar a por lo tanto como no presentada.

Sistema de entrega en la red de PCs del Centro de C alculo


Aquellos alumnos que desarrollen el proyecto sin utilizar los medios del Centro de C alculo (utilizaci on de PCs particulares) pueden realizar la entrega de cheros desde la red de PCs de la Facultad. Para ello se deben situar en la unidad de trabajo donde tengan los cheros del proyecto y teclear lo siguiente (suponiendo que los cheros se encuentran en una carpeta denominada PROYECTO dentro de un pen-drive o l apiz de datos que se ubica en la unidad H: de Windows): G:\>h: H:\>cd proyecto H:\PROYECTO>g:\datsi\entregas\ent_88k El di alogo que este programa ofrece al usuario es el mismo que el que se ejecuta en batman (v ease la secci on anterior). Los alumnos que utilicen este mecanismo de entrega del proyecto deber an tomar las debidas precauciones para evitar la difusi on o copia de su c odigo. Se recomienda trabajar siempre sobre un dispositivo extra ble (pendrive ) y nunca sobre disco duro! Si no se tienen en cuenta estas precauciones, los cheros podr an ser le dos por otros usuarios y por lo tanto COPIADOS, con las consecuencias que se derivan de las normas de la asignatura.

26

Proyecto de Programaci on en Ensamblador (19/03/2013)

Sistema de entrega a trav es del servidor web del DATSI


Las mismas operaciones que permite realizar la aplicaci on ENT_88k descrita en el apartado anterior pueden ser efectuadas mediante un navegador Web, para lo que ser a necesario conectarse a la URL: http://www.datsi..upm.es/Practicas.

Ap endice A

Instalaci on del paquete de pr acticas y proyectos 88110 en un computador personal


Si dispone de un computador personal con Windows, Linux o Solaris, puede descargar y utilizar una versi on del emulador y del ensamblador que se pueden ejecutar bajo estos sistemas operativos. Adem as, si dispone de conexi on a Internet, podr a realizar la entrega de la pr actica o proyecto desde dicho computador.

A.0.1.

Obtenci on del entorno de pr acticas y/o proyectos

La distribuci on del entorno para la realizaci on de pr acticas y proyectos se puede obtener a trav es del URL http://www.datsi.fi.upm.es/docencia/Estructura_09/Proyecto_Ensamblador. En esta p agina hay distintas versiones en funci on del sistema operativo que se tenga instalado, ya sea Windows, Solaris o Linux.

A.1.

Instalaci on del paquete bajo Linux o Solaris

Los pasos que se deben seguir para realizar la instalaci on del entorno de pr acticas y proyectos son iguales para los sistemas operativos Linux o Solaris, por lo que se describir aa continuaci on la instalaci on bajo Linux: Entre en el computador Linux como administrador (root). Copie el chero 88k Linux Static.tar.gz que ha obtenido en un directorio del disco duro del sistema Linux (p.e. /tmp). Sit uese en el directorio donde ha copiado el chero 88k Linux Static.tar.gz y descompr malo: cd /tmp tar zxvf 88k_Linux_Static.tar.gz

28

Ap endice A. Instalaci on del paquete de pr acticas/proyectos 88110 Este comando habr a generado el directorio EM88110, que contendr a todos los cheros de la distribuci on. Cambie el directorio de trabajo, situ andose en el directorio que acaba de crear: cd EM88110 Si teclea el comando ls -l obtendr a un listado con todos los cheros que componen la distribuci on. Entre ellos se encuentra el chero INSTALL. Para instalar el paquete ejecute: sh INSTALL El comando de instalaci on le preguntar a por dos directorios donde ubicar la instalaci on: Introduzca el directorio donde se va a instalar el emulador (por defecto /usr/local/88k) En este directorio se copiar an los cheros que componen la herramienta. Debe introducir un camino completo dentro del arbol de directorios, o simplemente pulsar la tecla enter para aceptar el directorio por defecto. A continuaci on aparecer a el siguiente mensaje: El directorio donde se van a instalar los ejecutables debe formar parte de la variable PATH. Introduzca el directorio donde se van a instalar los ejecutables (por defecto /usr/bin) En este caso debe especicar el directorio donde se van a buscar los ejecutables de la instalaci on. Este directorio debe estar referenciado en la variable de entorno PATH. Al igual que en el caso anterior si pulsa enter se acepta la opci on por defecto. A continuaci on aparecer a el siguiente mensaje: El directorio de instalacion es /usr/local/88k El directorio de los ejecutables es /usr/bin Si los parametros son correctos pulse enter Si pulsa enter se contin ua con la instalaci on y si los dos directorios que ha especicado son correctos el programa se habr a instalado correctamente. Si, por el contrario, desea cambiar alguno de los par ametros, pulse CTRL C y se cancelar a la instalaci on. Si la instalaci on se ha efectuado correctamente, salga de la cuenta root, vuelva a entrar como un usuario no privilegiado y ejecute los comandos de la pr actica o el proyecto. Deben funcionar correctamente.

A.2. Instalaci on del paquete bajo Windows

29

A.2.

Instalaci on del paquete bajo Windows

Se describe a continuaci on el procedimiento que se debe seguir para realizar la instalaci on del entorno de pr acticas y proyectos bajo Windows. La versi on del sistema operativo Windows es indiferente ya que en realidad se trata de una aplicaci on MS-DOS que se ejecuta en una ventana. Copie el chero 88k Windows.zip en una carpeta cualquiera del sistema Windows, por ejemplo en el Escritorio. Descomprima la carpeta 88k Windows.zip sobre una ubicaci on que le resulte c omoda para trabajar desde una ventana MS-DOS, por ejemplo en: C : \F acultad\Ensamblador Abra una ventana MS-DOS. Lo puede hacer, por ejemplo, pulsando Inicio seguido de Ejecutar y especicar el comando cmd. Al pulsar Intro se abrir a una ventana. Sit uese en la carpeta en que ha descomprimido 88k Windows.zip, haciendo: cd C : \F acultad\Ensamblador\88k W indows si ha utilizado la ubicaci on propuesta anteriormente. Trabaje directamente en esta ventana, ejecutando los programas 88110e y mc88110 tal como se ha descrito previamente. Tenga en cuenta que si bien el ensamblado y la ejecuci on se deben realizar desde la ventana MS-DOS, la edici on del c odigo puede efectuarla con cualquier editor que no introduzca caracteres de control en el chero fuente. Por ejemplo, puede utilizar Wordpad o mejor a un el editor de libre distribuci on Notepad++, pero no debe emplear procesadores de texto como OpenOce Writer o Microsoft Word.