Sie sind auf Seite 1von 43

Pr actica de Programaci on en Ensamblador (88110) Laboratorio de Estructura de Computadores

Departamento de Arquitectura y Tecnolog a de Sistemas Inform aticos Curso 2013-2014

Programaci on en Ensamblador (05-11-2013)

La pr actica consiste en la programaci on en ensamblador del Motorola 88110 de un conjunto de rutinas que permitan realizar determinadas operaciones en una peque na tabla que simula el comportamiento de la FAT (tabla de asignaci on de cheros) del sistema operativo MS-DOS.

AVISO
El enunciado de esta pr actica coincide con el correspondiente cursos anteriores, por lo que aquellos alumnos que tengan que repetir o corregir la pr actica podr an utilizar los programas ya realizados por ellos mismos durante dichos cursos acad emicos. La pr actica se realizar a de forma individual.

Sistema operativo MS-DOS


Este sistema emplea disquetes y unidades de disco, pero en todos los casos los sectores son de 512 bytes. Las unidades de disco pueden dividirse en particiones, considerando cada partici on como una unidad de disco independiente. La unidad de informaci on en que se almacenan los cheros es la agrupaci on (cluster ), que es un conjunto de n sectores contiguos (n = 2k , k = 0, 1, 2, ..). Un disco (una partici on) se divide en cuatro zonas como puede verse en la gura 1. Estas zonas son:
Boot 2 copias de la FAT Directorio raz Datos y directorios

Figura 1. Estructuraci on de un disco en MS-DOS.

1. Boot o sector de arranque. Es el primero del disco y contiene un peque no programa que busca los cheros ocultos IO.SYS y MSDOS.SYS en el directorio ra z, si los encuentra carga el sistema operativo y en caso contrario muestra un mensaje de error. Adem as, contiene informaci on como el nombre y versi on del sistema operativo, caracter sticas del disco e informaci on sobre la FAT y el directorio ra z. 2. Copias de la FAT. La FAT es la tabla de asignaci on de cheros (File Allocate Table ) que se describir a posteriormente. En MS-DOS la FAT se encuentra duplicada para hacer el sistema m as tolerante a fallos de funcionamiento. 3. Directorio ra z. Es la zona del disco en la que se almacenan los directorios y determinados cheros. Tiene un tama no prejado, por ejemplo, un disco de 244 Mbytes tiene un directorio ra z de 32 sectores, que suponen 512 entradas o alojamientos para directorios o cheros. Cada entrada o alojamiento de un directorio, subdirectorio o chero tiene una extensi on de 32 bytes y consta de los campos que pueden verse en la gura 2 y que son:

2
0 Nombre 8 7 8 10 11 12 Reservado 10

Programaci on en Ensamblador (05-11-2013)


21 22 23 24 25 Hora 2 26 27 28 31

Extensin At 3 1

Fecha 1 Agrup. 2 2

Tamao 4

Figura 2. Estructura de cada alojamiento del directorio ra z. Nombre. Tiene una extensi on de 8 bytes. Si el primer byte de este campo es H00 quiere decir que ese alojamiento no ha sido utilizado, y si es HE5 indica que el alojamiento fue utilizado y posteriormente borrado. Para a nadir un chero o directorio nuevo se busca el primer alojamiento que tenga su primer byte a H00 o a HE5. Extensi on. Ocupa 3 bytes, con lo cual los cheros y directorios quedan denominados con un nombre de ocho caracteres y una extensi on de tres. Atributos. Es un byte que indica ciertas caracter sticas de un alojamiento: chero de s olo lectura (R), chero oculto (H), chero de sistema (S), chero a archivar (A), subdirectorio (D). Hora y fecha. Se representa la hora, minutos y segundos de la u ltima actualizaci on del chero. An alogamente se representa el a no, mes y d a. Primera agrupaci on. Este campo sirve para determinar el primer sector del disco en que se encuentra el chero, al describir la FAT se analizar a c omo se realiza. Tama no. Este campo indica el tama no del chero en bytes. 4. Datos y directorios. Esta zona corresponde al resto del disco y es donde se almacenan los cheros y los subdirectorios, de forma que su tama no y ubicaci on est an regulados por la FAT.

Tabla de asignaci on de cheros (FAT)


En el sistema operativo MS-DOS existen tablas de asignaci on de 12, 16 y 32 bits. Nos referiremos exclusivamente a la de 16 bits ya que el tratamiento ser a el mismo con otro n umero de bits. En este caso, cada elemento de la FAT tiene 16 bits y van numerados desde 0 hasta 65535 = 216 1 =HFFFF, indicando la agrupaci on que ocupa en el disco. Los dos primeros elementos no especican cheros o subdirectorios, de forma que: El primero especica el formato del disco, indicando el tipo de disco que tenemos. El segundo est a reservado para otras funciones del sistema operativo, siendo su valor est andar HFFFF. El resto de elementos identican una agrupaci on (desde la 2 hasta la 65535) de forma que su contenido tiene el siguiente signicado: H0000 indica que se trata de una agrupaci on disponible Desde HFFF8 hasta HFFFF indican que es la u ltima agrupaci on de un chero o de un subdirectorio

Programaci on en Ensamblador (05-11-2013) HFFF7 indica que es una agrupaci on con sectores da nados

Cualquier otro valor, HXXXX, indica que es una agrupaci on usada en un chero, siendo el valor almacenado HXXXX la agrupaci on donde contin ua el chero

Simulador de la FAT
En esta pr actica, manteniendo todas las caracter sticas conceptuales vistas en el sistema MS-DOS, se considerar a una FAT de 8 bits, lo que supone una FAT con un n umero m aximo de 256 entradas. Se considerar a que las cuatro primeras entradas est an reservadas y que el contenido de las restantes tiene el siguiente signicado: H00 indica una agrupaci on disponible HFF indica que es la u ltima agrupaci on de un chero o de un subdirectorio HXX indica que es una agrupaci on usada en un chero siendo HXX la agrupaci on donde contin ua el chero La unidad de disco considerada tiene sectores de 64 bytes y las agrupaciones son de un sector. El directorio ra z consta de dos sectores y cada alojamiento para un directorio, subdirectorio o chero consta de: 4 bytes para el nombre. El nombre puede tener como m aximo cuatro caracteres, si tuviese menos el nombre termina cuando se encuentre el car acter NUL (H00). 1 byte para el atributo. Solamente puede haber dos atributos, H41 (A) para indicar que se trata de un archivo1 y H44 (D) para indicar que se trata de un directorio. 1 byte para la primera agrupaci on. 2 bytes para el tama no, expresado en bytes. por lo tanto, cada sector tiene 8 alojamientos y el directorio ra z 16. La FAT que se considera en la simulaci on que se hace de la unidad de disco est a contenida en un sector, por lo tanto, de las 256 entradas posibles solo se contemplan 64, desde la 0 (H00) hasta la 63 (H3F). Como las cuatro primeras entradas quedan reservadas, la zona de datos del disco est a constituida por 60 sectores, quedando el disco que se simula como puede verse en la gura 3.
0 Formato 1 sector 64 bytes 1 2 3 FAT 1 sector 64 bytes 4 Datos y directorios 60 sectores 3840 bytes 63

Directorio raz 2 sectores 128 bytes

Figura 3. Estructura de la unidad de disco simulada.


Denominaremos Archivo a un chero que no es un subdirectorio, Directorio al que s lo es y utilizaremos Fichero como nombre gen erico para denominar a ambos.
1

Programaci on en Ensamblador (05-11-2013)

En esta unidad de disco que se simula, el valor de cada entrada de la FAT coincide con el valor del sector absoluto donde se almacena el chero. Por u ltimo, en la implementaci on de la FAT simulada y las rutinas que han de construirse para gestionarla, se utilizar an dos tipos de nombre de chero: Nombre relativo a un subdirectorio: Contendr a un m aximo de cuatro caracteres alfanum ericos comenzando por un car acter alfab etico. Ejemplo: PROB. Si el nombre tuviera menos de cuatro caracteres, tendr a que nalizar con el car acter terminador H00. Ejemplo: Z\0. Ruta o nombre completo del chero: Incluir a la relaci on de subdirectorios que permiten llegar a dicho chero desde el directorio ra z, separados por un car acter especial, el separador / (H2F). Ejemplo: /DIR2/SD22/SLAB/PROB\0, donde el car acter \0 (H00) se utiliza como terminador de la cadena de caracteres.

