Beruflich Dokumente
Kultur Dokumente
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.
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
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.
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
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)
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
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) ................................
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.
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.
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.
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
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.
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
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.
16 Descripci on:
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
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).
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.
19
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
20
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,
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
22
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.
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
00600000
24
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
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
26
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
41000000
27
00600000
48810000
41000000
28 Direcciones 33920 33936 33952 33968 32960 32976 32992 33008 de memoria: 54524942 53535452 00000000 00000000 FFFFFFFF FFFFFF00 FF000000 FFFF33FF
00600000 4E2F5331
29
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
Programaci on en Ensamblador (05-11-2013) FFFF07FF 1D00FFFF 002AFFFF FFFF38FF FFFF12FF FFFF0000 3000FF00 FF000000 00FF14FF 0025002C 2D310000 00000000
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
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
32
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.
33
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.
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
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.
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
Ap endice A
A.0.1.
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.
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.
41
A.2.
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.