 |
Estructura y Tecnología de Computadores I (Sistemas)
1ª Semana, Febrero 2001:
- El programa objeto:
(Apdo. 13.5.1)
***
a) Es el resultado de la traducción del programa fuente.
- b) Es el resultado de la traducción del programa base.
- c) Es el resultado de la traducción del programa simbólico.
- d) Es el resultado de la traducción del programa traductor.
- En el proceso de conversión de una señal digital en otra
analógica, el intervalo de tiempo que debe transcurrir entre
la aparición de un punto de la señal discreta y el siguiente
se denomina:
(Apdo. 1.2.2.2)
***
a) Periodo de conversión
- b) Periodo de bloqueo
- c) Periodo de muestreo
- d) Periodo de discretización
- ¿ Cuál de los siguientes no corresponde a un registro de
segmento?
(Apdo. 8.3.3)
- a) Registro de segmento de pila
- b) Registro de segmento de datos
***
c) Registro de segmento de modo
- d) Registro de segmento de código
- El solapamiento (overlay) es:
(Apdo. 12.2.2.3)
- a) Una técnica que permite dividir tanto la memoria física
como la lógica en bloques regulares de igual tamaño.
***
b) Un mecanismo que permite ejecutar programas de mayor
tamaño que la memoria principal disponible.
- c) Una técnica que permite dividir tanto la memoria física
como la lógica en bloques de cualquier tamaño.
- d) Un mecanismo que permite generar direcciones que se
refieren a un espacio de mayor tamaño que la memoria
principal disponible.
- El programa montador necesita de la colaboración del
programa ensamblador para que le proporcione:
(Apdo. 18.4.2.1)
- a) El nombre simbólico de las macroinstrucciones.
***
b) La tabla de direcciones absolutas para la reubicación.
- c) El nombre simbólico de las subrutinas.
- d) El nombre simbólico dado a la pila.
- En el M68000, el direccionamiento relativo al contador
de programa con índice utiliza como desplazamiento:
(Apdo. 15.5)
- a) El resultado de sumar un número fijo al contenido de una
posición de memoria
- b) El resultado de sumar un número fijo al contenido del
registro de instrucción.
- c) El resultado de sumar un número fijo al contenido de la pila
del sistema.
***
d) El resultado de sumar un número fijo al contenido de un
registro de datos.
- Los sistemas de numeración con base negativa:
(Apdo. 5.3.1.2)
- a) Son aquellos que emplean dígitos con signo.
- b) Son aquellos que emplean únicamente dígitos negativos.
***
c) Permiten representar tanto cantidades positivas .como
negativas sin tener que añadir signo al número.
- d) Permiten representar una misma cantidad mediante distintas
cadenas de dígitos.
- ¿Cuáles de estas instrucciones son de tipo lógico?
(Apdo. 7.1.2.2)
***
a) NOT, XOR
- b) NEO, ADD
- c) DIV, EXT
- d) Ninguna de las anteriores es una instrucción de tipo lógico.
- Los códigos mayoritarios:
(Apdo. 6.4.3)
- a) Representan un método para compactar información
***
b) Representan un método para corregir errores
- c) Representan un método de codificación diferencial
- d) Representan un método de codificación directa.
- ¿Qué es un biestable?
(Apdo. 2.1.2 y 7.1.1)
***
a) Un elemento capaz de almacenar un bit de información.
- b) Un elemento de almacenamiento muy grande.
- c) Un elemento constituido por dos registros.
- d) Un elemento de software para modificar la información de la
memoria.
- Cuál es el código hexadecimal correspondiente a la instrucción del M68000 LSR (A5)+
- a) E2ES
- b) E6DD
- c) Ninguna de las otras es cierta
***
d) E2DD
Solución:
De acuerdo con la addenda del libro, el código máquina de esta instrucción
será el siguiente, teniendo en cuenta que el operando de destino es una palabra
de memoria:
Cógd Oper dr Modo Reg
1 1 1 0 0 0 1 # 1 1 # # # # # #
En nuetro caso:
dr = 0 (desplazamiento a la derecha)
Modo = 011 (indirecto por registro con postincremento)
Reg = 101 (5)
Por tanto:
1 1 1 0 0 0 1 0 1 1 0 1 1 1 0 1 = 1110 0010 1101 1101 = E2DD
- Para transmitir una información se utiliza paridad longitudinal y
transversal (paridad par). Decir si el siguiente bloque de información es
correcto y, en caso contrario, decir por que secuencia se traduciría la errónea:
F9 72 A5 C8 6A 41 B8 35
- a) No hay error
- b) FS
***
c) 88
- d) D8
Solución:
Si representamos estos valores de formato binario tenemos:
F9 1 | 1 1 1 1 0 0 1
72 0 | 1 1 1 0 0 1 0
A5 1 | 0 1 0 0 1 0 1
C8 1 | 1 0 0 1 0 0 0
6A 0 | 1 1 0 1 0 1 0
41 0 | 1 0 0 0 0 0 1
B8 1 | 0 1 1 1 0 0 0
------------------
35 0 | 0 1 1 0 1 0 1
Si contamos ahora el número de 1s que hay en filas y columnas, y
tenemos en cuenta que la primera columna y la última fila son las
paridades transversal y longitudinal respectivamente, nos debería
salir un número par (0) en todos los casos. Si en alguna fila o
columan hay un número impar se marca (1). Donde se intersecten
las fila y columna marcadas, ahí estará el error.
F9 1 | 1 | 1 1 1 0 0 1 0
72 0 | 1 | 1 1 0 0 1 0 0
A5 1 | 0 | 1 0 0 1 0 1 0
---+---+----------------
C8 1 | 1 | 0 0 1 0 0 0 1
---+---+----------------
6A 0 | 1 | 1 0 1 0 1 0 0
41 0 | 1 | 0 0 0 0 0 1 0
B8 1 | 0 | 1 1 1 0 0 0 0
35 0 | 0 | 1 1 0 1 0 1 0
| |
0 | 1 | 0 0 0 0 0 0 0
Es decir, el 2 bit más significativo de la cuarta fila (C8) debería
ser un 0. Por lo tanto el dato corregido será 88.
- Calcular el número de ciclos de reloj necesarios para que se ejecute
completamente en el computador descrito en el tema 7 una instrucción que
inicialice uno de los registros de la batería de registros: CLEAR REGn.
(Suponer que la decodificación de la instrucción ocupa 1 ciclo, los accesos
a memoria 3, y cada operación del operador 1, y que el operador cuenta con la
operación de puesta a cero).
- a) 7
***
b) 8
- c) 9
- d) 10
Solución por Pedro García Sena:
Se realizará una fase búsqueda de la instrucción (ver pág.200) y después se
cargará un cero en el registro n empleando el acumulador previamente puesto a cero.
Ciclo de reloj 1: Acceso a memoria para obtener la instruccion:
- salida al bus de direcciones del PC: (CP) => BA [BACP]
- carga del registro de dirección de la memoria: (DB) => RD [CRDBA]
Ciclo de reloj 2-3-4: Ciclo de lectura de la memoria e incremento del CP:
- orden de lectura: L
- carga del registro de memoria con el operando: (Mem) => RM [CRMM]
- incremento del contador de programa: (CP) + 1 => CP [ICP]
Ciclo de reloj 5: Transferencia al RI de la instrucción contenida en RM:
- salida al bus de datos del RM: (RM) => BD [SBDRM]
- carga de RI con el operando de memoria: (BD) => RI [CRIBD]
Ciclo de reloj 6: Decodificacion de la instrucción:
- no se activa ninguna señal de control (ahora ya se sabe de que instrucción se trata)
Ciclo de reloj 7: se programa la ALU para que ponga a cero el Acumulador:
- se programa la ALU para ponerse a cero: OP => 0 [OP]
- se carga el acumulador: (ALU) => ACC=0 [CAC]
Ciclo de reloj 8: Salida al Bus de Datos del Acumulador y carga del Registro n:
- se saca el acumulador al bus de datos: (AC) => DB [SBDAC]
- se selecciona la batería como entrada y se carga: (DB)=0 => Rn [SBRE]
- Sea la función lógica de 4 variables f(A,B,C,D) expresada en maxterms como
f=M0.M2.M4.M5.M6.M7.M8.M10.Ml2.M13.M14.MI5. La simplificación de esta función
conduce a una de las siguientes:
***
a) B.D'
- b) B+D'
- c) B'+D'
- d) B'.D'
Solución:
Lo que yo he hecho es pasarlo a minterms y aplicar Karnaugh:
f=m4+m6+m12+m14
El mapa quedaría de la siguiente forma:
donde, agrupando términos obtenemos
B.D'
- Obtener el equivalente decimal del número 42F80000 teniendo en
cuenta que se ha empleado para su codificación el
formato normalizado IEEE 754 para coma flotante de 32 bits.
- a) -124
- b) 1,93·10 6
- c) -1,93·10 6
***
d) 124
Solución:
Pasamos la notación hexadecimal a binario y extraemos los diferentes
términos:
42F80000 = 0100 0010 1111 1000 0000 0000 0000 0000
signO = 0
exponente = 133 - 127 = 6
mantisa = [1.] 1111 = 1.9375
por lo que el número pedido será:
+1.9375 * 2^6 = 124
- Señalar cuál es el contenido del registro D2, siendo inicialmente
D0: 0000 000F, D1: 0000 0010 y D2: 1357 AF86 después de
ejecutar las siguientes instrucciones:
ROR.W D0, D2
MULU D1, D2
ANDI.B #$F0, D2
- a) 0000 F0F0
- b) 0000 F0D0
***
c) 0005 F0D0
- d) 0005 F0F0
Solución:
1) Rotamos 15 posiciones a la derecha AF86, lo que equivale a girarlo
1 vez a la izquierda:
AF86 = 1010 1111 1000 0110 (1 a la izquierda) 0101 1111 0000 1101
Es decir, el registro D2 contiene ahora 5F0D
2) Multiplicamos los 16 bits de la derecha de D2, ojo MULU multiplica
registros de 16 bits y da resultados de 32, por lo que los 16 bits de
la izquierda de D2 no influyen para nada. Como D1 vale 16, D2*D1 es lo
mismo que desplazar 4 (16=2^4) posiciones a la izquierda D2. Por lo
tanto el resultado de este paso sera: D2 = 0005 F0D0
3) Hacemos el AND lógico del primer byte de la derecha de D2 con $F0,
el resto del registro no se altera: $D0 AND $F0 = $D0. Por lo tanto,
el valor final de D2 será 0005 F0D0
|