Ejemplo
A continuaci on se describe el contenido de un disco con una serie de cheros y directorios que se utilizar a como ejemplo. El contenido del disco en un instante dado es el que se muestra en la gura 4. Las estructuras de datos que lo describen son las que se expresan a continuaci on. El contenido de la FAT es: Sector Contenido 0 0xFF 1 0xFF 2 0xFF 3 0xFF 4 0xFF 5 0xFF 6 0x07 7 0xFF 8 0xFF 9 0xFF 10 0x12 11 0x00 12 0x00 13 0xFF 14 0x14 15 0xFF Sector Contenido 16 0xFF 17 0xFF 18 0xFF 19 0x00 20 0x1D 21 0x00 22 0xFF 23 0xFF 24 0xFF 25 0xFF 26 0x00 27 0x00 28 0x00 29 0x25 30 0x00 31 0x2C Sector Contenido 32 0xFF 33 0x00 34 0x00 35 0x00 36 0x00 37 0x2A 38 0xFF 39 0xFF 40 0x30 41 0x00 42 0xFF 43 0x00 44 0x2D 45 0x31 46 0x00 47 0x00 Sector Contenido 48 0xFF 49 0xFF 50 0x33 51 0xFF 52 0xFF 53 0xFF 54 0x38 55 0xFF 56 0xFF 57 0x00 58 0x00 59 0x00 60 0x00 61 0x00 62 0x00 63 0x00

Las entradas del directorio ra z son: Entrada 0 1 2 3 Contenido 44495231 44040000 44495232 44050000 494F0000 41060064 444F5300 41080032 (DIR1 (DIR2 ( IO ( DOS D D A A 04 05 06 08 0000) 0000) 0100) 0050)

Programaci on en Ensamblador (05-11-2013)


RAIZ DIR1 DIR2 IO DOS TMP SD21 SD22 SD23 COOR SLAB SEST SARQ STFC SAPI SDMC SDEC TRIB SSTR SAMP PACO Z ACTA BDAT PROB ACTA

Figura 4. Directorio en arbol del ejemplo considerado. 4 E5495233 44090000 (entrada borrada) 5 544D5000 44200000 ( TMP D 32 0000) 6 00000000 00000000 (entrada libre) ................................ El sector 5 del disco corresponde al directorio DIR2, que contiene: Entrada Contenido 0 53443231 44090000 (SD21 D 09 0000) 1 53443232 440A0000 (SD22 D 10 0000) 2 53443233 440D0000 (SD23 D 13 0000) 3 00000000 00000000 (entrada libre) ................................ El sector 10 del disco corresponde al subdirectorio SD22, que contiene: Entrada 0 1 Contenido 434F4F52 410E012C (COOR A 14 0300) 534C4142 440F0000 (SLAB D 15 0000)

6 2 3 4 5 6 7 53455354 53415251 53544643 53415049 53444D43 53444543 44100000 44110000 44160000 44170000 44180000 44190000 (SEST (SARQ (STFC (SAPI (SDMC (SDEC D D D D D D 16 17 22 23 24 25

Programaci on en Ensamblador (05-11-2013) 0000) 0000) 0000) 0000) 0000) 0000)

El subdirectorio SD22 contin ua en el sector 18, tal como indica la entrada 10 de la FAT. Este sector contiene: Entrada Contenido 0 54524942 411F00FA (TRIB A 31 0250) 1 E5495233 44090000 (entrada borrada) 2 53535452 44260000 (SSTR D 38 0000) 3 53414D50 44270000 (SAMP D 39 0000) 4 00000000 00000000 (entrada libre) ................................ El subdirectorio SLAB ocupa el sector 15 del disco y contiene: Entrada Contenido 0 42444154 41280078 (BDAT A 40 0120) 1 50524F42 41320055 (PROB A 50 0085) 2 41435441 44350000 (ACTA D 53 0000) 3 00000000 00000000 (entrada libre) ................................ El subdirectorio SSTR ocupa el sector 38 del disco y contiene: Entrada Contenido 0 5041434F 41340032 (PACO A 52 0050) 1 E5495233 44290000 (entrada borrada) 2 5A000000 4136006A (Z A 54 0106) 3 41435441 44370000 (ACTA D 55 0000) ................................

Descripci on de los programas de la pr actica


La pr actica consistir a en implementar ocho subrutinas, que se relacionan tal y como se indica en la gura 5. Adem as deber a implementarse un programa principal que realizar a las pruebas de funcionamiento necesarias. Este programa ser a autom aticamente sustituido por el que determine el Departamento durante las pruebas de evaluaci on autom atica de la pr actica. Se ha preferido partir el programa en un n umero alto de subrutinas para facilitar su depuraci on, ya que as se trabajar a con fragmentos de c odigo peque nos, que por tanto ser an manejables. Adem as, al tener el programa segmentado en varias partes, el corrector autom atico proporcionar a informaci on m as precisa sobre qu e partes est an bien o est an mal. Aunque se haya realizado esta divisi on en fragmentos, si los miembros del grupo consideran conveniente desarrollar otras rutinas que sirvan como base para las que espec camente se tienen que construir, no s olo pueden hacerlo, sino que se trata de una pr actica recomendable. Por ejemplo, se podr a implementar una subrutina para localizar la primera entrada libre de la FAT, u otra para comprobar si dos nombres son iguales.

Programaci on en Ensamblador (05-11-2013)

Figura 5. Jerarqu a de las rutinas de la pr actica.

Programa Principal
Se construir a un programa principal para probar cada una de las subrutinas de la pr actica. Dicho programa principal se encargar a de inicializar el puntero de pila r30, pasar los par ametros de la subrutina en la pila de usuario e invocar a dicha subrutina.

Busca un chero en el directorio ra z


DirEnt = BUSCA_RAIZ (DirDisco, NombreFich) Par ametros: DirDisco: Es la direcci on de memoria del 88110 en que comienza el disco simulado. A partir de esa direcci on se encuentran las sucesivas agrupaciones que componen el disco. NombreFich: Es una direcci on de memoria en la que comienza un nombre de chero v alido que no incluye la ruta de acceso al mismo, es decir, se compone de cuatro caracteres o bien de entre uno y tres caracteres seguidos por un terminador (H00) o por un separador (H2F). Los dos par ametros de esta funci on se pasan en la pila. Resultado: DirEnt: Es la direcci on de memoria en la que se encuentra la entrada del directorio ra z que corresponde al chero (archivo o directorio) especicado. En caso de no encontrarse dicho chero en ninguna de las dos agrupaciones del directorio ra z, la rutina devolver a un resultado igual a -1. El resultado se devuelve por valor en el registro r29. Descripci on:

Programaci on en Ensamblador (05-11-2013)

La rutina BUSCA_RAIZ tratar a de localizar el chero especicado como par ametro en alguna de las entradas del directorio ra z y devolver, en caso de nalizaci on con exito, la direcci on de memoria donde comienza dicha entrada en el directorio ra z. Si se produce alg un error, se devolver a el valor -1 como retorno. Puesto que el directorio ra z no es ampliable, u nicamente hay que comprobar si se encuentra el chero especicado en alguna de las agrupaciones predeterminadas (en S1 o en S2). La rutina BUSCA_RAIZ consta de los siguientes pasos: 1. Inicia a cero una variable local v_nombre de tama no igual a una palabra, en la que copiar a los caracteres del nombre especicado en el segundo par ametro. La copia se realizar a desde el primero de dichos caracteres hasta que se encuentre un separador (H2F) o un terminador (H00) (que no se incluyen) o hasta que se hayan copiado cuatro caracteres. 2. Localiza, a partir de la direcci on facilitada como primer par ametro, la direcci on de memoria que corresponde a la primera de las dos agrupaciones que componen el directorio ra z. 3. Recorre cada una de las entradas de las dos agrupaciones consecutivas localizadas en el paso anterior, comparando la componente de dicha entrada que contiene el nombre del chero con el nombre almacenado en v_nombre. 4. Si para alguna de las entradas de cualquiera de las dos agrupaciones se encuentra que el nombre completo de la entrada coincide con el nombre almacenado en v_nombre, se procede a copiar la direcci on de dicha entrada sobre el registro r29 y se da por nalizada la subrutina, devolviendo el control al programa llamante. Si tras recorrer todas las entradas de las dos agrupaciones no se localiza el nombre recogido como par ametro, se devuelve el control al llamante con el valor -1 en r29.

Programaci on en Ensamblador (05-11-2013)

Busca un chero en un directorio especicado


