Examen Final - 75.03. Organización del Computador

Cátedra: Saubidet
Fecha: Segunda Oportunidad - Segundo Cuatrimestre 2005
Día: 29/12/2005

Esta página está incompleta; podés ayudar completando el material.

Enunciado

Teórica

  1. Haga un diagrama de las computadoras tipo Ábacus y Super Ábacus. Describa las diferencias entre ambas.
  2. ¿Qué es el ensamblador? ¿Qué ventajas tiene este lenguaje sobre el de máquina? ¿Qué hacen los ensambladores de dos pasadas?
  3. ¿Puede interrumpirse la CPU cuando se encuentra en estado supervisor?
  4. Describa los pasos que se realizan cuando se requiere leer un archivo de un disco sectorizado bajo DOS.
Estas preguntas fueron elaboradas en base a las respuestas (no tengo el enunciado, sólo la resolución. Puede ser que alguna no concuerde exactamente con el enunciado dado.

Práctica

Codificar una rutina en Assembler para IBM 370 que realice lo siguiente:

  • Dado un Byte (parámetro de entrada para la rutina), considerar los últimos siete bits del mismo y, mediante códigos de Hamming, determinar si la información ha sufrido alguna alteración. De ser así, debe corregirse el error, antes de retornar.

Resolución

Teórica

  1. Entre las diferencias que hay entre las máquinas Ábacus y Super Ábacus pueden nombrarse:
    • La máquina Ábacus cuenta con un solo registro utilizable, al que se denomina “acumulador”, y las operaciones que se pueden llevar a cabo actúan sobre él (o toman los datos desde el mismo). En cambio, la máquina Super Ábacus cuenta con una cantidad variable de registros sobre los cuales efectuar operaciones.
    • El direccionamiento en Ábacus puede ser inmediata (para instrucciones del tipo “carga inmediata”) o Directo y Absoluto (donde el operando es la dirección del dato). En Super Ábacus se pueden utilizar dos operandos, ya que su Registro de Instrucción es mayor. Esto permite agregar el tipo de direccionamiento por Base y Desplazamiento (donde se usa un operando para indicar el registro base y el otro para definir el offset).
    • La máquina Super Ábacus no cuenta con RPI. Su papel lo desempeña, en general, el registro 0.
  2. El ensamblador es un programa que recibe el código fuente de un programa y lo traduce a un lenguaje que el computador pueda entender (binario), quitándole los comentarios que pudo haber hecho el programador y todas aquellas pseudo instrucciones que se hayan introducido para comandar al propio ensamblador (por ejemplo START, END, etc.). Además, se encarga de reemplazar las Macros utilizadas por sus instrucciones correspondientes.
    La ventaja del lenguaje ensamblador sobre el de “máquina” es, principalmente, que permite renombrar las instrucciones de manera mnemotécnica, facilitando así la escritura y posterior lectura de códigos fuente. Además, permite la utilización de macros, lo que ahora al programador reescribir partes del código. Por otro lado, gracias al ensamblador se pueden utilizar rótulos para definir áreas en memoria, o marcar instrucciones (en lugar de tener que escribir la dirección del dato o instrucción a la que se quiere saltar).
    Los ensambladores de dos pasadas utilizan una de ellas para resolver las direcciones de los rótulos. Además, son capaces de determinar los símbolos externos que son direcciones que no se refieren a una parte del código a ensamblar, sino de otro que luego se le unirá (mediante la linkedición).
  3. La CPU puede ser interrumpida encontrándose tanto en estado supervisor como en estado “problema”. El impedimento de que la CPU sea interrumpida depende no del estado en que se encuentre (supervisor-problema) sino del enmascaramiento de interrupciones o la inhibición de las mismas por prioridades. Debido a que no todas las interrupciones son enmascarables (pueden ser enmascaradas, por ejemplo, algunas de las interrupciones del programa, pero no todas), y a que las interrupciones por error de Máquina son prioritarias (esto significa que ninguna otra puede inhibirla), es posible que, por ejemplo, mientras la CPU esté procesando una interrupción de E/S (o ejecutando cualquier programa, utilizo este ejemplo ya que de esa forma se encuentra en estado supervisor), puede ser interrumpida por un error de Máquina.
  4. COMPLETAR. Si alguien tiene la pregunta correcta sería mejor, ya que yo tenía la respuesta incompleta y no sé bien que poner

Práctica

HAMMING  PPIO  3
         L     7,0(1)    //R7 = Dir(Byte)
         ICM   5,8,0(7)  //R5 = Byte
         SLL   5,1       //Pierdo el 0 extra
         LA    6,1
         LA    8,BITS
         LA    9,7       //Cantidad de bits a analizar
COMPARA  C     5,=F'0'
         BL    UNO
         B     PROX
UNO      ST    6,0(8)    //Proxima palabra
         SLL   5,1
PROX     BCT   9,COMPARA
         LA    11,0      //Sumatoria de bits de paridad erronea
BIT1     LA    8,0       //Sumatoria de bits para c/ bit de paridad
         LA    6,BITS
         A     8,0(6)    //Bits analizados por bit de paridad 1
         A     8,8(6)
         A     8,16(6)
         A     8,24(6)
         SRDL  8,1       //El último bit determina par/impar
         C     9,=F’0’
         BNL   BIT2
         A     11,=F’1’
BIT2     LA    8,0
         A     8,4(6)    //Bits analizados por bit de paridad 2
         A     8,8(6)
         A     8,20(6)
         A     8,24(6)
         SRDL  8,1
         C     9,=F’0’
         BNL   BIT4
         A     11,=F’2’
BIT4     LA    8,0
         A     8,12(6)   //Bits analizados por bit de paridad 4
         A     8,16(6)
         A     8,20(6)
         A     8,24(6)
         SRDL  8,1
         C     9,=F’0’
         BNL   FINCOMP
         A     11,=F’4’
FINCOMP  C     11,=F’0’  //R11 = Posición bit erroneo
         BE    FIN
         L     7,0(1)
         ICM   5,8,0(7)
         SLDL  4,0(11)   //Dejo el bit erroneo al comienzo de R5
         SLL   4,1       //Hago espacio para el bit a corregir
         C     5,=F’0’
         BL    ESCERO    //El bit era 1 y pasa a 0
         A     4,=F’1’   //El bit era 0 y pasa a 1
ESCERO   SLL   5,1       //Pierdo el bit erroneo, y lleno con 0
         LA    8,7       //¿Cuántos bits faltan desplazar?
         SR    8,11
         SLDL  4,0(8)
         STCM  4,1,0(7)  //Devuelvo el byte corregido
FIN      CHAU
 
BITS     DC  7F’0’
         END 

Notas

  • Para resolver este ejercicio debe recordarse que la sumatoria de los números de bit de comprobación erroneos, es igual a la posición del bit erroneo.
  • En este caso, decidí definir una palabra para cada uno de los bits, y así sumar su contenido tantas veces como sea necesario, sin necesidad de usar Shifts. Si bien es mucho más rápido el sistema de Shifts de registros a la hora de ejecutarse, para escribir en un exámen es más simple esta soluión.

Discusión

Si ves algo que te parece incorrecto en la resolución y no te animás a cambiarlo, dejá tu comentario acá.
materias/75/03/final_1_20051229_1.txt · Última modificación: 2006/12/31 18:57 por mariano
 
Excepto donde se indique lo contrario, el contenido de esta wiki se autoriza bajo la siguiente licencia: CC Attribution-Noncommercial-Share Alike 3.0 Unported


Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki