![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
|
|
![]() ![]() |
||
Trabajos Prácticos |
||
TP1 TP2 TP3 TP4 TP5 TP6 TP7 TP8 TP9 TP10 TP11 TP12 TP13 | Trabajo Práctico 1SIMPLEZ
Si la unidad control empieza ejecutando la instrucción almacenada en la dirección 0, averigue lo que hace el programa y escriba los contenidos de las direcciones 0 a 6 de la memoria principal después de la ejecución. Ejercicio n° 2: Si Simplez, con el mismo repertorio de instrucciones que hemos definido, tuviera una longitud de palabra de 8 bits, ¿ cuál sería la capacidad máxima de memoria principal direccionable ?. ¿ Y si la longitud de palabra fuese 16 bits ?. Ejercicio n° 3: En un ordenador con longitud de palabra de 16 bits y con formato de instrucción de dos campos (CO y CD), estudie las distintas alternativas de diseño en cuanto a número de instrucciones diferentes y capacidad de memoria principal direccionable. Ejercicio n° 4: Hasta ahora hemos supuesto que el campo de código de operación ocupa simpre los mismos bits del formato de instrucción. Como consecuencia, hemos visto que en las instrucciones que no hacen referencia a la memoria el resto de los bits del formato de instrucción quedan desprovechados. Por eso, en muchos ordenadores el campo de código de operación no tiene longitud fija. Por ejemplo, suponga que la longitud de palabra es ocho bits, y que se reserva el código 1111 para todas las instrucciones que no hacen referencia a la memoria, y para ellas, el resto de los bits de la instrucción sirven como extensión del código de operación. ¿ Cuántas instrucciones con referencia a la memoria, y cuántas sin referencia a la memoria podríamos así tener en el repertorio ?. Ejercicio n° 5: Suponga que se carga en memoria el programa para sumar 100 números en Simplez según la primera idea dada en la bibliografía (apartado 2.2, es decir, con 102 insturcciones), y que previamente todas las palabras de la memoria contenían ceros. ¿ Cuál sería el resultado de la ejecución ?. Ejercicio n° 6: Si se dispone de una instrucción de complementar (el contenido del acumulador), es decir, cambiar los ceros por unos y los unos por ceros, resulta mucho más fácil y más eficaz realizar la diferencia entre dos números. En efecto, compruebe que si M y N son dos números, y N1 es el complemento (resultado de complementar: cambiar los 0s por 1s y vicecersa) del segundo, entonces, teniendo en cuenta el truco explicado en la bibliografía (apartado 2.5) resulta que M + N1 + 1 = M - N. Teniendo esto en cuenta, y suponiendo que Simplez dispone de la instrucción NOT (complementar el acumulador, o lo que es lo mismo, hacer la operación lógica de negación sobre su contenido) en lugar, por ejemplo, de CLR, escriba otro subprograma para la sustracción. Ejercicio n° 7: Considere un ordenador con palabras de ocho bits. Los tres primeros bits del formato de instrucción corresponden al código de operación y el resto a la dirección de memoria principal. Los códigos de operación son:
Inicialmente todas las palabras de la memoria principal tienen como contenido 00000000, salvo las diecisiete primeras, que tienen lo siguiente:
Analice el programa y averigue lo que hace. Indique el contenido de las palabras que se modifican, antes y después de la ejecución. Ejercicio n° 8: En el programa de la bibliografía 2.6 se ha querido poner de manifiesto como un programa en un determinado momento del curso de su ejecución, puede construir contenidos binarios que en otro momento ejecuta como instrucciones. Pero para el problema allí planteado hay una solución más inmediata que consiste en guardar directamente, el las palabras de direcciones 5 y 6 (por ejemplo), las codificaciones binarias de "BR /17" y "BR /27". Rehaga el programa y observe el ahorro en instrucciones. Ejercicio n° 9: En la bibliografía (al principio del apartado 2.4) se dice que 7640 (octal) puede interpretarse en Simplez bien como el número 4000 (decimal) o bien como la instrucción "HALT". Pero hay una tercera interpretación. Suponga que la dirección 1 tiene ese contenido y que se ejecutan sucesivamente estas instrucciones: LA /1 y ST /509. ¿ Cuál es el resultado de la ejecución ?. En consecuencia, ¿ cuál es la tercera interpretación posible del contenido de una palabra ?. Ejercicio n° 10: Al definir las instrucciones que tienen modo de direccionamiento inmediato (códigos binarios 101 y 110) hemo dicho que el operando inmediato ocupa los bits del campo CD, y que el valor de los bits 6 y 7 es indiferente. Pero puesto que estos bits no son necesarios para estas instrucciones, podríamos haberlos aprovechado para ampliar el margen de valores posibles de ese operando inmediato. ¿ Cuál sería ese margen ?. Ejercicio n° 11: Escriba un programa para el problema propuesto en el ejercicio n° 7 de la lección 2 de la bibliografía. Ejercicio n° 12: Escriba un programa que permita poner a cero una zona de memoria de 64 palabras que empieza por la de dirección 100 (decimal). Ejercicio n° 13: Suponga que el teclado y la pantalla solicitan interrupción al mismo tiempo. ¿ A quién se servirá primero ?. Modifique el programa 3.5 de la bibliografía. Ejercicio n° 14: Las rutinas de servicio del programa 3.5 suponen que las líneas tienen siempre 80 caracteres. Lo normal es que una línea pueda tener una longitud variable (con un valor máximo que puede seguir siendo 80), indicándose su final con el carácter retorno ("ret", o "CR": "Carriage Return), que tiene como codificación ASCII "0001101" (13 en decimal). Reprograme esas rutinas para que terminen al llegar a los 80 caracteres, o bien cuando aparezca "CR". |
|
![]() ![]() ![]() |
Esta página es mantenida por Gustavo Mercado
Ultima modificación 30-Julio-99 |