DirEnt = BUSCA_ED (DirDisco, NombreFich, DirDirec) Par ametros: DirDisco: Es la direcci on de memoria del 88110 en que comienza el disco simulado. A partir de esa direcci on se encuentran las sucesivas agrupaciones que componen el disco. NombreFich: Es una direcci on de memoria en la que comienza un nombre de chero v alido que no incluye la ruta de acceso al mismo, es decir, se compone de cuatro caracteres o bien de entre uno y tres caracteres seguidos por un terminador (H00) o por un separador (H2F). DirDirec: Es la direcci on de memoria en la que se encuentra la entrada de directorio que describe el directorio en que se desea realizar la b usqueda. En esta direcci on se encontrar a por tanto el nombre del directorio en que se realizar a la b usqueda, seguido de la etiqueta que lo identica como directorio (D), seguido del n umero de agrupaci on en que comienza, y nalizado por un campo en que se indica la longitud del chero (en el caso del directorio ser a igual a cero). Los tres par ametros de esta funci on se pasan en la pila. Resultado: DirEnt: Es la direcci on de memoria en la que se encuentra la entrada del directorio especicado como tercer par ametro que corresponde al chero (archivo o directorio) que se busca. En caso de no encontrarse dicho chero en ninguna de las agrupaciones de que consta el directorio especicado, la rutina devolver a un resultado igual a -1. El resultado se devuelve por valor en el registro r29. Descripci on: La rutina BUSCA_ED tratar a de localizar el archivo especicado como segundo par ametro en alguna de las entradas del directorio que se especica en el tercer par ametro. Si la localizaci on tiene exito, la rutina devolver a la direcci on de memoria donde comienza dicha entrada en el directorio correspondiente. Si se produce alg un error, se devolver a el valor -1 como retorno. Para determinar que no se ha encontrado el chero, ser a necesario haber comprobado que no se encuentra en ninguna de las agrupaciones de que consta el directorio especicado. La rutina BUSCA_ED consta de los siguientes pasos: 1. Inicia a cero una variable local v_nombre de tama no igual a una palabra, en la que copiar a los caracteres del nombre especicado en el segundo par ametro. La copia se realizar a desde el primero de dichos caracteres hasta que se encuentre un separador (H2F) o un terminador (H00) (que no se incluyen) o hasta que se hayan copiado cuatro caracteres.

10

Programaci on en Ensamblador (05-11-2013) 2. Lee, a partir de la direcci on facilitada como tercer par ametro, el n umero de agrupaci on en que comienza el directorio sobre el que se realizar a la b usqueda. 3. Localiza, a partir de la direcci on facilitada como primer par ametro y el n umero de agrupaci on obtenido en el paso anterior, la direcci on de memoria que corresponde a la primera agrupaci on de las que componen el directorio especicado. 4. Recorre cada una de las entradas de la agrupaci on localizada, comparando la componente de dicha entrada que contiene el nombre del chero con el nombre almacenado en la variable v_nombre. 5. Si para alguna de las entradas de la agrupaci on se encuentra que el nombre completo de la entrada coincide con el nombre almacenado en v_nombre, se procede a copiar la direcci on de dicha entrada sobre el registro r29 y se da por nalizada la subrutina, devolviendo el control al programa llamante. Si tras recorrer todas las entradas de la agrupaci on no se localiza el nombre recogido como par ametro, se contin ua en el siguiente paso 6. Lee la entrada de la FAT correspondiente a la agrupaci on cuyo recorrido acaba de nalizar. Si el contenido de dicha entrada corresponde a la marca de nal de chero (HFF), la b usqueda habr a terminado, por lo que se cargar a el registro r29 con el valor -1 y se devolver a el control al programa llamante. En caso contrario, continuar a por en el siguiente paso. 7. Localiza, a partir de la direcci on facilitada como primer par ametro y el n umero de agrupaci on obtenido de la FAT en el paso anterior, la direcci on de memoria que corresponde a la siguiente agrupaci on de las que componen el directorio especicado, continuando la subrutina por el paso 4.

Busca un chero a partir de su nombre completo (ruta)


DirEnt = BUSCA_FICH (DirDisco, NombreRuta) Par ametros: DirDisco: Es la direcci on de memoria del 88110 en que comienza el disco simulado. A partir de esa direcci on se encuentran las sucesivas agrupaciones que componen el disco. NombreRuta: Es una direcci on de memoria en la que est a almacenado un nombre completo de chero, es decir un nombre que incluye la ruta de acceso al mismo. Consecuentemente estar a formado por un separador (opcional) seguido de un conjunto de nombres de directorios seguidos de separadores, y nalizado por un nombre v alido de chero (archivo o directorio). Los dos par ametros de esta funci on se pasan en la pila. Resultado:

Programaci on en Ensamblador (05-11-2013)

11

DirEnt: Es la direcci on de memoria en la que se encuentra la entrada del directorio que corresponde al chero (archivo o directorio) que se busca. En caso de no encontrarse dicho chero o alguno de los directorios que componen la ruta, la rutina devolver a un resultado igual a -1. El resultado se devuelve por valor en el registro r29. Descripci on: La rutina BUSCA_FICH tratar a de localizar el chero cuya ruta completa est a especicada como segundo par ametro. Si la localizaci on tiene exito, la rutina devolver a la direcci on de memoria donde comienza la entrada que describe el chero especicado en el directorio en que se encuentra. Si se produce alg un error, se devolver a el valor -1 como retorno. Para determinar que no se ha encontrado el chero, ser a necesario haber comprobado que no se encuentra en ninguna de las agrupaciones de que consta el directorio especicado o bien que no existe alguno de los directorios que forman parte de la ruta completa del chero. La rutina BUSCA_FICH se implementar a de acuerdo a los siguientes pasos: 1. Carga un registro r_dir con la direcci on facilitada como segundo par ametro de esta funci on. Si dicho registro est a apuntando a un car acter separador (H2F), se incrementar a en una unidad. 2. Localiza, mediante una llamada a la subrutina BUSCA_RAIZ, la direcci on de la entrada correspondiente al chero de primer nivel de la ruta especicada. Para ello, llama a BUSCA_RAIZ, pas andole como par ametros la direcci on del disco y la direcci on anotada en r_dir en el paso anterior. Si BUSCA_RAIZ devuelve -1, se trata de un error, por lo que se devolver a el control al programa llamante. 3. Actualiza el registro r_dir de modo que quede apuntando al primer car acter tras el siguiente separador (que corresponder a al comienzo del nombre de chero del siguiente nivel al ya tratado). Si en lugar de un separador se localiza el terminador de la cadena de caracteres, o si tras el separador se encuentra el terminador, querr a decir que el nombre que se trata de buscar en este paso es el del u ltimo componente de la ruta. Si en este recorrido se detectan m as de cuatro caracteres antes de llegar al separador o al terminador, se tratar a de un error, por lo que se devolver a el control al llamante con -1 en r29. 4. Llama a la subrutina BUSCA_ED pas andole como par ametro la direcci on de comienzo del nombre obtenido en el paso anterior (almacenada en r_dir). Dicha subrutina devolver a la direcci on de la entrada correspondiente al archivo o al directorio del nivel en curso, o bien el valor -1. En este u ltimo caso, se tratar a de un error, por lo que se devolver a el control al programa llamante. En caso contrario: a ) Si el chero tratado es el u ltimo componente de la ruta especicada, se copiar a sobre r29 la direcci on de la entrada de directorio que describe ese chero y se devolver a el control al programa llamante. b ) Si el chero tratado no es el u ltimo componente de la ruta especicada y es de tipo D, se proceder a de nuevo con el paso 3. c ) Si el chero no es el u ltimo componente de la ruta especicada y es de tipo A, se devolver a el control al llamante, con -1 en r29.

12

Programaci on en Ensamblador (05-11-2013)

Crea un chero en el directorio ra z


DirEnt = CREA_RAIZ (DirDisco, NombreFich, TipoFich) Par ametros: DirDisco: Es la direcci on de memoria del 88110 en que comienza el disco simulado. A partir de esa direcci on se encuentran las sucesivas agrupaciones que componen el disco. NombreFich: Es una direcci on de memoria en la que comienza un nombre de chero v alido que no incluye la ruta de acceso al mismo, es decir, se compone de cuatro caracteres o bien de entre uno y tres caracteres seguidos por un terminador (H00) o por un separador (H2F). TipoFich: Es una palabra cuyo car acter menos signicativo indica el tipo del chero a crear: A para seleccionar un archivo, o D para seleccionar un directorio. Se pasa por valor. Los tres par ametros de esta funci on se pasan en la pila. Resultado: DirEnt: Es la direcci on de memoria en la que se encuentra la entrada de directorio que corresponde al chero (archivo o directorio) que se ha creado. En caso de haberse producido alg un error durante la creaci on del chero, la rutina devolver a un resultado igual a -1. El resultado se devuelve por valor en el registro r29. Descripci on: La rutina CREA_RAIZ tratar a de crear en el directorio ra z el chero especicado en los par ametros segundo y tercero. Si la creaci on se realiza correctamente, la rutina devolver a la direcci on de memoria donde comienza la entrada que describe el chero especicado en el directorio ra z. Si se produce alg un error (p.e. el chero ya existe, o no hay espacio disponible en el disco), se devolver a el valor -1 como retorno. Para determinar si hay entradas libres en el directorio ra z para crear el chero solicitado, puede ser necesario recorrer las dos agrupaciones que componen este directorio. La rutina CREA_RAIZ se implementar a de acuerdo a los siguientes pasos: 1. Llama a la subrutina BUSCA_RAIZ, pas andole como par ametros la direcci on del disco y el nombre del chero a buscar. Si BUSCA_RAIZ devuelve un valor distinto a -1 es porque el chero ya existe, por lo que no es posible crearlo: se almacena -1 en r29 y se devuelve el control al programa llamante. 2. Localiza la primera entrada libre del directorio ra z, que es la que se utilizar a para ubicar el chero que se ha de crear. Si no hay ninguna entrada libre, se almacena -1 en r29 y se devuelve el control al programa llamante.

Programaci on en Ensamblador (05-11-2013)

13

3. Recorre la FAT para localizar la primera agrupaci on libre del disco (la primera cuya entrada de la FAT tenga el valor H00). Si el disco est a lleno (no hay agrupaciones disponibles), se devuelve el control al programa llamante con un valor -1 en r29. En caso contrario, se escribir a el valor HFF en la entrada de la FAT cuyo valor era H00. Adem as, si el chero que se est a creando es un directorio, se inicializar a a H00 la agrupaci on que se le ha asignado. 4. Copia el nombre del chero especicado en el segundo par ametro sobre la entrada disponible que se localiz o en el paso 2. La copia se hace desde su primer car acter hasta detectar un separador o el terminador (que no se copian), o bien hasta que se hayan copiado 4 caracteres. Si el nombre ocupa menos de 4 bytes, se completa con bytes a cero. A continuaci on se copiar a el car acter que indica el tipo de chero a crear (el que se ha pasado en el tercer par ametro de esta subrutina). El byte siguiente lo ocupar a el n umero de agrupaci on asignada inicialmente al chero que se est a creando (el que se ha obtenido en el paso 3). Finalmente se escribir an dos bytes a cero, indicando que el chero se crea con una longitud inicial de 0 bytes. Con esta escritura queda completa la entrada del directorio correspondiente al chero reci en creado. 5. Devuelve el control al programa llamante, una vez haya copiado en r29 la direcci on obtenida en el paso 2.

Crea un chero en un directorio especicado


DirEnt = CREA_ED (DirDisco, NombreFich, DirDirec, TipoFich) Par ametros: DirDisco: Es la direcci on de memoria del 88110 en que comienza el disco simulado. A partir de esa direcci on se encuentran las sucesivas agrupaciones que componen el disco. NombreFich: Es una direcci on de memoria en la que comienza un nombre de chero v alido que no incluye la ruta de acceso al mismo, es decir, se compone de cuatro caracteres o bien de entre uno y tres caracteres seguidos por un terminador (H00) o por un separador (H2F). DirDirec: Es la direcci on de memoria en la que se encuentra la entrada de directorio que describe el directorio en que se desea crear el chero. A partir de esta direcci on se encontrar a por tanto el nombre del directorio en que se crear a el nuevo chero, seguido de la etiqueta que lo identica como directorio (D), del n umero de agrupaci on en que comienza, y del campo que indica la longitud, que tendr a el valor 0. TipoFich: Es una palabra cuyo car acter menos signicativo indica el tipo del chero a crear: A para seleccionar un archivo, o D para seleccionar un directorio. Se pasa por valor.

14

Programaci on en Ensamblador (05-11-2013) Los cuatro par ametros de esta funci on se pasan en la pila. Resultado: DirEnt: Es la direcci on de memoria en la que se encuentra la entrada de directorio que corresponde al chero (archivo o directorio) que se acaba de crear. En caso de producirse alg un error durante la creaci on del chero, la rutina devolver a un resultado igual a -1. El resultado se devuelve por valor en el registro r29. Descripci on:

La rutina CREA_ED tratar a de crear el chero especicado como segundo par ametro en el directorio que se especica en el tercer par ametro. Si la creaci on tiene exito, la rutina devolver a la direcci on de memoria donde comienza la entrada del chero reci en creado en el directorio correspondiente. Si se produce alg un error, por ejemplo que el chero que se quiere crear ya exista, se devolver a el valor -1 como retorno. La rutina CREA_ED consta de los siguientes pasos: 1. Llama a la subrutina BUSCA_ED, pas andole como par ametros la direcci on del disco, la direcci on de la entrada de directorio en que se ha de buscar y el nombre del chero a buscar. Si BUSCA_ED devuelve un valor distinto a -1 es porque el chero ya existe, por lo que no es posible crearlo: se almacena -1 en r29 y se devuelve el control al programa llamante. 2. Localiza la primera entrada libre del directorio especicado, que es la que se utilizar a para ubicar el chero que se ha de crear: a ) Si hay una entrada libre en las agrupaciones de las que consta el directorio, se emplear a esta agrupaci on para almacenar la descripci on del nuevo chero a crear. El proceso continuar a por el paso 3. b ) Si no hay ninguna entrada libre en las agrupaciones de las que consta el directorio, habr a que ampliarlo, para lo que: 1) Se recorre la FAT para localizar la primera agrupaci on libre del disco (n_ag_libre, la primera cuya entrada de la FAT tenga el valor H00). Si el disco est a lleno, se devuelve el control al programa llamante con un valor -1 en r29. 2) Se inicializar an H00 todos los bytes de la agrupaci on libre que se acaba de localizar (la numerada como n_ag_libre). 3) Se escribir a el n umero n_ag_libre en la entrada de la FAT que identicaba la u ltima agrupaci on ocupada por el directorio que se est a ampliando, que ten a el valor HFF. 4) Se escribir a el valor HFF en la entrada n_ag_libre de la FAT, cuyo valor anterior era H00. Se emplear a esta nueva agrupaci on para hacer referencia al chero que se est a creando. 3. Se recorre la FAT para localizar la primera agrupaci on libre del disco (la primera cuya entrada de la FAT tenga el valor H00). Si el disco est a lleno, se devuelve el control al programa llamante con un valor -1 en r29. En caso contrario, se escribir a el

Programaci on en Ensamblador (05-11-2013)

15

valor HFF en la entrada de la FAT cuyo valor era H00 y, s olo en el caso de que se est e creando un directorio, se inicializar a a H00 la agrupaci on seleccionada. 4. Copia el nombre del chero especicado en el segundo par ametro sobre la entrada disponible que se localiz o en el paso 2. La copia se hace desde su primer car acter hasta detectar un separador o el terminador (que no se copian), o bien hasta que se hayan copiado 4 caracteres. Si el nombre ocupa menos de 4 bytes, se completa con bytes a cero. A continuaci on se copiar a el car acter que indica el tipo de chero a crear (el que se ha pasado en el u ltimo par ametro a esta subrutina). El byte siguiente lo ocupar a el n umero de agrupaci on asignada inicialmente al chero que se est a creando (el que se ha obtenido en el paso 3). Finalmente se escribir an dos bytes a cero, indicando que el chero se crea con una longitud inicial de 0 bytes. Con esta escritura queda completa la entrada del directorio correspondiente al chero reci en creado. 5. Devuelve el control al programa llamante, una vez haya copiado en r29 la direcci on obtenida en el paso 2.

Crea un chero cuyo nombre completo se especica


DirEnt = CREA_FICH (DirDisco, NombreRuta, TipoFich) Par ametros: DirDisco: Es la direcci on de memoria del 88110 en que comienza el disco simulado. A partir de esa direcci on se encuentran las sucesivas agrupaciones que componen el disco. NombreRuta: Es una direcci on de memoria en la que est a almacenado un nombre completo de chero, es decir un nombre que incluye la ruta de acceso al mismo. Consecuentemente estar a formado por un separador (opcional) seguido de un conjunto de nombres de directorios seguidos de separadores, y nalizado por un nombre v alido de chero (archivo o directorio). TipoFich: Es una palabra cuyo car acter menos signicativo indica el tipo del chero a crear: A para seleccionar un archivo, o D para seleccionar un directorio. Se pasa por valor. Los tres par ametros de esta funci on se pasan en la pila. Resultado: DirEnt: Es la direcci on de memoria en la que se encuentra la entrada del directorio que corresponde al chero (archivo o directorio) que se solicita crear. En caso de producirse un error al crear dicho chero o alguno de los directorios que forman parte de la ruta, la rutina devolver a un resultado igual a -1. El resultado se devuelve por valor en el registro r29.

16 Descripci on:

Programaci on en Ensamblador (05-11-2013)

La rutina CREA_FICH tratar a de crear en el disco el chero cuya ruta completa est a especicada como segundo par ametro y cuyo tipo se especica en el tercer par ametro de la funci on. Si la creaci on tiene exito, la rutina devolver a la direcci on de memoria donde comienza la entrada del chero reci en creado en el directorio correspondiente. Si se produce alg un error, por ejemplo que el chero que se quiere crear ya exista y sea de distinto tipo al especicado en el tercer par ametro, se devolver a el valor -1 como retorno. La rutina CREA_FICH se implementar a mediante un algoritmo recursivo, har a uso del marco de pila y se desarrollar a seg un los pasos indicados a continuaci on: 1. Llama a la subrutina BUSCA_FICH, pas andole como par ametros la direcci on del disco y el nombre completo del chero a buscar (el que se quiere crear). Si BUSCA_FICH devuelve un valor igual a -1 es porque el chero no existe y la subrutina continuar a por el paso 2. En caso contrario el chero ya existe: a ) Si es del mismo tipo que el especicado en el tercer par ametro de CREA_FICH, se devuelve el control al programa llamante, sin modicar el valor de r29 recibido de BUSCA_FICH. b ) Si es de distinto tipo que el especicado en el tercer par ametro de CREA_FICH, se devuelve el control al programa llamante con el valor -1 en r29. 2. Se descompone su nombre completo (ruta) en dos partes divididas por el u ltimo car acter separador de dicha ruta. Por ejemplo, la ruta /Dir1/D2/D3/D4/Fich quedar a dividida en la ruta parcial (RP) /Dir1/D2/D3/D4 por un lado, y el nombre del chero (NF) Fich por otro. Esta divisi on se realizar a del siguiente modo: a ) Se guardar a en un registro, r_nomfich, la direcci on de memoria en que comienza el nombre del chero NF (ser a igual a la direcci on facilitada en el segundo par ametro m as la longitud de la cadena de caracteres que describe la ruta parcial). b ) Se contar a el n umero de caracteres que componen la ruta parcial (14 en el ejemplo) y se sumar a 1 para incluir el terminador H00 (en total, 15). c ) Se ajustar a el n umero obtenido en el paso anterior para que sea un m ultiplo de 4 (16 en el ejemplo). Sea TAM el valor obtenido. d ) Se reservar a espacio en la pila para almacenar una variable de tama no igual a TAM bytes. Se guardar a la direcci on de la pila obtenida al reservar este espacio en un registro: r_rp. e ) Se copiar an todos los caracteres de la ruta parcial sobre el espacio reservado en la pila. A continuaci on de los mismos se escribir a el car acter terminador H00. Si durante estas operaciones se observa que el nombre del chero (NF) contiene m as de cuatro caracteres, se tratar a de un error, por lo que se devolver a el control al programa llamante con el valor -1 en r29. 3. Si la RP obtenida en el paso anterior est a vac a o coincide con el car acter H2F, ser a porque se ha llegado a la ra z del disco. En este caso, el proceso continuar a por el paso 4. En caso contrario, se llamar a recursivamente a esta misma subrutina

Programaci on en Ensamblador (05-11-2013)

17

(CREA_FICH), pas andole como par ametros la direcci on del disco, la direcci on guardada en r_rp, obtenida en el paso 2d y una palabra cuyo byte menos signicativo tenga el valor D (directorio). 4. Se proceder a a crear el chero cuyo nombre (NF) est a almacenado en la direcci on que contiene el registro r_nomfich. Si la ruta parcial (RP) obtenida en el paso 2 est a vac a o coincide con el car acter H2F, se crear a el chero mediante una llamada a la subrutina CREA_RAIZ. En caso contrario se obtendr a mediante una llamada a la subrutina CREA_ED. 5. Devuelve el control al programa o subrutina llamante, una vez haya copiado en r29 la direcci on obtenida como resultado de la llamada a la subrutina indicada en el paso 4 (CREA_RAIZ o CREA_ED).

Borra un archivo en un directorio especicado


DirEnt = BORRA_ARCH (DirDisco, DirArch) Par ametros: DirDisco: Es la direcci on de memoria del 88110 en que comienza el disco simulado. A partir de esa direcci on se encuentran las sucesivas agrupaciones que componen el disco. DirArch: Es la direcci on de memoria en la que se encuentra la entrada donde est a alojado el archivo que se desea borrar. Los dos par ametros de esta funci on se pasan en la pila. Resultado: DirEnt: La rutina dejar a con HE5 el primer byte de la entrada donde est a alojado el archivo y dejar a libres (con H00) todas las entradas de la FAT que ocupaba el archivo. En el registro r29 se devolver a la direcci on que se pas o como par ametro DirArch y en caso de existir cualquier error se devolver a -1. Descripci on: La rutina deber a comprobar que el par ametro DirArch corresponde a un archivo (no a un directorio ni a una entrada libre ni borrada). En caso contrario devolver a error. Despu es dejar a con HE5 el primer byte de la entrada donde est a alojado el archivo. Finalmente, recorrer a todas las entradas de la FAT ocupadas por el archivo y las dejar a todas con el valor H00.

Borra un directorio y todo su contenido


DirEnt = BORRA_DIR (DirDisco, DirDirec) Par ametros:

18

Programaci on en Ensamblador (05-11-2013) DirDisco: Es la direcci on de memoria del 88110 en que comienza el disco simulado. A partir de esa direcci on se encuentran las sucesivas agrupaciones que componen el disco. DirDirec: Es la direcci on de memoria en la que se encuentra la entrada donde est a alojado el directorio que se desea borrar. Los dos par ametros de esta funci on se pasan en la pila. Resultado: DirEnt: La rutina dejar a con HE5 el primer byte de la entrada donde est a alojado el directorio que se desea borrar y dejar a libres (con H00) todas las entradas de la FAT que ocupaba el directorio. Esta misma operaci on la realizar a con todos los cheros (archivos y directorios) que se encuentren en cualquier ruta que pueda originarse con el directorio a borrar. En el registro r29 se devolver a la direcci on que se pas o como par ametro DirDirec y en caso de existir cualquier error se devolver a -1. Descripci on:

La rutina borra de forma recursiva todos los directorios dependientes del que se quiere borrar. La rutina BORRA_DIR se implementar a mediante un algoritmo recursivo y se desarrollar a seg un los pasos indicados a continuaci on: 1. Se comprueba si el par ametro DirDirec corresponde a un directorio no borrado (no a un archivo ni a un directorio borrado, ni a una entrada libre): en caso contrario se devuelve error. 2. Se inicializa un puntero (P Fich) con la primera entrada del primer sector que ocupa el directorio y se carga un registro (r fat) con el valor de la primera agrupaci on que ocupa el directorio en la FAT. 3. Se inicializa el contador de entradas de una agrupaci on (Cont=8). 4. Si el primer byte de P Fich es H00 ir a 8. 5. Si el primer byte de P Fich es HE5 ir a 8. 6. Si P Fich apunta a un archivo se pasan los par ametros y se llama a BORRA ARCH. Si r29=-1 se devuelve error y en caso contrario ir a 8. 7. Si P Fich apunta a un directorio se pasan los par ametros y se llama a BORRA DIR. Previo al paso de par ametros se salvan r fat y Cont para recuperarlos en el punto en que se dejaron. 8. Se incrementa P Fich a la siguiente entrada y se decrementa Cont. Si Cont no es cero ir a 4. Si Cont=0 se comprueba si se ha recorrido la u ltima agrupaci on del directorio: a ) Si es la u ltima, se carga HE5 en el primer byte de DirDirec, se ponen a H00 las entradas de la FAT que ocupa ese directorio y se retorna al llamante. b ) Si no es la u ltima agrupaci on, se accede a la siguiente agrupaci on del directorio y se va a 3.

Programaci on en Ensamblador (05-11-2013)

19

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 6). Supongamos que el registro r30 contiene el valor 10000 (decimal) y el registro r2 contiene el valor hexadecimal H04030201. La operaci on PUSH, que introduce este registro en la pila, se implementa con la siguiente secuencia de instrucciones: subu r30,r30,4 st r2,r30,0 quedando r30(SP) = 9996 y la pila como se indica en la gura 6.
9996: 0x01 0x02 0x03 0x04 10000: XXXX XXXX XXXX XXXX

Figura 6. Operaciones PUSH y POP. 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 = H04030201 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 esta pr actica, se propone realizar siempre a la entrada de una subrutina la salvaguarda del registro r1 en la pila mediante una operaci on PUSH.

20

Programaci on en Ensamblador (05-11-2013)

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 de la pr actica se utilizar a el registro r31. Por tanto, las primeras instrucciones de una subrutina en la que se desea activar un nuevo marco de pila ser an las siguientes: 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 esta pr actica 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.

Figura 7. Paso de par ametros. El paso de par ametros a todas las subrutinas de esta pr actica se realizar a utilizando la pila de la m aquina y la devoluci on del resultado se realizar a a trav es del registro r29. El par ametro que queda en la cima de la pila cuando se hace una llamada es el primero de la lista de argumentos. Considerando el ejemplo descrito como Caso9 en la p agina 27, correspondiente a la creaci on del archivo CONV en el directorio SD22 que realiza la rutina CREA_ED, en el momento de invocar dicha rutina el estado de la pila ser a el que se muestra en la gura 7. Dicho estado es el correspondiente al instante anterior a la llamada a la rutina, y coincide con el que se observar a justo al nalizar la rutina, ya que el resultado se devuelve a trav es de un registro, por lo que la pila no debe verse afectada. En el caso de la rutina CREA_FICH, al igual que ocurre con frecuencia a la hora de realizar otros programas en ensamblador, necesitar a hacer uso de variables locales, que se ubicar an en el marco de pila. En el caso concreto de CREA_FICH, necesita reservar espacio para una cadena de caracteres que identica a la ruta parcial de un chero (ve ase la descripci on de la rutina CREA_FICH, en la p agina 16). Suponiendo que la ruta parcial fuera /DIRN/S1/S2/S3, como corresponde al ejemplo descrito como Caso10 en la p agina 28, se requerir a reservar 4 palabras para la ruta parcial (un n umero entero de palabras, suciente para almacenar los 15 bytes de que consta la ruta inclu do el car acter terminador). As pues,

Programaci on en Ensamblador (05-11-2013)

21

la estructura de la pila para este caso, una vez reservadas las variables locales, ser a la mostrada en la gura 8. La reserva del espacio de la variable local utilizada para almacenar la ruta parcial de dicho ejemplo, suponiendo que r8 almacenase la longitud de dicha ruta parcial, y suponiendo que estuviese denida la macro PUSH, podr a realizarse del siguiente modo:
CREA_FICH: PUSH (r1) PUSH (r31) addu r31,r30,r0 . . . . . . . . . . . . . . . . clr addu sub r7, r8, 2<0> r7, r7, 4 r30, r30, r7 ; ; ; ; anular los 2 bits menos significativos asegurar el espacio necesario reservar el espacio en pila para poner la parte de DIR de la RUTA ; Se guarda la direcci on de retorno ; Se salva el FP del llamante ; r31 <- r30 Activaci on puntero de marco de pila

Figura 8. Gesti on de variables locales.

Asignaci on de etiquetas y de memoria


El punto de entrada de cada una de las subrutinas deber a ir asociado a las etiquetas BUSCA RAIZ, BUSCA ED, BUSCA FICH, CREA RAIZ, CREA ED, CREA FICH, BORRA ARCH y BORRA DIR (todas las letras en may usculas). Por ejemplo, la primera instrucci on perteneciente a la subrutina BUSCA_FICH deber a ir precedida de esta etiqueta: BUSCA_FICH: 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

22

Programaci on en Ensamblador (05-11-2013)

datos. La pila se situar a en las posiciones altas de memoria (se aconseja inicializar el puntero de pila a 0x00010000). 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. Una pr actica que no se atenga a esta norma se evaluar a como suspensa a un en el caso de que llege a pasar las pruebas establecidas por el Departamento.

Programaci on en Ensamblador (05-11-2013)

23

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

Busca un chero en el directorio ra z


Caso 1. Busca el chero DOS en el directorio ra z del ejemplo del enunciado (BUSCA RAIZ) Situaci on inicial: Registros: r30=0x0000ea60 (60000) Direcciones de memoria: 60000 00800000 24576 444F5300 Resultado: Registros: r29=0x00008058 (32856) r30=0x0000ea60 (60000) Nota: Ninguna entrada del disco debe modicarse.

00600000

24

Programaci on en Ensamblador (05-11-2013)

Caso 2. Busca el chero UNIX en el directorio ra z del ejemplo del enunciado (BUSCA RAIZ) Situaci on inicial: Registros: r30=0x0000ea60 (60000) Direcciones de memoria: 60000 00800000 24576 Resultado: Registros: r29=0xFFFFFFFF (-1) r30=0x0000ea60 (60000) Nota: Ninguna entrada del disco debe modicarse. 554E4958

00600000

Busca un chero en un directorio especicado


Caso 3. Busca el chero SAPI en el directorio SD22 del ejemplo del enunciado (BUSCA ED) Situaci on inicial: Registros: r30=0x0000ea60 (60000) Direcciones de memoria: 60000 00800000 24576 33096 Resultado: Registros: r29=0x000082A8 (33448) r30=0x0000ea60 (60000) Nota: Ninguna entrada del disco debe modicarse. Caso 4. Busca el chero TRIB en el directorio SD22 del ejemplo del enunciado (BUSCA ED) Situaci on inicial: Registros: r30=0x0000ea60 (60000) Direcciones de memoria: 60000 00800000 24576 33096 54524942 53443232 53415049 53443232

00600000

48810000

440A0000

00600000

48810000

440A0000

Programaci on en Ensamblador (05-11-2013) Resultado: Registros: r29=0x00008480 (33920) r30=0x0000ea60 (60000) Nota: Ninguna entrada del disco debe modicarse.

25

Caso 5.Busca el chero BDAT en el directorio SD22 del ejemplo del enunciado (BUSCA ED) Situaci on inicial: Registros: r30=0x0000ea60 (60000) Direcciones de memoria: 60000 00800000 24576 Resultado: Registros: r29=0xFFFFFFFF (-1) r30=0x0000ea60 (60000) Nota: Ninguna entrada del disco debe modicarse. 42444154

00600000

48810000

Busca un chero a partir de su nombre completo


Caso 6. Busca el chero /DIR2/SD22/SSTR/Z en el disco del ejemplo del enunciado (BUSCA FICH) Situaci on inicial: Registros: r30=0x0000ea60 (60000) Direcciones de memoria: 60000 00800000 24576 24592 Resultado: Registros: r29=0x00008990 (35216) r30=0x0000ea60 (60000) Nota: Ninguna entrada del disco debe modicarse. 2F444952 5A000000

00600000 322F5344 32322F53 5354522F

26

Programaci on en Ensamblador (05-11-2013)

Caso 7. Busca el chero /DIR2/SD22/SSTR/ACTA en el disco del ejemplo del enunciado (BUSCA FICH) Situaci on inicial: Registros: r30=0x0000ea60 (60000) Direcciones de memoria: 60000 00800000 24576 24592 Resultado: Registros: r29=0x00008998 (35224) r30=0x0000ea60 (60000) Nota: Ninguna entrada del disco debe modicarse. 2F444952 41435441

00600000 322F5344 00000000 32322F53 5354522F

Crea un chero en el directorio ra z


Caso 8. Crea el chero PRU de tipo archivo en el directorio ra z del ejemplo del enunciado (CREA RAIZ) Situaci on inicial: Registros: r30=0x0000ea60 (60000) Direcciones de memoria: 60000 00800000 24576 32832 32848 32864 32880 32960 32976 32992 33008 Resultado: Registros: r29=0x00008060 (32864) r30=0x0000ea60 (60000) 50525500 44495231 494F0000 E5495233 00000000 FFFFFFFF FFFFFF00 FF000000 FFFF33FF 44040000 41060064 44090000 00000000 FFFF07FF 1D00FFFF 002AFFFF FFFF38FF 44495232 444F5300 54445000 00000000 FFFF1200 FFFF0000 3000FF00 FF000000 44050000 41080032 44200000 00000000 00FF14FF 0025002C 2D310000 00000000

00600000

41000000

Programaci on en Ensamblador (05-11-2013)

27

Direcciones 32832 32848 32864 32880 32960 32976 32992 33008

de memoria: 44495231 494F0000 50525500 00000000 FFFFFFFF FFFFFF00 FF000000 FFFF33FF

44040000 41060064 410B0000 00000000 FFFF07FF 1D00FFFF 002AFFFF FFFF38FF

44495232 444F5300 54445000 00000000 FFFF12FF FFFF0000 3000FF00 FF000000

44050000 41080032 44200000 00000000 00FF14FF 0025002C 2D310000 00000000

Nota: Ninguna otra entrada del disco debe modicarse.

Crea un chero en un directorio especicado


Caso 9. Crea el chero CONV de tipo archivo en el directorio SD22 del ejemplo del enunciado (CREA ED) Situaci on inicial: Registros: r30=0x0000ea60 (60000) Direcciones de memoria: 60000 00800000 24576 33408 33424 33440 33456 33920 33936 33952 33968 32960 32976 32992 33008 Resultado: Registros: r29=0x00008488 (33928) r30=0x0000ea60 (60000) 434F4E56 434F4F52 53455354 53544643 53444D43 54524942 53535452 00000000 00000000 FFFFFFFF FFFFFF00 FF000000 FFFF33FF 410E012C 44100000 44160000 44180000 411F00FA 44260000 00000000 00000000 FFFF07FF 1D00FFFF 002AFFFF FFFF38FF 534C4142 53415351 53415049 53444543 E5495233 53414D50 00000000 00000000 FFFF1200 FFFF0000 3000FF00 FF000000 440F0000 44110000 44170000 44190000 44090000 44270000 00000000 00000000 00FF14FF 0025002C 2D310000 00000000

00600000

48810000

41000000

28 Direcciones 33920 33936 33952 33968 32960 32976 32992 33008 de memoria: 54524942 53535452 00000000 00000000 FFFFFFFF FFFFFF00 FF000000 FFFF33FF

Programaci on en Ensamblador (05-11-2013)

411F00FA 44260000 00000000 00000000 FFFF07FF 1D00FFFF 002AFFFF FFFF38FF

434F4E56 53414D50 00000000 00000000 FFFF12FF FFFF0000 3000FF00 FF000000

410B0000 44270000 00000000 00000000 00FF14FF 0025002C 2D310000 00000000

Nota: Ninguna otra entrada del disco debe modicarse.

Crea un chero cuyo nombre completo se especica


Caso 10. Crea el chero /DIRN/S1/S2/S3/D de tipo directorio en el disco del ejemplo del enunciado (CREA FICH) Situaci on inicial: Registros: r30=0x0000ea60 (60000) Direcciones de memoria: 60000 00800000 24576 24592 32832 32848 32864 32880 32960 32976 32992 33008 Resultado: Registros: r29=0x00008540 (34112) r30=0x0000ea60 (60000) Direcciones 32832 32848 32864 32880 de memoria: 44495231 494F0000 4449524E 00000000 2F444952 00000000 44495231 494F0000 E5495233 00000000 FFFFFFFF FFFFFF00 FF000000 FFFF33FF

00600000 4E2F5331

44000000 2F53322F 53332F44

44040000 41060064 44090000 00000000 FFFF07FF 1D00FFFF 002AFFFF FFFF38FF

44495232 444F5300 54445000 00000000 FFFF1200 FFFF0000 3000FF00 FF000000

44050000 41080032 44200000 00000000 00FF14FF 0025002C 2D310000 00000000

44040000 41060064 440B0000 00000000

44495232 444F5300 54445000 00000000

44050000 41080032 44200000 00000000

Programaci on en Ensamblador (05-11-2013)

29

33472 33536 33984 34112 32960 32976 32992 33008

53310000 53320000 53330000 44000000 FFFFFFFF FFFFFFFF FF000000 FFFF33FF

440C0000 44130000 44150000 441A0000 FFFF07FF 1DFFFFFF 002AFFFF FFFF38FF FFFF12FF FFFFFF00 3000FF00 FF000000 FFFF14FF 0025002C 2D310000 00000000

Nota: Ninguna otra entrada del disco debe modicarse. Caso 11. Crea el chero /DIR2/SD22/SSTR/INCI de tipo archivo en el disco del ejemplo del enunciado (CREA FICH) Situaci on inicial: Registros: r30=0x0000ea60 (60000) Direcciones de memoria: 60000 00800000 24576 24592 35200 35216 35232 35248 32960 32976 32992 33008 Resultado: Registros: r29=0x00008988 (35208) r30=0x0000ea60 (60000) Direcciones 35200 35216 35232 35248 de memoria: 5041434F 5A000000 00000000 00000000 2F444952 494E4349 5041434F 5A000000 00000000 00000000 FFFFFFFF FFFFFF00 FF000000 FFFF33FF

00600000 322F5344 00000000 41340032 4136006A 00000000 00000000 FFFF07FF 1D00FFFF 002AFFFF FFFF38FF

41000000 32322F53 5354522F

E5495233 41435441 00000000 00000000 FFFF1200 FFFF0000 3000FF00 FF000000

44290000 44370000 00000000 00000000 00FF14FF 0025002C 2D310000 00000000

41340032 4136006A 00000000 00000000

494E4349 41435441 00000000 00000000

410B0000 44370000 00000000 00000000

30 32960 32976 32992 33008 FFFFFFFF FFFFFF00 FF000000 FFFF33FF

Programaci on en Ensamblador (05-11-2013) FFFF07FF 1D00FFFF 002AFFFF FFFF38FF FFFF12FF FFFF0000 3000FF00 FF000000 00FF14FF 0025002C 2D310000 00000000

Nota: Ninguna otra entrada del disco debe modicarse.

Borra un archivo en un directorio especicado


Caso 12. Borra el archivo COOR del ejemplo del enunciado (BORRA ARCH) Situaci on inicial: Registros: r30=60000 (0x0000ea60) Direcciones de memoria: 60000 00800000 33408 32960 32976 32992 33008 Resultado: Registros: r29=0x00008280 r30=60000 (0x0000ea60) Direcciones de memoria: 33408 E54F4F52 32960 32976 32992 33008 FFFFFFFF FFFFFF00 FF000000 FFFF33FF 434F4F52 FFFFFFFF FFFFFF00 FF000000 FFFF33FF

80820000 410E012C FFFF07FF 1D00FFFF 002AFFFF FFFF38FF FFFF1200 FFFF0000 3000FF00 FF000000 00FF14FF 0025002C 2D310000 00000000

410E012C FFFF07FF 0000FFFF 0000FFFF FFFF38FF FFFF1200 FFFF0000 30000000 FF000000 00FF00FF 0000002C 2D310000 00000000

Nota: Ninguna otra entrada del disco debe modicarse.

Borra un directorio y todo su contenido


Caso 13. Borra el directorio SD22 del ejemplo del enunciado. (BORRA DIR) Situaci on inicial: Registros: r30=60000 (0x0000ea60) Direcciones de memoria: 60000 00800000

48810000

Programaci on en Ensamblador (05-11-2013) 33088 33408 33424 33440 33456 33728 33744 33920 33936 35200 35216 32960 32976 32992 33008 Resultado: Registros: r29=0x00008148 r30=60000 (0x0000ea60) Direcciones de memoria: 33088 33408 33424 33440 33456 33728 33744 33920 33936 35200 35216 32960 32976 32992 33008 E54F4F52 E5455354 E5544643 E5444D43 E5444154 E5435441 E5524942 E5535452 E541434F E5000000 FFFFFFFF 00000000 FF000000 00000000 410E012C 44100000 44160000 44180000 41280078 44350000 411F00FA 44260000 41340032 4136006A FFFF07FF 00000000 00000000 00000000 434F4F52 53455354 53544643 53444D43 42444154 41435441 54524942 53535452 5041434F 5A000000 FFFFFFFF FFFFFF00 FF000000 FFFF33FF 410E012C 44100000 44160000 44180000 41280078 53443232 534C4142 53415351 53415049 53444543 50524F42 440A0000 440F0000 44110000 44170000 44190000 41320055

31

411F00FA 44260000 41340032 4136006A FFFF07FF 1D00FFFF 002AFFFF FFFF38FF

E5495233 53414D50 E5495233 41435441 FFFF1200 FFFF0000 3000FF00 FF000000

44090000 44270000 44290000 44370000 00FF14FF 0025002C 2D310000 00000000

E5443232 E54C4142 E5415351 E5415049 E5444543 E5524F42

440A0000 440F0000 44110000 44170000 44190000 41320055

E5495233 E5414D50 E5495233 E5435441 FFFF0000 00000000 00000000 00000000

44090000 44270000 44290000 44370000 00FF0000 00000000 00000000 00000000

Nota: Ninguna otra entrada del disco debe modicarse.

32

Programaci on en Ensamblador (05-11-2013)

NORMAS DE PRESENTACION
Toda la informaci on relativa a esta pr actica se encuentra disponible en el URL: http://www.datsi.fi.upm.es/docencia/Lab_Estructura/Ensamblador Esta p agina contiene una secci on de anuncios relacionados con la pr actica. CONVOCATORIA DE FEBRERO 2014 Esta es una convocatoria extraordinaria, utilizable u nicamente por los alumnos que la soliciten formalmente en Secretar a. Para que puedan darse de alta en el sistema de entregas deber an solicitarlo a los profesores de la asignatura. El plazo de entrega de la pr actica estar a abierto desde el lunes 9 de diciembre de 2013 hasta el viernes 24 de enero de 2014, que es cuando se realizar a la correcci on denitiva. Cada grupo podr a disponer de cinco de las correcciones de pr acticas que se realizar an los d as h abiles (lunes a viernes no festivos) comprendidos entre el 10 de diciembre y el 23 de enero. Adem as de estas cinco, podr a utilizar la primera correcci on, a realizar el 9 de diciembre de 2013 y la u ltima, a realizar el 24 de enero de 2014. Todas las correcciones se realizar an a partir de las 22:00. Para solicitar una correcci on basta con realizar correctamente la entrega de la pr actica antes de esa hora l mite. El examen de la pr actica se realizar a el d a del examen nal de la asignatura, mi ercoles 29 de enero, despu es de la parte te orica. CONVOCATORIA DE JUNIO 2014 El plazo de entrega de la pr actica estar a abierto desde el lunes 14 de abril hasta el viernes 6 de junio de 2014, que es cuando se realizar a la correcci on denitiva. Cada grupo podr a disponer de cinco de las correcciones de pr acticas que se realizar an los d as h abiles (lunes a viernes no festivos) comprendidos entre el 15 de abril y el 5 de junio de 2014. Adem as de estas cinco, podr a utilizar la primera correcci on, a realizar el d a 14 de abril y la u ltima, a realizar el d a 6 de junio de 2014. Todas las correcciones se realizar an a partir de las 22:00. Para solicitar una correcci on basta con realizar correctamente la entrega de la pr actica antes de esa hora l mite. El examen de la pr actica se realizar a el d a del examen nal de la asignatura, mi ercoles 11 de junio en horario que se anunciar a en los d as previos. CONVOCATORIA DE SEPTIEMBRE 2014 El plazo de entrega de la pr actica estar a abierto entre el lunes 7 de julio y el jueves 31 de julio y entre el lunes 1 de septiembre y el martes 9 de septiembre de 2014, que es cuando se realizar a la correcci on denitiva. Cada grupo podr a disponer de cinco de las correcciones de pr acticas que se realizar an los d as h abiles (lunes a viernes no festivos) comprendidos entre el 8 y el 31 de julio y entre el 1 y el 8 de septiembre de 2014. Adem as de estas cinco, podr a utilizar la primera correcci on, a realizar el d a 7 de julio y la u ltima, a realizar el d a 9 de septiembre de 2014. Todas las correcciones se realizar an a partir de las 22:00. Para solicitar una correcci on basta con realizar correctamente la entrega de la pr actica antes de esa hora l mite. El examen de la pr actica se realizar a el d a del examen nal de la asignatura, viernes 12 de septiembre en horario que se anunciar a en los d as previos.

Programaci on en Ensamblador (05-11-2013)

33

TUTOR IAS DE LA PRACTICA


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

ENTREGA DE LA PRACTICA
La entrega se compone de: 1. Una memoria, en formato DINA4, en cuya portada deber a gurar claramente el nombre y apellidos del autor de la pr actica, identicador del grupo de pr acticas y el nombre de la asignatura. La memoria se entregar a preferiblemente en formato electr onico (PDF) enviandola a la direcci on (pr ensamblador@datsi..upm.es) y especicando en el Asunto del mensaje el texto Memoria de pr actica LEC seguido del identicador del grupo de pr acticas. Alternativamente podr a entregarse en papel, en este caso en el buz on situado a la entrada del Departamento en el bloque 4, planta 1. La memoria deber a contener los siguientes puntos: Descripci on de los algoritmos que se han implementado para cada subrutina, especicando la utilizaci on de la pila que se hace en la misma. Se podr a realizar esta descripci on como considere m as conveniente: mediante un diagrama de ujo, utilizando pseudoc odigo, con una descripci on textual, o mediante cualquier lenguaje que facilite la comprensi on de la labor realizada por la subrutina para implementar lo especicado en el enunciado. La descripci on no se debe limitar a repetir la especicaci on, sino que debe incidir en las particularidades de la implementaci on, por lo que se recomienda elaborar la memoria al mismo tiempo que se desarrollan los programas en ensamblador. Descripci on del juego de ensayo (conjunto de casos de prueba) que el alumno haya dise nado y utilizado para probar el correcto funcionamiento de la pr actica. Se especicar an las pruebas realizadas para probar cada una de las subrutinas, se nalando los casos particulares que se han probado e incluyendo el c odigo de los m as representativos. Observaciones nales y comentarios personales de esta pr actica, entre los que se debe incluir una estimaci on del tiempo empleado en su realizaci on y el porcentaje aproximado de implicaci on en la pr actica de cada uno de los miembros del grupo. NOTA: No ser a necesario incluir en esta memoria una copia del listado de las subrutinas en ensamblador, aunque s ser a necesario que dichas rutinas se encuentren adecuadamente comentadas en el propio chero que se entrega para las correcciones, ya que dicho chero ser a consultado en el proceso de evaluaci on de la pr actica.

34

Programaci on en Ensamblador (05-11-2013) Esta memoria se deber a depositar en el buz on del departamento, situado en el bloque 4, planta 1. 2. La entrega de los cheros que contienen la pr actica. 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 de la pr actica. La pr actica 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 la pr actica, 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. dosfat.ens: Contendr a las subrutinas que componen la pr actica junto con un programa principal que se haya utilizado para su depuraci on. memoria.txt: Ser a un chero ASCII que contenga la memoria de la pr actica. Si realiza esta memoria mediante un procesador de textos, ser a suciente con que guarde una copia del chero en formato ASCII (.txt), e incluya dicho chero. Si la versi on impresa de la memoria incluye diagramas de ujo u otros elementos gr acos, no es necesario que incorpore estos componentes en el chero memoria.txt. IMPORTANTE: Se recomienda que antes de realizar una entrega de la pr actica, realicen el ensamblado del chero dosfat.ens, se aseguren de que no genera ning un error y ejecuten la pr actica con sus propios casos de prueba. De este modo reducir an 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

Programaci on en Ensamblador (05-11-2013)

35

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 de pr acticas. 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. - NO LO OLVIDE - NO LO APUNTE - NO LO DIVULGUE suponiendo que el grupo de pr acticas est e compuesto por un u nico alumno (Jes us P erez o P erez con DNI n. 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.

36

Programaci on en Ensamblador (05-11-2013)

MANDAR FICHEROS
Esta opci on permite mandar los cheros de una pr actica, 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 dosfat.ens ...OK. Si alguno de los cheros no se encuentra, el programa lo comunicar a al usuario. Por ejemplo: MANDANDO EL FICHERO dosfat.ens ... No se puede abrir el chero dosfat.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 dosfat.ens NO TIENE EL FORMATO CORRECTO ENTREGA NO REALIZADA 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 grupo de pr acticas ser a eliminado de la lista de pr acticas pendientes de corregir. Si se han realizado varias entregas se cancelar an todas las entregas.

CONSULTAR RESULTADOS
Esta opci on permite consultar los resultados de la correcci on de la entrega de una pr actica. 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.

Programaci on en Ensamblador (05-11-2013)

37

Esta opci on se incluye para permitir la correcci on autom atica de las pr acticas. El alumno no debe utilizar este programa para depurar su pr actica. Debe ser el propio alumno el que construya su conjunto de pruebas que le permita comprobar que la pr actica funciona correctamente.

BLOQUEO DE LA ENTREGA
Si el usuario se compromete a no entregar m as veces la pr actica, 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 a la pr actica. 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 de la pr actica.

NOTICIAS
Esta opci on es puramente informativa. Permite noticar al alumno modicaciones en la especicaci on de la pr actica o, en general, noticias de inter es de la asignatura asociada a la pr actica. 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 pr actica que no se atenga a estas normas y se considerar a por lo tanto como no presentada.

38

Programaci on en Ensamblador (05-11-2013)

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


Aquellos alumnos que desarrollen la pr actica 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 de la pr actica y teclear lo siguiente (suponiendo que los cheros se encuentran en una carpeta denominada PRACTICA dentro de un pen-drive o l apiz de datos que se ubica en la unidad H: de Windows): G:\>h: H:\>cd practica H:\PRACTICA>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 de la pr actica deber an tomar las debidas precauciones para evitar la difusi on o copia de su c odigo. Se recomienda trabajar siempre sobre el l apiz de datos 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 pueden extraer de las normas de la asignatura.

Sistema de entrega v a Web


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 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 desde dicho computador.

A.0.1.

Obtenci on del entorno de pr acticas

La distribuci on del entorno para la realizaci on de pr acticas se puede obtener a trav es del URL http://www.datsi.fi.upm.es/docencia/Lab_Estructura/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 son iguales para los sistemas operativos Linux o Solaris, por lo que se describir a a 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

40

Ap endice A. Instalaci on del paquete de pr acticas 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. Deben funcionar correctamente.

A.2. Instalaci on del paquete bajo Windows

41

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 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. Puede utilizar por ejemplo el editor Wordpad, pero no debe emplear procesadores de texto como Word u otros.

Das könnte Ihnen auch gefallen