Descarga la aplicación para disfrutar aún más
Esta es una vista previa del archivo. Inicie sesión para ver el archivo original
FC - Junio 2007 - Problemas - Soluciones.pdf UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones FUNDAMENTOS DE COMPUTADORES (Problemas. Examen Final. Mañana) APELLIDOS Y NOMBRE: Nº DE EXPEDIENTE: GRUPO: CONVOCATORIA: 18 de Junio de 2007 PROBLEMA 1 (2.5 puntos) Sea A el registro acumulador del Indalo 3.0. Se pretende escribir un programa que active el flag de cero si se cumplen simultáneamente las siguientes condiciones sobre los bits de dicho registro: 54307 aa ,0a ,aa === Se pide: a) Escribir dicho programa en lenguaje simbólico. (1 punto) b) Escribir en lenguaje ensamblador del Indalo 3.0 el programa del apartado anterior. (1.5 puntos) Pág. 1 UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones FUNDAMENTOS DE COMPUTADORES (Problemas. Examen Final. Mañana) APELLIDOS Y NOMBRE: Nº DE EXPEDIENTE: GRUPO: CONVOCATORIA: 18 de Junio de 2007 PROBLEMA 1: Solución (1) Apartado a) L. SIMBÓLICO ACCIÓN A → B A = B B ∩ 98H→ B B = a700a4a3000 ; A no cambia A>r>→ A A = a0a7a6a5a4a3a2a1 A ∩ 90H→ A A = a000a50000 A B → A ⊕ A = (a7 ⊕ a0) 0 0 (a5 ⊕ a4) a3 0 0 0 A 10H→ A ⊕ A = (a7 ⊕ a0) 0 0 )a(a 45 ⊕ a3 0 0 0 Apartado b) Para escribir el programa anterior en lenguaje ensamblador de Indalo 3.0, hay que tener en cuenta que las instrucciones aritméticas y lógicas tienen como único destino el acumulador. Así: MOV B, A AND A, 98H MOV C, A MOV A, B ROR A AND A, 90H XOR A, C XOR A, 10H Pág. 2 UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones FUNDAMENTOS DE COMPUTADORES (Problemas. Examen Final. Mañana) APELLIDOS Y NOMBRE: Nº DE EXPEDIENTE: GRUPO: CONVOCATORIA: 18 de Junio de 2007 PROBLEMA 2 (2.5 puntos) Para el Indalo 3.0 se ha desarrollado el siguiente programa: ORG 1000H MOV A, (2000H) MOV B, (2001H) MOV C, 3 CMP A, B JNC BUCLE2 BUCLE1: SHR A DEC C JNZ BUCLE1 JMP FIN BUCLE2: SHL A JNO BUCLE2 FIN: HLT a) Ensamblar el programa indicando en qué dirección de memoria comienza cada instrucción del mismo (el resultado debe figurar en la tabla adjunta). INSTRUCCIÓN POSICIÓN DE MEMORIA INSTRUCCIÓN ENSAMBLADA MOV A, (2000H) MOV B, (2001H) MOV C, 3 CMP A, B JNC BUCLE2 SHR A DEC C JNZ BUCLE1 JMP FIN SHL A JNO BUCLE2 HLT (1.25 puntos) b) Suponiendo que (2000H) = 3FH y (2001H) = 0E2H, indicar de forma razonada cuál es el tiempo que tarda en ser ejecutado el programa anterior en una CPU que funcione a 1 GHz. (1.25 puntos) Pág. 3 UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones FUNDAMENTOS DE COMPUTADORES (Problemas. Examen Final. Mañana) APELLIDOS Y NOMBRE: Nº DE EXPEDIENTE: GRUPO: CONVOCATORIA: 18 de Junio de 2007 PROBLEMA 2: Solución (1) Apartado a) INSTRUCCIÓN POSICIÓN DE MEMORIA INSTRUCCIÓN ENSAMBLADA MOV A, (2000H) 1000H 68H, 00H, 20H MOV B, (2001H) 1003H 70H, 01H, 20H MOV C, 3 1006H 7CH, 03H CMP A, B 1008H 82H JNC BUCLE2 1009H 13H, 07H SHR A 100BH = BUCLE1 E8H DEC C 100CH A3H JNZ BUCLE1 100DH 17H, 0FCH JMP FIN 100FH 12H, 15H, 10H SHL A 1012H = BUCLE2 E0H JNO BUCLE2 1013H 14H, 0FDH HLT 1015H = FIN 0EH Apartado b) Instrucción Iterac. 1 Iterac. 2 Iterac. 3 Total MOV A,(2000H) 18 18 MOV B,(2001H) 18 18 MOV C,3 10 10 CMP A,B 7 7 JNC BUCLE2 7 7 BUCLE1: SHR A 7 7 7 21 DEC C 7 7 7 21 JNZ BUCLE1 12 12 7 31 JMP FIN 15 15 BUCLE2 : SHL A JNO BUCLE2 FIN : HLT 3 3 TOTAL ...................................................................................... 151 Pág. 4 UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones FUNDAMENTOS DE COMPUTADORES (Problemas. Examen Final. Mañana) APELLIDOS Y NOMBRE: Nº DE EXPEDIENTE: GRUPO: CONVOCATORIA: 18 de Junio de 2007 PROBLEMA 2: Solución (y 2) Téngase en cuenta que el resultado de la comparación determinará el camino a tomar dentro del programa. Así, si A > B, no se activa Fc y se salta a BUCLE2. En caso contrario, se sigue por BUCLE1. En ambos casos, la salida del bucle correspondiente conlleva la terminación del programa. Puesto que A=(2000H)=3FH y B=(2001H)=0E2H, A<B y el programa entra en BUCLE1, realizando tantas iteraciones dentro del mismo como indique el contador C, esto es 3 (la salida de este bucle se produce si al decrementar C se produce un resultado nulo que active Fz). En cada una de ellas, se divide entre dos el contenido de A. El tiempo de ejecución del programa es, por lo tanto: TEJECUCIÓN = Nº ciclos x TCICLO = 151 x (1 GHz )-1 = 151 x 10-9 s = 151 ns Pág. 5 UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones FUNDAMENTOS DE COMPUTADORES (Problemas. Examen Final. Mañana) APELLIDOS Y NOMBRE: Nº DE EXPEDIENTE: GRUPO: CONVOCATORIA: 18 de Junio de 2007 PROBLEMA 3 (2.5 puntos) Sea el siguiente fragmento de programa: MOV C, 52H IN A, C MOV B, A MOV C, 53H IN A, C MOV C, A XOR A, A BUCLE: ADD A, C DEC B JNZ BUCLE MOV C, 54H OUT C, A HLT Sabiendo que, antes de ejecutarse, el contenido de los puertos 52H, 53H y 54H era: (52H) = 08H , (53H) = 12H , (54H) = 0FFH se pide: a) Indicar el valor de los registros A, B y C, así como el contenido del puerto 54H cuando finaliza el fragmento de programa. (0.75 puntos) b) ¿Qué hace el fragmento de programa? Explicar su funcionamiento en menos de seis líneas. Razonar la respuesta. (0.75 puntos) c) Realizar una tabla en la que aparezcan las instrucciones y los ciclos de máquina que se precisan para ejecutar cada una de ellas, así como el número de veces que se ejecuta cada instrucción. (1 punto) Pág. 6 UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones FUNDAMENTOS DE COMPUTADORES (Problemas. Examen Final. Mañana) APELLIDOS Y NOMBRE: Nº DE EXPEDIENTE: GRUPO: CONVOCATORIA: 18 de Junio de 2007 PROBLEMA 3: Solución (1) Apartado a) En este programa intervienen tres puertos. De ellos, dos son de entrada (IN) y sus direcciones son 52H y 53H, y uno de salida (OUT), que tiene por dirección 54H. Comentamos brevemente lo que hace cada línea del fragmento del programa: MOV C, 52H ;C = 52H IN A, C ;El contenido del puerto 52 H pasa a A (A = 08H) MOV B, A ;B = 08H MOV C, 53H ;C = 53H IN A, C ;El contenido del puerto 53H pasa a A (A = 12H) MOV C, A ;C = 12H XOR A, A ;A = 0 BUCLE: ADD A, C ;(Bucle de multiplicación: sumas sucesivas) DEC B ;(Este bucle se ejecuta 8 veces y acaba con B = 0) JNZ BUCLE ;(Este bucle hace A = 12H * 08H = 90H) MOV C, 54H ;C = 54H OUT C, A ;Escribe A = 90H en el puerto 54H HLT ;Fin En consecuencia, al finalizar: A= 90H, B = 0H, C = 54H y (54H) = 90H Apartado b) Para responder a este apartado, tengamos en cuenta la descripción por líneas de programa que hicimos en el apartado previo. El programa lee los valores de los puertos 52H y 53H. Los multiplica y el resultado lo escribe en el puerto 54H. En nuestro caso, los contenidos de 52H y 53H son 08 y 12H (en decimal, 18), respectivamente, que multiplicados da como resultado 90H (en decimal, 90H es 144, que es, obviamente, el producto de 8 por 18). Este valor se escribe en el puerto 54H. Pág. 7 UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones FUNDAMENTOS DE COMPUTADORES (Problemas. Examen Final. Mañana) APELLIDOS Y NOMBRE: Nº DE EXPEDIENTE: GRUPO: CONVOCATORIA: 18 de Junio de 2007 PROBLEMA 3: Solución (y 2) Apartado c) Instrucción Ciclos de máquina Nº de veces que se ejecuta MOV C, 52H F, Falu 1 IN A, C F, IP 1 MOV B, A F 1 MOV C, 53H F, Falu 1 IN A, C F, IP 1 MOV C, A F 1 XOR A, A F 1 ADD A, C Fflag 8 DEC B F 8 JNZ B UCLE Cuando salta: F, F Cuando no salta: F 7 veces salta y 1 vez no salta MOV C, 54H F, Falu 1 OUT C, A F, OP 1 HLT Fnoinc 1 Pág. 8 UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones FUNDAMENTOS DE COMPUTADORES (Problemas. Examen Final. Tarde) APELLIDOS Y NOMBRE: Nº DE EXPEDIENTE: GRUPO: CONVOCATORIA: 18 de Junio de 2007 PROBLEMA 1 (2.5 puntos) Dado el siguiente fragmento de programa: MOV B,A ROR A AND A,22H XOR A,B AND A,0A3H XOR A,0A1H JZ DIR_SALTO se pide: a) Especificar todas las condiciones que deben cumplir los bits del registro A y/o del registro B para que se produzca el salto a la dirección DIR_SALTO. (1 punto) b) En el caso de que el valor inicial de A sea 0B9H, ¿se producirá el salto a la dirección DIR_SALTO?. Especificar las condiciones que se cumplen o no. (0.3 puntos) c) Contestar al apartado b) suponiendo que el valor inicial de A es 0CDH. (0.3 puntos) d) Contestar al apartado b) suponiendo que el valor inicial de A es 47H. (0.3 puntos) e) ¿Cuántos bytes ocupará este fragmento en código máquina? (no se pide ensamblarlo, sólo calcular su número de bytes). (0.6 puntos) NOTAS: − Denominar los bits del registro A como y los del registro B como 01234567 aaaaaaaa 01234567 bbbbbbbb . − Para contestar el apartado a) se sugiere el desarrollo del programa mediante lenguaje simbólico, analizando los valores binarios de A y B. Pág. 1 UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones FUNDAMENTOS DE COMPUTADORES (Problemas. Examen Final. Tarde) APELLIDOS Y NOMBRE: Nº DE EXPEDIENTE: GRUPO: CONVOCATORIA: 18 de Junio de 2007 PROBLEMA 1: Solución (1) Apartado a) Lenguaje Simbólico Lenguaje Ensamblador Contenido de A Contenido de B BA → MOV B, A 01234567 aaaaaaaa 01234567 aaaaaaaa ArA >→> ROR A 12345670 aaaaaaaa No varía AH22A →∩ AND A, 22H 0a000a00 26 No varía ABA →⊕ XOR A, B 0212346567 a)aa(aaa)aa(aa ⊕⊕ No varía AH3A0A →∩ AND A, 0A3H 021657 a)aa(000)aa(0a ⊕⊕ No varía AH1A0A →⊕ XOR A, 0A1H 021657 a)aa(000)aa(0a ⊕⊕ No varía Salto condicional JZ DIR_SALTO No varía No varía A la vista de lo anterior, los bits iniciales del registro B no son relevantes; las condiciones que deben cumplirse para que Fz se active, y se produzca el salto a la dirección DIR_SALTO, son (deben cumplirse la tres simultáneamente): Apartado b) Si A = 0B9H, su valor b a7 1 Se cumplen todas las produce el salto a la direcció 1aa 07 == 56 aa ≠ 12 aa = ; ; inario es : 01234567 aaaaaaaa a6 a5 a4 a3 a2 a1 a0 0 1 1 1 0 0 1 condiciones señaladas en el apartado anterior y, por tanto, se n DIR_SALTO. Pág. 2 UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones FUNDAMENTOS DE COMPUTADORES (Problemas. Examen Final. Tarde) APELLIDOS Y NOMBRE: Nº DE EXPEDIENTE: GRUPO: CONVOCATORIA: 18 de Junio de 2007 PROBLEMA 1: Solución (y 2) Apartado c) Si A = 0CDH, su valor binario es : 01234567 aaaaaaaa a7 a6 a5 a4 a3 a2 a1 a0 1 1 0 0 1 1 0 1 No se cumple la condición y, aunque se cumplen las otras dos, NO se produce el salto a la dirección DIR_SALTO. 12 aa = Apartado d) Si A = 47H, su valor binario es : 01234567 aaaaaaaa a7 a6 a5 a4 a3 a2 a1 a0 0 1 0 0 0 1 1 1 Se cumplen todas las condiciones, salvo la condición 1aa 07 == y, por tanto, NO se produce el salto a la dirección DIR_SALTO. Apartado e) Tamaño del fragmento de programa en código máquina: Instrucción Tamaño (bytes) MOV B, A 1 ROR A 1 AND A, 22H 2 XOR A, B 1 AND A, 0A3H 2 XOR A, 0A1H 2 JZ DIR_SALTO 2 TOTAL 11 Pág. 3 UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones FUNDAMENTOS DE COMPUTADORES (Problemas. Examen Final. Tarde) APELLIDOS Y NOMBRE: Nº DE EXPEDIENTE: GRUPO: CONVOCATORIA: 18 de Junio de 2007 PROBLEMA 2 (2.5 puntos) Para el Indalo 3.0 se ha desarrollado el siguiente programa en código máquina: POSICIÓN DE MEMORIA INSTRUCCIÓN ENSAMBLADA 1000H 68H, 00H, 20H 1003H 70H, 01H, 20H 1006H 7CH, 03H 1008H 82H 1009H 13H, 07H 100BH E8H 100CH A3H 100DH 17H, 0FCH 100FH 12H, 15H, 10H 1012H E0H 1013H 14H, 0FDH 1015H 0EH a) Desensamblar el programa. (1.25 puntos) b) Suponiendo que (2000H) = 1FH y (2001H) = 1DH, indicar de forma razonada cuál es el tiempo que tarda en ser ejecutado el programa anterior en una CPU que funcione a 1 GHz. (1.25 puntos) Pág. 4 UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones FUNDAMENTOS DE COMPUTADORES (Problemas. Examen Final. Tarde) APELLIDOS Y NOMBRE: Nº DE EXPEDIENTE: GRUPO: CONVOCATORIA: 18 de Junio de 2007 PROBLEMA 2: Solución (1) Apartado a) POSICIÓN DE MEMORIA INSTRUCCIÓN ENSAMBLADA INSTRUCCIÓN 1000H 68H, 00H, 20H MOV A, (2000H) 1003H 70H, 01H, 20H MOV B, (2001H) 1006H 7CH, 03H MOV C, 3 1008H 82H CMP A, B 1009H 13H, 07H JNC 1012H 100BH E8H SHR A 100CH A3H DEC C 100DH 17H, 0FCH JNZ 100BH 100FH 12H, 15H, 10H JMP 1015H 1012H E0H SHL A 1013H 14H, 0FDH JNO 1012H 1015H 0EH HLT Apartado b) Instrucción Iterac. 1 Iterac. 2 Iterac. 3 Total MOV A,(2000H) 18 18 MOV B,(2001H) 18 18 MOV C,3 10 10 CMP A,B 7 7 JNC 1012H 12 12 SHR A DEC C JNZ 100BH JMP 1015H SHL A 7 7 7 21 JNO 1012H 12 12 7 31 HLT 3 3 TOTAL ...................................................................................... 120 Pág. 5 UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones FUNDAMENTOS DE COMPUTADORES (Problemas. Examen Final. Tarde) APELLIDOS Y NOMBRE: Nº DE EXPEDIENTE: GRUPO: CONVOCATORIA: 18 de Junio de 2007 PROBLEMA 2: Solución (y 2) Téngase en cuenta que el resultado de la comparación determinará el camino a tomar dentro del programa. Así, si A > B, no se activa Fc y se salta al BUCLE 2 (1012H). En caso contrario, se sigue por el BUCLE 1 (100BH). En ambos casos, la salida del bucle correspondiente conlleva la terminación del programa. Puesto que A=(2000H)=1FH y B=(2001H)=1DH, A>B y el programa entra en el BUCLE 2. Dentro del mismo, se multiplica por dos el contenido de A. La condición de salida de este bucle consiste en que el bit que se pierda por la izquierda al desplazar el contenido de A sea diferente al que se queda como bit de signo del resultado (activación de Fo). Esto último sucede en la tercera iteración. El tiempo de ejecución del programa es, por lo tanto: TEJECUCIÓN = Nº ciclos x TCICLO = 120 x (1 GHz )-1 = 120 x 10-9 s = 120 ns Pág. 6 UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones FUNDAMENTOS DE COMPUTADORES (Problemas. Examen Final. Tarde) APELLIDOS Y NOMBRE: Nº DE EXPEDIENTE: GRUPO: CONVOCATORIA: 18 de Junio de 2007 PROBLEMA 3 (2.5 puntos) En un microprocesador Indalo 3.0 se está ejecutando la siguiente secuencia de instrucciones: ORG 1000H MOV A,0B5H ADD A,9CH JC 1054H RET Antes de iniciar el programa se tienen los siguientes contenidos en algunos registros y memoria: SP = 0FFF5H PC = 1000H POSICIÓN CONTENIDO 0006H 0007H 0008H 0009H 000AH 000BH 000CH 000DH 000EH 000FH 00H 23H 0A2H 08H 21H 32H 19H 00H 00H 0FFH Se pide: a) Valor de los flags al terminar de ejecutar la instrucción ADD A,9CH. ¿Que significado tienen en caso de trabajar con enteros sin signo y en el caso de enteros con signo? (0.5 puntos) b) Durante la ejecución de la instrucción JC 1054H se produce una interrupción hardware de vector 5. Obtener el contenido de la pila, así como los valores de PC y SP justo antes de empezar a ejecutar la rutina de atención a la interrupción. (1 punto) c) Repetir el apartado anterior, pero suponiendo que el valor que se carga en el acumulador es 4, es decir, MOV A,4. (1 punto) Pág. 7 UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones FUNDAMENTOS DE COMPUTADORES (Problemas. Examen Final. Tarde) APELLIDOS Y NOMBRE: Nº DE EXPEDIENTE: GRUPO: CONVOCATORIA: 18 de Junio de 2007 PROBLEMA 3: Solución (1) Apartado a) Al ejecutar la instrucción ADD A,9CH el valor de A es 0B5H, por lo tanto, la suma será: 0B5H + 9CH = 51H quedando los flags: Fc = 1, Fp = 0, Fo = 1, Fs = 0 y Fz = 0 Fc = 1 Indica desbordamiento en enteros sin signo Fo = 1 Indica desbordamiento en enteros con signo Apartado b) Como hemos visto en el apartado anterior, el flag Fc se activa, por lo tanto, se cumple la condición de salto. Cuando se produce la interrupción, el microprocesador guarda la dirección de retorno en la pila. Puesto que se cumple la condición de salto, la dirección que se guarda es la de salto, esto es 1054H, con lo que la pila queda como sigue: POSICIÓN CONTENIDO 0FFF3H 54H 0FFF4H 10H En cuanto a los registros, SP = 0FFF3H y el contenido del PC será la dirección donde empieza la rutina de atención a la interrupción. Dicha dirección la obtenemos de la tabla de contenidos de memoria del enunciado: V*2 = 0AH → (000AH) = 21H V*2 + 1 = 0BH → (000BH) = 32H Por lo tanto: PC = 3221H Pág. 8 UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones FUNDAMENTOS DE COMPUTADORES (Problemas. Examen Final. Tarde) APELLIDOS Y NOMBRE: Nº DE EXPEDIENTE: GRUPO: CONVOCATORIA: 18 de Junio de 2007 PROBLEMA 3: Solución (y 2) l Apartado c) Con el nuevo valor de A = 4 no se activa el flag de carry, por lo tanto, no se cump e la condición de salto y la dirección de retorno es la de la posición que contiene la instrucción RET, que es 1006H. POSICIÓN CONTENIDO 0FFF3H 06H 0FFF4H 10H Los valores de los registros SP y el PC no cambian con respecto al apartado anterior. Pág. 9 FC - Junio 2007 - Teor?a - Soluciones.pdf UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones FUNDAMENTOS DE COMPUTADORES (Teoría. Examen Final. Mañana) CONVOCATORIA: 18 de Junio de 2007 TEST (2.5 puntos) En las siguientes preguntas de tipo test, sólo existe una respuesta correcta. Cada pregunta tiene un valor de 0,25 puntos. Cada respuesta incorrecta descuenta 0,1 puntos. La pregunta que deje en blanco no sumará ni restará puntos. Notas: · Se debe poner una X sobre la letra de la tabla "SOLUCIÓN" (que encontrará en la última hoja) correspondiente a la respuesta correcta. · La tabla "CALIFICACIÓN" no deberá utilizarla, es para su posterior calificación. · No se tendrán en cuenta las respuestas que no se encuentren en dicha tabla "SOLUCIÓN" 1) En la ejecución de la instrucción OUT C,A, ¿qué microórden no participa?: a) sala. b) salc. c) io. d) **cka. 2) Después de una instrucción CMP A,B, los flags han quedado de la siguiente forma: Fc = 0, Fs =1, Fo =1 y Fz = 0. En estas condiciones, podemos decir: a) En enteros sin signo se ha producido desbordamiento y A > B . b) En enteros sin signo no ha habido desbordamiento y A < B. c) **En enteros con signo se ha producido desbordamiento y A > B. d) En enteros con signo se ha producido desbordamiento y A< B. 3) Para ejecutar la instrucción JMP BC, ¿qué secuencia de operaciones básicas se necesita?: a) **Fnoinc, It16. b) F, F, Fnoinc, It16. c) F, F, F, It16. d) F, It16. 4) De la instrucción MOV A,(X+2) podemos decir que: a) Guarda el acumulador en la posición de memoria indicada por (X+2). b) El valor de X se ve modificado por la suma (X+2). c) **Carga en el acumulador el dato que está en la posición de memoria apuntada por (X+2). d) Ninguna de las anteriores respuestas es cierta. 5) Dado el siguiente fragmento de código, almacenado a partir de la posición de memoria 2000H, AND A, A JNC 2100H ¿cuál es el valor del PC después de ejecutar la instrucción de salto condicional?: a) 2004H. b) 2003H. c) **2100H. d) 2002H. Pág. 1 UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones FUNDAMENTOS DE COMPUTADORES (Teoría. Examen Final. Mañana) CONVOCATORIA: 18 de Junio de 2007 TEST (continuación) 6) Después de ejecutar la instrucción XOR A, A... a) El registro A vale 0, y los flags de carry y de overflow se activan. b) A no modifica su valor, y el flag de signo vale 1 o cero. c) El flag de carry se pone a uno y el flag de cero se activa. d) **A vale 0, y los flags de carry y de overflow se desactivan. 7) En la CPU INDALO 3.0 ... a) **... la pila crece hacia posiciones de memoria decrecientes. b) ... el final de pila está controlado por el contenido del registro X. c) ... la pila se direcciona mediante direccionamiento absoluto. d) ... la pila crece hacia posiciones de memoria crecientes 8) El contador de programa del Indalo 3.0 es un registro que: a) Se incrementa siempre al final de cada ciclo de fetch. b) **Guarda la dirección de la siguiente instrucción a ejecutar al finalizar la ejecución de la instrucción en curso. c) Se puede modificar con la instrucción MOV PC, NUEVO_VALOR. d) Puede decrementarse con la instrucción DEC. 9) En el Indalo 3.0: a) **La interrupción hardware presenta un ciclo de máquina específico. b) Sólo se pueden ejecutar interrupciones hardware. c) La microórden inta la genera el microprocesador para rechazar la interrupción. d) Existe una pila en la que se almacenan los avisos de interrupción según van apareciendo. 10) Siempre que se accede a memoria: a) Se ejecuta una operación R. b) Se va a ejecutar un acceso DMA. c) Se ejecuta un ciclo de Fetch. d) **Ninguna de las anteriores respuestas es correcta. Pág. 2 UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones FUNDAMENTOS DE COMPUTADORES (Teoría. Examen Final. Mañana) APELLIDOS Y NOMBRE: Nº DE EXPEDIENTE: GRUPO: CONVOCATORIA: 18 de Junio de 2007 TEST: Solución (y 1) SOLUCIÓN 1 2 3 4 5 6 7 8 9 10 a a a a a a a a a a b b b b b b b b b b c c c c c c c c c c d d d d d d d d d d • La respuesta correcta se indicará tachando la letra correspondiente con una X. • Para anular una respuesta dada, se rodeará con una circunferencia ⊗, de modo que se entenderá: Respuesta dada por el alumno Respuesta anulada por el alumno CALIFICACIÓN Correctas x 0,25 = Erróneas x (- 0,1) = - Total Pág. 3 UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones FUNDAMENTOS DE COMPUTADORES (Teoría. Examen Final. Tarde) CONVOCATORIA: 18 de Junio de 2007 TEST (2.5 puntos) En las siguientes preguntas de tipo test, sólo existe una respuesta correcta. Cada pregunta tiene un valor de 0,25 puntos. Cada respuesta incorrecta descuenta 0,1 puntos. La pregunta que deje en blanco no sumará ni restará puntos. Notas: · Se debe poner una X sobre la letra de la tabla "SOLUCIÓN" (que encontrará en la última hoja) correspondiente a la respuesta correcta. · La tabla "CALIFICACIÓN" no deberá utilizarla, es para su posterior calificación. · No se tendrán en cuenta las respuestas que no se encuentren en dicha tabla "SOLUCIÓN" 1) En la ejecución de la instrucción IN A,C, ¿qué microórden no participa?: a) **sala. b) salc. c) io. d) cka. 2) Del Indalo 3.0 podemos decir que: a) Los puertos se direccionan con los dieciséis bits del registro BC. b) En la instrucción IN A,C el destino es el puerto. c) **La interrupción hardware genera un tipo exclusivo de ciclo de máquina. d) Las instrucciones CALL addr y JMP addr son exactamente iguales. 3) Para ejecutar la instrucción JMP addr, ¿qué secuencia de operaciones básicas se necesita?: a) Fnoinc, It16. b) **F, F, Fnoinc, It16. c) F, F, F, It16. d) F, It16. 4) Durante una transferencia de DMA: a) Si se produce una interrupción hardware, será atendida inmediatamente. b) La CPU puede interrumpir la transferencia según el valor de los flags. c) La CPU mantiene activada la señal HOLD hasta que finalice la transferencia. d) **El control de los buses no lo tiene la CPU. 5) Dado el siguiente fragmento de código, almacenado a partir de la posición de memoria 1000H, XOR A, A JO 1100H ¿cuál es el valor del PC después de ejecutar la instrucción de salto condicional?: a) **1003H. b) 1100H. c) 1004H. d) 1002H. Pág. 1 UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones FUNDAMENTOS DE COMPUTADORES (Teoría. Examen Final. Tarde) CONVOCATORIA: 18 de Junio de 2007 TEST (continuación) 6) La ejecución de la instrucción AND A, A ... a) Pone los 8 bits de A, y el flag Fz a cero. b) **Deja A con el mismo valor que tenía, y los flags de carry y de overflow a 0. c) Pone el valor 0FFH en A, y los flags de carry y de overflow a 0. d) Pone en A el valor doble del que había en un principio. 7) Las instrucciones que introducen datos en la pila dejan, al terminar, el puntero de pila ... a) ... incrementado en dos unidades. b) ... incrementado en una unidad (a diferencia de las instrucciones que guardan direcciones en la pila, que lo dejan incrementado en dos unidades). c) ... decrementado en una unidad. d) **... decrementado en dos unidades. 8) Los ciclos de Fetch del Indalo 3.0: a) Pueden ser de lectura y de escritura. b) Son lecturas en memoria y lecturas en periféricos c) **Son lecturas de instrucciones ensambladas en memoria. d) No son utilizados por algunas instrucciones. 9) En una instrucción MOV del Indalo 3.0: a) Es posible realizar una transferencia de 8 bits a través de ABUS. b) Sus operandos nunca pueden ser dos registros. c) **Uno de sus operandos siempre es un registro. d) El registro destino puede ser el PC. 10) La instrucción INT 03FH: a) Es una interrupción hardware. b) Condiciona su ejecución al estado de la máscara de interrupción. c) **Efectúa una lectura en las direcciones 0007EH y 0007FH. d) Equivale a un salto incondicional. Pág. 2 UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones FUNDAMENTOS DE COMPUTADORES (Teoría. Examen Final. Tarde) APELLIDOS Y NOMBRE: Nº DE EXPEDIENTE: GRUPO: CONVOCATORIA: 18 de Junio de 2007 TEST: Solución (y 1) SOLUCIÓN 1 2 3 4 5 6 7 8 9 10 a a a a a a a a a a b b b b b b b b b b c c c c c c c c c c d d d d d d d d d d • La respuesta correcta se indicará tachando la letra correspondiente con una X. • Para anular una respuesta dada, se rodeará con una circunferencia ⊗, de modo que se entenderá: Respuesta dada por el alumno Respuesta anulada por el alumno CALIFICACIÓN Correctas x 0,25 = Erróneas x (- 0,1) = - Total Pág. 3 FC - Junio 2008 - Problemas - Soluciones.pdf UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones FUNDAMENTOS DE COMPUTADORES (Problemas. Examen Final. Mañana) APELLIDOS Y NOMBRE: Nº DE EXPEDIENTE: GRUPO: CONVOCATORIA: 16 de Junio de 2008 Pág. 1 PROBLEMA 1 (2.5 puntos) Rellenar la tabla siguiente indicando en cada caso la instrucción que se ejecuta, las microinstrucciones y microórdenes necesarias para ello, así como las operaciones básicas. Completar también los espacios en blanco de las columnas ABUS y DBUS. Microinstrucciones Microórdenes Ops. básicas Instrucciones ABUS DBUS PC → ABUS 3000 H (ABUS) → DBUS DBUS → CO PC++ 0 → Fc B → DBUS A-DBUS-Fc → A salpc mem, rd ckco reg1, ckpcl, ckpch salpc mem, rd 05H ckdirl reg1, ckpcl, ckpch reg1,reg0,ckspl, cksph salsp salpch mem, wr reg1,reg0,ckspl, cksph salsp salpcl mem, wr reg0, ckdirl, ckdirh saldir mem, rd reg0, ckpcl reg1, ckdirl, ckdirh saldir mem, rd reg0, ckpch NOTA: Téngase en cuenta que la parcelación de las columnas no es completa, por lo que pueden estar sujetas a nuevas subdivisiones durante la realización del ejercicio. Háganse todas aquellas que se consideren necesarias. id1009171 pdfMachine by Broadgun Software - a great PDF writer! - a great PDF creator! - http://www.pdfmachine.com http://www.broadgun.com UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones FUNDAMENTOS DE COMPUTADORES (Problemas. Examen Final. Mañana) APELLIDOS Y NOMBRE: Nº DE EXPEDIENTE: GRUPO: CONVOCATORIA: 16 de Junio de 2008 Pág. 2 PROBLEMA 1: Solución (y 1) Microinstrucciones Microórdenes Ops. básicas Instrucciones ABUS DBUS PC → ABUS salpc 3000 H (ABUS) → DBUS mem, rd DBUS → CO ckco 0F2H PC++ reg1,ckpcl,ckpch 0 → Fc quitfc Fflag B → DBUS salb A-DBUS-Fc → A alu3, alu1, alu0, ckfl, ckfc, cka Italu SUB A,B PC → ABUS salpc 3001H (ABUS) → DBUS mem, rd DBUS → CO ckco 10H PC++ reg1, ckpcl, ckpch F PC → ABUS salpc (ABUS) → DBUS mem, rd 05H1 DBUS → DIRL ckdirl PC++ reg1, ckpcl, ckpch F SP-- reg1,reg0,ckspl, cksph Iid16 SP → ABUS salsp PCH → DBUS salpch 30H2 DBUS → (ABUS) mem, wr W SP-- reg1,reg0,ckspl, cksph Iid16 SP → ABUS salsp PCL → DBUS salpcl DBUS → (ABUS) mem, wr W 2*DIRL → DIR reg0, ckdirl, ckdirh I2dirl DIR → ABUS saldir 000AH3 (ABUS) → DBUS mem, rd DBUS → PCL reg0, ckpcl R DIR++ reg1, ckdirl, ckdirh Iid16 DIR → ABUS saldir (ABUS) → DBUS mem, rd DBUS → PCH reg0, ckpch R INT 05H 1 Vector de interrupción. 2 Parte alta de la dirección de retorno. 3 Parte baja de la entrada de la tabla de vectores correspondiente a la interrupción de vector 05H. UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones FUNDAMENTOS DE COMPUTADORES (Problemas. Examen Final. Mañana) APELLIDOS Y NOMBRE: Nº DE EXPEDIENTE: GRUPO: CONVOCATORIA: 16 de Junio de 2008 Pág. 3 PROBLEMA 2 (2.5 puntos) Se dispone de la siguiente subrutina (subr), la cual trabaja sobre la información almacenada en una tabla de datos (tabla). tabla: DB 2CH,0B7H,70H,69H,34H,00H ... subr: MOV X,tabla MOV C,70H bucle: MOV A,(X) CMP A,C JZ final INC X AND A,0 CMP A,(X) JZ final JMP bucle final: RET a) Ensamblar la subrutina suponiendo que ésta se encuentra almacenada en memoria a partir de la posición 1000H y que los datos de la tabla que maneja comienzan en 0800H. Haga constar el resultado en la tabla siguiente, utilizando una fila para cada línea de programa a partir de la primera instrucción (MOV X,tabla) e indicando, además, la posición donde comienza. (1 punto) INSTRUCCIÓN DIRECCIÓN CÓDIGO MÁQUINA MOV X,tabla 1000H MOV C,70H MOV A,(X) CMP A,C JZ final INC X AND A,0 CMP A,(X) JZ final JMP bucle RET UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones FUNDAMENTOS DE COMPUTADORES (Problemas. Examen Final. Mañana) APELLIDOS Y NOMBRE: Nº DE EXPEDIENTE: GRUPO: CONVOCATORIA: 16 de Junio de 2008 Pág. 4 PROBLEMA 2 (continuación) b) Realizar un seguimiento de dicha subrutina sobre la siguiente tabla, indicando en ella el número de iteraciones que realiza el programa y, para cada una de ellas, especificando el número de ciclos de cada instrucción que se ejecute. En la última columna de la derecha, deberá anotarse el total de ciclos que utiliza cada instrucción considerando todas las iteraciones indicadas. En la casilla recuadrada del final de la tabla debe figurar la suma de las cantidades que se encuentren encima suyo, es decir, la totalidad de los ciclos que requiere la subrutina para ejecutarse. (1.5 puntos) Iterac. 1 Total subr: MOV X,tabla MOV C,70H bucle: MOV A,(X) CMP A,C JZ final INC X AND A,0 CMP A,(X) JZ final JMP bucle final: RET TOTAL UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones FUNDAMENTOS DE COMPUTADORES (Problemas. Examen Final. Mañana) APELLIDOS Y NOMBRE: Nº DE EXPEDIENTE: GRUPO: CONVOCATORIA: 16 de Junio de 2008 Pág. 5 PROBLEMA 2: Solución (1) Apartado a) INSTRUCCIÓN DIRECCIÓN CÓDIGO MÁQUINA MOV X,tabla 1000H 56H, 00H, 08H MOV C,70H 1003H 7CH, 70H MOV A,(X) 1005H 6EH, 00H CMP A,C 1007H 83H JZ final 1008H 1BH, 0AH INC X 100AH 35H AND A,0 100BH 9CH, 00H CMP A,(X) 100DH 86H, 00H JZ final 100FH 1BH, 03H JMP bucle 1011H 12H, 05H, 10H RET 1014H 08H NOTA: Para aquellos puntos donde figuren etiquetas y/o saltos condicionales, téngase en cuenta que tabla=0800H, final=1014H y bucle=1005H. Apartado b) Mediante una estructura de bucle, la subrutina recorre con ayuda del registro X una lista de datos almacenados en memoria desde la posición etiquetada como �tabla� y compara el contenido de esas posiciones con el del registro C, cuyo valor siempre es 70H. Si se da esa coincidencia de valores, se procede a salir del bucle y a dar por finalizada la subrutina. También se comprueba dentro del bucle si X llega al final de la lista de datos (00H), aunque esto último nunca produce, pues en la tercera iteración hay coincidencia con el dato 70H, saliendo así del bucle. Según lo expuesto, la tabla pedida queda como sigue: UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones FUNDAMENTOS DE COMPUTADORES (Problemas. Examen Final. Mañana) APELLIDOS Y NOMBRE: Nº DE EXPEDIENTE: GRUPO: CONVOCATORIA: 16 de Junio de 2008 Pág. 6 PROBLEMA 2: Solución (y 2) Iterac. 1 Iterac. 2 Iterac. 3 Total subr: MOV X,tabla 15 15 MOV C,70H 10 10 bucle: MOV A,(X) 13 13 13 39 CMP A,C 7 7 7 21 JZ final 7 7 12 26 INC X 7 7 14 AND A,0 10 10 20 CMP A,(X) 13 13 26 JZ final 7 7 14 JMP bucle 15 15 30 final: RET 13 13 TOTAL 228 UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones FUNDAMENTOS DE COMPUTADORES (Problemas. Examen Final. Mañana) APELLIDOS Y NOMBRE: Nº DE EXPEDIENTE: GRUPO: CONVOCATORIA: 16 de Junio de 2008 Pág. 7 PROBLEMA 3 (2.5 puntos) Se dispone de la siguiente subrutina para el INDALO 3.0: subr: PUSH BC PUSH X MOV X,2000H MOV C,30H bucle: MOV B,(X) IN A,C CMP A,B JZ final INC X JMP bucle final: POP X POP BC RET También se conoce el contenido de algunos registros, posiciones de memoria y puertos de E/S antes de empezar a ejecutar ese código: Puerto de E/S Contenido Dirección Contenido Registro Contenido 10H 34H 0038H 33H PC 1000H 20H 0EFH 0039H 22H SP 0500H 2AH 0ABH 0040H 2CH BC 2030H 2FH 00H 0041H 1FH X 1C2DH 30H 25H 0042H 49H 34H 10H � � 3FH 22H 2000H 0DDH 2001H 0EH 2002H 25H 2003H 00H 2004H 52H Suponiendo que las interrupciones están habilitadas, responda breve y razonadamente a las siguientes preguntas: a) ¿Cuál es el contenido del registro SP después de ejecutar la instrucción PUSH X? ¿Qué contendrá la celda de memoria señalada por ese registro? (0.5 puntos) UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones FUNDAMENTOS DE COMPUTADORES (Problemas. Examen Final. Mañana) APELLIDOS Y NOMBRE: Nº DE EXPEDIENTE: GRUPO: CONVOCATORIA: 16 de Junio de 2008 Pág. 8 PROBLEMA 3 (continuación) b) Con los datos del programa, calcule dónde empieza la rutina de servicio de la interrupción 20H. (0.5 puntos) c) En la primera vez que se ejecuta el bucle que incluye la subrutina se produce la interrupción 20H mientras se está procesando la instrucción JZ final, ¿cuál es el valor de SP y PC cuando vaya a leerse la primera instrucción de la rutina de servicio de esa interrupción? ¿Cuál es la dirección de retorno que se ha guardado en la pila? (0.8 puntos) d) ¿Qué valores contendrán los registros A, B, C y SP cuando se termine de ejecutar la instrucción RET? ¿Cuántas veces se ejecuta el bucle? (0.7 puntos) UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones FUNDAMENTOS DE COMPUTADORES (Problemas. Examen Final. Mañana) APELLIDOS Y NOMBRE: Nº DE EXPEDIENTE: GRUPO: CONVOCATORIA: 16 de Junio de 2008 Pág. 9 PROBLEMA 3: Solución (1) Mediante una estructura de bucle, la subrutina recorre una lista de datos almacenados en memoria desde la posición 2000H con ayuda del registro X y compara el contenido de esas posiciones con el del puerto de E/S de dirección 30H, cuyo valor siempre se vuelca sobre el acumulador A. Si se da esa coincidencia de valores, se procede a salir del bucle, dejar los registros X Y BC como estaban antes de comenzar la ejecución de la subrutina y a retornar al punto del programa donde fue invocada. En caso contrario, se incrementa X para avanzar por la lista de datos y realizar nuevas comparaciones. Dado que el contenido del puerto 30H y el de la celda de dirección 2002H son iguales (25H), en la tercera iteración del bucle se produce la coincidencia comentada. Apartado a) Las dos primeras instrucciones PUSH de la subrutina guardan en pila el contenido inicial de los registros BC y X, que son los dados en el enunciado (BC = 2030H y X = 1C2DH). Teniendo en cuenta, además, que inicialmente SP = 0500H, la pila y este último registro quedarán de la siguiente manera: Dirección Contenido Comentario SP = 04FCH 2DH 04FDH 1CH Contenido de X 04FEH 30H 04FFH 20H Contenido de BC 0500H ? Apartado b) 2*vector = 2*20H = 40H = 0040H addrL = (0040H) = 2CH 2*vector + 1 = 0041H addrH = (0041H) = 1FH addr = 1F2CH UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones FUNDAMENTOS DE COMPUTADORES (Problemas. Examen Final. Mañana) APELLIDOS Y NOMBRE: Nº DE EXPEDIENTE: GRUPO: CONVOCATORIA: 16 de Junio de 2008 Pág. 10 PROBLEMA 3: Solución (2) Apartado c) La interrupción no se atiende hasta completar la ejecución de la instrucción en curso. Puesto que estamos en la primera iteración del bucle, no hay coincidencia en la comparación realizada, por lo que el salto condicional (JZ final) no se produce. En consecuencia, después de ejecutar esa instrucción, el registro PC apunta a la siguiente, que es INC X y que comienza en la posición 100DH (téngase en cuenta que la primera instrucción de la subrutina comienza donde esté apuntando el PC antes de iniciarse la ejecución de dicha subrutina, es decir, 1000H según el enunciado). Es entonces ésa la dirección de retorno que debe guardarse en la pila antes de invocar a la rutina de servicio de la interrupción. Después de eso, se carga en PC la dirección de inicio de dicha rutina, la cual se ha calculado en el apartado previo. Así: Dirección Contenido Comentario SP = 04FAH 0DH 04FBH 10H Dirección de retorno (Contenido de PC) 04FCH 2DH 04FDH 1CH Contenido de X 04FEH 30H 04FFH 20H Contenido de BC 0500H ? PC = addr = 1F2CH Apartado d) Antes de RET, previamente se han ejecutado las dos instrucciones POP, por lo que los registros X y BC contendrán lo que tenían antes de empezar la ejecución de la subrutina. Así: B = 20H C = 30H Por otro lado, RET restaura la dirección de retorno de la subrutina. Eso implica incrementar dos veces el valor de SP después de ejecutar las instrucciones POP, luego: SP = 0502H En cuanto al registro A, siempre contiene el dato almacenado en el puerto de E/S de dirección 30H para cada una de las comparaciones (téngase en cuenta lo comentado al principio de esta solución): A = 25H Por último, y como ya se ha dicho al principio, el bucle se ejecuta tres veces. UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones FUNDAMENTOS DE COMPUTADORES (Problemas. Examen Final. Tarde) APELLIDOS Y NOMBRE: Nº DE EXPEDIENTE: GRUPO: CONVOCATORIA: 16 de Junio de 2008 Pág. 1 PROBLEMA 1 (2.5 puntos) Rellenar la tabla adjunta indicando en cada caso la instrucción que se ejecuta, las microinstrucciones y microórdenes necesarias para ello, así como las operaciones básicas. Completar también los espacios en blanco de las columnas ABUS y DBUS. Instrucciones µInstrucciones µÓrdenes Ops. básicas ABUS DBUS PC → ABUS 2000H (ABUS) →DBUS DBUS → CO 7EH PC++ PC → ABUS (ABUS) →DBUS DBUS → DIRL 00H PC++ X → ABUS ABUS+DIRL→ABUS (ABUS) → DBUS DBUS → C PC → ABUS (ABUS) →DBUS DBUS → CO PC++ 0 → Fc alu3,alu0,cka,ckfl,ckfc PC → ABUS (ABUS) → DBUS DBUS → CO PC++ NOTA: Téngase en cuenta que la parcelación de las columnas no es completa, por lo que pueden estar sujetas a nuevas subdivisiones durante la realización del ejercicio. Háganse todas aquellas que se consideren necesarias. UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones FUNDAMENTOS DE COMPUTADORES (Problemas. Examen Final. Tarde) APELLIDOS Y NOMBRE: Nº DE EXPEDIENTE: GRUPO: CONVOCATORIA: 16 de Junio de 2008 Pág. 2 PROBLEMA 1: Solución (y 1) Instrucciones µInstrucciones µÓrdenes Ops. básicas ABUS DBUS PC → ABUS 2000H (ABUS) →DBUS DBUS → CO 7EH PC++ F PC → ABUS (ABUS) →DBUS DBUS → DIRL 2001H 00H PC++ F X → ABUS ABUS+DIRL→ABUS (ABUS) → DBUS MOV C,(X) DBUS → C Ralu PC → ABUS 2002H (ABUS) →DBUS DBUS → CO E0H PC++ 0 → Fc Fflag SHL A A< rc <→ A alu3,alu0,cka,ckfl,ckfc Italu PC → ABUS (ABUS) → DBUS DBUS → CO 00H NOP PC++ F UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones FUNDAMENTOS DE COMPUTADORES (Problemas. Examen Final. Tarde) APELLIDOS Y NOMBRE: Nº DE EXPEDIENTE: GRUPO: CONVOCATORIA: 16 de Junio de 2008 Pág. 3 PROBLEMA 2 (2.5 puntos) Un microprocesador basado en el Indalo 3.0, está ejecutando el siguiente fragmento de programa ORG 2000H MOV B,(2500H) MOV C,(2501H) XOR A,A JZ ETQ Además, se conocen los siguientes datos iniciales: PC = 2000H, SP = 0FF00H y los contenidos de las siguientes posiciones de memoria Posición Contenido 0005H 23H 0006H 10H 0007H 21H 0008H 30H ------------- -------------- 2007H 1BH 2008H 05H 2009H 9DH En estas condiciones, se pide: a) Determinar el espacio que ocupa en memoria el fragmento de programa. ¿Cuál es la dirección correspondiente a la etiqueta ETQ? ¿Cual sería la instrucción que habría a continuación del fragmento de programa? (0.8 puntos) b) Cuando se está ejecutando la instrucción JZ ETQ se produce una interrupción con vector 03H. Indicar el contenido de la pila antes de leer el código de operación de la primera instrucción de la rutina de atención a la interrupción, así como los valores de PC y SP en ese momento. (0.8 puntos) c) Escribir una tabla en la que se indiquen los ciclos de máquina que se ejecutan desde que se recibe la interrupción hasta justo antes de leer la primera instrucción de la rutina de atención. Especificar el tipo de cada ciclo, así como los contenidos de los buses durante cada uno de ellos. (0.9 puntos) UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones FUNDAMENTOS DE COMPUTADORES (Problemas. Examen Final. Tarde) APELLIDOS Y NOMBRE: Nº DE EXPEDIENTE: GRUPO: CONVOCATORIA: 16 de Junio de 2008 Pág. 4 PROBLEMA 2: Solución (1) Apartado a) Instrucción Nº Bytes MOV B,(2500H) 3 MOV C,(2501H) 3 XOR A,A 1 JZ ETQ 2 Por lo tanto, este fragmento de programa ocupa: 9 Bytes Según el problema, la primera instrucción empieza en la dirección 2000H, por lo tanto, la instrucción JZ ETQ ocupará las posiciones 2007H y 2008H y, según la tabla de memoria: (2007H)= 1BH Código de operación de la instrucción JZ (2008H) = 05H Cantidad que hay que sumar al PC para obtener la dirección de salto Dirección = PC + 05H = 2009H + 05H = 200EH ETQ = 200EH El contenido de la siguiente posición de memoria es 9DH. Este es el código de operación de la siguiente instrucción: 9DH = 10011101 Código 10011op8 Esto se corresponde con la instrucción AND A,op8 donde op8 = 101 = (BC). Así, la instrucción es: AND A, (BC) UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones FUNDAMENTOS DE COMPUTADORES (Problemas. Examen Final. Tarde) APELLIDOS Y NOMBRE: Nº DE EXPEDIENTE: GRUPO: CONVOCATORIA: 16 de Junio de 2008 Pág. 5 PROBLEMA 2: Solución (y 2) Apartado b) Después de la ejecución de XOR A,A, el resultado es 0, lo que implica que FZ= 1, luego se cumple la condición de salto y, así, al terminar de ejecutarse la instrucción, el contenido del PC será: PC = 200EH Esta es la dirección que se guardará en la pila, quedando como sigue: Dirección Contenido 0FEFEH 0EH 0FEFFH 20H 0FF00H ? donde el puntero SP toma el valor: SP = 0FEFEH En el PC se cargará la dirección donde empieza la rutina de atención: V*2 = 06H De la tabla de memoria: (0006H) = 10H V*2+1 = 07H (0007H) = 21H Por lo tanto: PC = 2110H Apartado c) TIPO ABUS DBUS RI ------------ 03H W 0FEFFH 20H W 0FEFEH 0EH R 0006H 10H R 0007H 21H UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones FUNDAMENTOS DE COMPUTADORES (Problemas. Examen Final. Tarde) APELLIDOS Y NOMBRE: Nº DE EXPEDIENTE: GRUPO: CONVOCATORIA: 16 de Junio de 2008 Pág. 6 PROBLEMA 3 (2.5 puntos) El siguiente programa implementa un reloj en tiempo real. El funcionamiento es el siguiente: A partir de un cristal de cuarzo, se genera una frecuencia que, a través de divisores se convierte en una señal de 1 Hz. Esta señal produce interrupciones cada segundo que actualizan los registros que contiene los minutos y los segundos. ORG 2000H XOR A,A MOV A,B CMP A,59 JZ ETQ1 INC B JMP FIN ETQ1: MOV B,0 MOV A,C CMP A,59 JZ ETQ2 INC C JMP FIN ETQ2: MOV C,0 FIN: HLT Sabiendo que la frecuencia de la CPU es de 100 MHz, se pide: a) Código máquina del programa. (0.8 puntos) b) Espacio que ocupa en memoria. (0.4 puntos) c) Analizar el programa. Indique qué registro almacena los segundos y cuál los minutos. (0.5 puntos) d) ¿Cuánto tiempo tarda en ejecutarse el programa en el caso de que B = 59? ¿Y en el caso de que B< 59? (0.8 puntos) UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones FUNDAMENTOS DE COMPUTADORES (Problemas. Examen Final. Tarde) APELLIDOS Y NOMBRE: Nº DE EXPEDIENTE: GRUPO: CONVOCATORIA: 16 de Junio de 2008 Pág. 7 PROBLEMA 3: Solución (1) DIRECCIÓN INSTRUCCIÓN CÓDIGO Nº DE CICLOS 2000H XOR A,A F9H 7 2001H MOV A,B 6AH 7 2002H CMP A,59 84H, 3BH 10 2004H JZ ETQ1 1BH, 04H 7/12 2006H INC B AAH 7 2007H JMP FIN 12H, 17H, 20H 15 200AH = ETQ1 MOV B,0 74H, 00H 10 200CH MOV A,C 6BH 7 200DH CMP A,59 84H, 3BH 10 200FH JZ ETQ2 1BH, 04H 7/12 2011H INC C ABH 7 2012H JMP FIN 12H, 17H, 20H 15 2015H = ETQ2 MOV C,0 7CH, 00H 10 2017H = FIN HLT 0EH 3 Apartado a) De la tabla anterior, y viendo los bytes que ocupa cada instrucción, podemos deducir que el espacio que ocupa el programa en memoria es: 24 Bytes Apartado b) Como se indica en el enunciado, se trata de un reloj en tiempo real, por lo tanto, el primer registro en actualizarse será el de los segundos, y después el de los minutos. Siguiendo la secuencia del programa, vemos que, en primer lugar, se comprueba si B ha alcanzado el valor 59. Si no es así, se incrementa este registro y se sale del programa hasta la siguiente interrupción. Cuando B = 59, se habrá completado un minuto, con lo cual se pasará a actualizar el registro de los minutos de forma similar a como se ha hecho con el de los segundos (previamente se habrá puesto a cero el registro B). El programa termina cada vez que se actualiza el registro B o, si B = 59, cada vez que se actualiza el registro C. Entonces: B segundos C minutos UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones FUNDAMENTOS DE COMPUTADORES (Problemas. Examen Final. Tarde) APELLIDOS Y NOMBRE: Nº DE EXPEDIENTE: GRUPO: CONVOCATORIA: 16 de Junio de 2008 Pág. 8 PROBLEMA 3: Solución (2) Apartado c) Si B<59, se ejecutan las siguientes instrucciones: Instrucción Nº Ciclos XOR A,A 7 MOV A,B 7 CMP A,59 10 JZ ETQ1 7 INC B 7 JMP FIN 15 HLT 3 Todas las instrucciones se ejecutan una vez. El número total de ciclos de reloj será la suma de todos ellos, lo que da un total de 56 ciclos y el tiempo será: T = Nº Ciclos * Tiempo de ciclo = 56 * (1/100 MHz) = 56 * 10 -8 s = 0,56 * 10 -6 s = 0,56 µs Si B = 59, pueden ocurrir dos cosas: o Que C = 59 o no. Si C<59, se ejecutan las siguientes instrucciones: Instrucción Nº Ciclos XOR A,A 7 MOV A,B 7 CMP A,59 10 JZ ETQ1 12 MOV B,0 10 MOV A,C 7 CMP A,59 10 JZ ETQ2 7 INC C 7 JMP FIN 15 HLT 3 El número de ciclos es 95 y el tiempo es: T = 0,95 µs UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones FUNDAMENTOS DE COMPUTADORES (Problemas. Examen Final. Tarde) APELLIDOS Y NOMBRE: Nº DE EXPEDIENTE: GRUPO: CONVOCATORIA: 16 de Junio de 2008 Pág. 9 PROBLEMA 3: Solución (y 3) o Si C = 59, se ejecutan las siguientes instrucciones Instrucción Nº Ciclos XOR A,A 7 MOV A,B 7 CMP A,59 10 JZ ETQ1 12 MOV B,0 10 MOV A,C 7 CMP A,59 10 JZ ETQ2 12 MOV C,0 10 HLT 3 El número total de ciclos es de 88 y el tiempo será: T = 0,88 µs FC - Junio 2008 - Teor?a - Soluciones.pdf UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones FUNDAMENTOS DE COMPUTADORES (Teoría. Examen Final. Mañana) CONVOCATORIA: 16 de Junio de 2008 Pág. 1 TEST (2.5 puntos) En las siguientes preguntas de tipo test, sólo existe una respuesta correcta. Cada pregunta tiene un valor de 0,25 puntos. Cada respuesta incorrecta descuenta 0,1 puntos. La pregunta que deje en blanco no sumará ni restará puntos. Notas: · Se debe poner una X sobre la letra de la tabla "SOLUCIÓN" (que encontrará en la última hoja) correspondiente a la respuesta correcta. · La tabla "CALIFICACIÓN" no deberá utilizarla, es para su posterior calificación. · No se tendrán en cuenta las respuestas que no se encuentren en dicha tabla "SOLUCIÓN" 1) La instrucción CALL addr: a) Tiene el mismo tratamiento que la instrucción JMP addr. b) Utiliza la pila para guardar el registro de flags. c) Se distingue de JMP addr en que guarda en la pila el contenido de A. d) **Cuando se ejecuta la instrucción, se guarda el contenido del PC en la pila. 2) Después de ejecutar la instrucción OR A,A ... a) Quedan los 8 bits de A a uno y el flag FZ a 0. b) **A queda inalterado y los flags FC y FO a 0. c) Quedan los 8 bits de A a uno y los flags FC y FO a 0. d) Quedan los 8 bits de A a cero y el flag FZ a 1. 3) En el Indalo 3.0: a) **La interrupción hardware presenta un ciclo de máquina específico para leer el vector. b) Sólo existen interrupciones hardware. c) La microorden inta la genera el periférico para reconocer la interrupción. d) El vector es generado automáticamente por la CPU en respuesta a la interrupción producida. 4) De la memoria central de un ordenador podemos afirmar que: a) **Existe un decodificador externo común a todos los circuitos integrados de memoria y otro interno para cada circuito. b) Sólo existe el decodificador externo. c) Sólo existen los decodificadores internos. d) Los decodificadores internos sólo se incluyen en los circuitos de memoria RAM. 5) Después de ejecutar la instrucción CMP A,B, el registro de flags queda de la siguiente forma: Fc = 0, Fo = 1, Fz = 0, Fs = 1, Fp = 1. Podemos afirmar que, en enteros � a) � sin signo, A< B y no hay desbordamiento. b) � con signo, A< B y hay desbordamiento. c) � sin signo, A > B y hay desbordamiento. d) **� con signo, A > B y hay desbordamiento. id1086921 pdfMachine by Broadgun Software - a great PDF writer! - a great PDF creator! - http://www.pdfmachine.com http://www.broadgun.com UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones FUNDAMENTOS DE COMPUTADORES (Teoría. Examen Final. Mañana) CONVOCATORIA: 16 de Junio de 2008 Pág. 2 TEST (continuación) 6) Con relación a las microinstrucciones que en el INDALO 3.0 tienen como destino el registro DIR, puede afirmarse lo siguiente: a) **En la única en la que no se activan ambos relojes (dirl y dirh) simultáneamente, tampoco se activan ni reg0, ni reg1. b) Se activan ambos relojes simultáneamente en las microinstrucciones en las que reg1=1, y se activa sólo uno de ellos en las que reg1=0. c) Se activan ambos relojes simultáneamente en las microinstrucciones en las que reg0=0, y se activa sólo uno de ellos en las que reg0=1. d) Ninguna de las anteriores opciones es cierta. 7) Los saltos condicionales en el Indalo 3.0: a) Utilizan direccionamiento absoluto. b) Se manejan con instrucciones de tres bytes. c) **Tienen el rango de salto limitado. d) No incrementan el PC al leer rel8. 8) ¿En qué posiciones de memoria está almacenada la dirección de inicio de la rutina de servicio de la interrupción 2AH?: a) **0054H y 0055H. b) 0060H y 0061H. c) 002AH y 002BH. d) 2A00H y 2B00H. 9) En el Indalo 3.0, si la pila se ha inicializado a 0FFFFH, puede afirmarse que empezará a ocuparse desde: a) Esa misma dirección. b) **0FFFEH. c) 0000H. d) 0FFFDH. 10) De la ALU del Indalo 3.0 podemos decir que: a) En ella se ejecuta la suma en los direccionamientos indexados. b) Siempre ejecuta la operación suma sin carry. Para hacer la instrucción suma con carry hay que poner previamente FC = 1. c) **El registro A siempre figura en todas las operaciones aritméticas y lógicas. d) Ninguna de las anteriores respuestas es cierta. UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones FUNDAMENTOS DE COMPUTADORES (Teoría. Examen Final. Mañana) APELLIDOS Y NOMBRE: Nº DE EXPEDIENTE: GRUPO: CONVOCATORIA: 16 de Junio de 2008 Pág. 3 TEST: Solución (y 1) SOLUCIÓN 1 2 3 4 5 6 7 8 9 10 a a a a a a a a a a b b b b b b b b b b c c c c c c c c c c d d d d d d d d d d La respuesta correcta se indicará tachando la letra correspondiente con una X. Para anular una respuesta dada, se rodeará con una circunferencia , de modo que se entenderá: Respuesta dada por el alumno Respuesta anulada por el alumno CALIFICACIÓN Correctas x 0,25 = Erróneas x (- 0,1) = - Total UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones FUNDAMENTOS DE COMPUTADORES (Teoría. Examen Final. Tarde) CONVOCATORIA: 16 de Junio de 2008 Pág. 1 TEST (2.5 puntos) En las siguientes preguntas de tipo test, sólo existe una respuesta correcta. Cada pregunta tiene un valor de 0,25 puntos. Cada respuesta incorrecta descuenta 0,1 puntos. La pregunta que deje en blanco no sumará ni restará puntos. Notas: · Se debe poner una X sobre la letra de la tabla "SOLUCIÓN" (que encontrará en la última hoja) correspondiente a la respuesta correcta. · La tabla "CALIFICACIÓN" no deberá utilizarla, es para su posterior calificación. · No se tendrán en cuenta las respuestas que no se encuentren en dicha tabla "SOLUCIÓN" 1) En una instrucción MOV del Indalo 3.0: a) Pueden efectuarse transferencias entre dos posiciones de memoria diferentes. b) Sus operandos nunca pueden ser dos registros. c) **Uno de sus operandos siempre es un registro. d) El registro destino puede ser DIR. 2) Entre las características de una memoria central podemos citar: a) Tiene elementos móviles. b) Su modo de acceso es secuencial. c) La lectura es destructiva. d) **La escritura no requiere borrado previo. 3) Después de ejecutar la instrucción CMP A,B, los flags han quedado de la siguiente manera: FC = 1, FO = 1, FS = 0 y FZ = 0. En estas condiciones, podemos afirmar que: a) En enteros sin signo no hay desbordamiento y A > B. b) En enteros sin signo hay desbordamiento y A > B. c) **En enteros con signo hay desbordamiento y A < B. d) En enteros con signo hay desbordamiento y A > B. 4) La interrupción hardware: a) Siempre se atiende, sin tener en cuenta el valor del registro de flags. b) No genera ciclos de máquina. c) **Provoca un salto a una subrutina. d) Ninguna de las anteriores respuestas es correcta. 5) De una instrucción de salto incondicional podemos decir que siempre: a) **Ejecuta una operación FNOINC. b) Ejecuta tres ciclos de fetch. c) Consume los mismos ciclos de reloj, con independencia del modo de direccionamiento empleado. d) Ninguna de las anteriores respuestas es cierta. UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones FUNDAMENTOS DE COMPUTADORES (Teoría. Examen Final. Tarde) CONVOCATORIA: 16 de Junio de 2008 Pág. 2 TEST (continuación) 6) De la instrucción PUSH AF podemos decir que: a) Modifica el registro de flags. b) **Produce una operación de escritura en la pila. c) Durante su ejecución, aumenta el contenido del puntero de pila. d) Produce una operación de lectura en la pila. 7) Después de ejecutar las instrucciones PUSH BC y POP X en este mismo orden: a) El registro SP queda decrementado en dos unidades. b) El tamaño de la pila aumenta en dos bytes. c) **El resultado que se obtiene es el mismo que si se ejecuta la instrucción MOV X, BC. d) El registro SP queda incrementado en dos unidades. 8) De las instrucciones aritméticas de suma y resta podemos decir que: a) Efectúan una operación aritmética entre dos operandos, independientemente del tipo de los mismos. b) **Las operaciones se realizan entre un operando cualquiera de ocho bits y el acumulador. c) Siempre ocupan dos bytes en memoria. d) El espacio que ocupan en memoria no depende del tipo de operandos que utilicen. 9) La instrucción JZ 2518H: a) Para calcular la dirección de salto, suma una cantidad fija al registro X. b) **Utiliza direccionamiento relativo al contador de programa. c) Ocupa tres bytes en memoria. d) Siempre ejecuta dos ciclos de fetch. 10) En el Indalo 3.0: a) **La instrucción INT vector usa la operación Iid16. b) La instrucción JMP reg16 necesita tres ciclos de máquina para ser leída. c) Cuando se trae de memoria el valor rel8, se lleva directamente a PC. d) Todas las instrucciones utilizan como primera operación básica un fetch de tipo F. UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones FUNDAMENTOS DE COMPUTADORES (Teoría. Examen Final. Tarde) APELLIDOS Y NOMBRE: Nº DE EXPEDIENTE: GRUPO: CONVOCATORIA: 16 de Junio de 2008 Pág. 3 TEST: Solución (y 1) SOLUCIÓN 1 2 3 4 5 6 7 8 9 10 a a a a a a a a a a b b b b b b b b b b c c c c c c c c c c d d d d d d d d d d La respuesta correcta se indicará tachando la letra correspondiente con una X. Para anular una respuesta dada, se rodeará con una circunferencia , de modo que se entenderá: Respuesta dada por el alumno Respuesta anulada por el alumno CALIFICACIÓN Correctas x 0,25 = Erróneas x (- 0,1) = - Total FC_-_Descriptores_-_Parte_I.pdf UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Facultad-Escuela de Informática Departamento de Electrónica y Comunicaciones Pag.-1 Versión 1.0 28-02-2004 CAPÍTULO 1: ARQUITECTURA GENERAL Fig.1.1. Arquitectura de un ordenador según Von Neumann. Fig.1.2. Organigrama de bloques de un ordenador, con interfaces a periféricos. Fig.1.3. Esquema de una memoria principal de un ordenador. UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Facultad-Escuela de Informática Departamento de Electrónica y Comunicaciones Pag.-2 Versión 1.0 28-02-2004 Fig.1.4. Configuraciones de buses. Fig.1.5. Configuración de varios buses jerarquizados. UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Facultad-Escuela de Informática Departamento de Electrónica y Comunicaciones Pag.-3 Versión 1.0 28-02-2004 CAPÍTULO 2: MEMORIAS Fig.2.1. Memoria de acceso aleatorio con circuito de control y driver bidireccional. Fig.2.2. Estructura de memorias 2D y 3D. Fig.2.3. CIs de RAM estática y dinámica. UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Facultad-Escuela de Informática Departamento de Electrónica y Comunicaciones Pag.-4 Versión 1.0 28-02-2004 Fig.2.4. Incremento de la longitud de palabra. Fig.2.5. Incremento del número de palabras. Fig.2.6. Mapa de memoria y distribución de CIs UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Facultad-Escuela de Informática Departamento de Electrónica y Comunicaciones Pag.-5 Versión 1.0 28-02-2004 Fig.2.7. Incremento del número y tamaño de palabras. UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Facultad-Escuela de Informática Departamento de Electrónica y Comunicaciones Pag.-6 Versión 1.0 28-02-2004 Fig.2.8. Signos convencionales de los cronogramas. Fig.2.9. Cronograma de acceso a una memoria RAM estática. UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Facultad-Escuela de Informática Departamento de Electrónica y Comunicaciones Pag.-7 Versión 1.0 28-02-2004 Fig.2.10. Cronograma de acceso a una memoria ROM Fig.2.11. Señales generadas por la CPU para leer memoria. Fig.2.12. Acceso a la memoria con dos ciclos de espera. UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Facultad-Escuela de Informática Departamento de Electrónica y Comunicaciones Pag.-8 Versión 1.0 28-02-2004 Fig.2.13. Anticipación de direcciones. Fig.2.14. Configuración de memoria entrelazada. UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Facultad-Escuela de Informática Departamento de Electrónica y Comunicaciones Pag.-9 Versión 1.0 28-02-2004 Fig.2.15. Jerarquía de memorias. UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Facultad-Escuela de Informática Departamento de Electrónica y Comunicaciones Pag.-10 Versión 1.0 28-02-2004 CAPÍTULO 3: UNIDAD DE PROCESO Fig.3.1. Esquema del bloque funcional de una ALU. Fig.3.2. (a) Unidad de Proceso de una máquina de tres direcciones. (b) Formato de instrucción que utiliza. Fig.3.3. (a) Unidad de Proceso de una máquina de una sola dirección. (b) Formato de instrucción que utiliza. UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Facultad-Escuela de Informática Departamento de Electrónica y Comunicaciones Pag.-11 Versión 1.0 28-02-2004 ALU1 ALU0 Operación 0 0 Suma Aritmética 0 1 Resta Aritmética 1 0 AND Lógico 1 1 OR Lógico Tabla.3.1. Operaciones de la ALU de 1 bit. Fig.3.4.- ALU de un solo bit Fig.3.5.- ALU de 4 bits, con registro de flags. UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Facultad-Escuela de Informática Departamento de Electrónica y Comunicaciones Pag.-12 Versión 1.0 28-02-2004 Rotación a través de carry a la izquierda Shift a la izquierda Shift aritmético a la derecha Fig.3.6. Shifts y rotaciones. ESTADO DE LOS FLAGS COMPROBACIÓN DE FLAGS Fz Fc Significado Condición Flags a comprobar 0 0 A>B A>B Fc=0 y Fz=0 0 1 A<B A=B Fz=1 1 0 A=B A<B Fc=1 A>=B Fc=0 A<>B Fz=0 A<=B Fc=1 ó Fz=1 Tabla 3.2.- Comparación o resta entre enteros sin signo (A-B). ESTADO DE LOS FLAGS COMPROBACIÓN DE FLAGS Fz Fs Fo Significado Condición Flags a comprobar 0 0 0 A>B A>B Fo=Fs y Fz=0 0 0 1 A<B A=B Fz=1 0 1 0 A<B A<B Fo≠Fs 0 1 1 A>B A>=B Fo=Fs 1 0 0 A=B A<>B Fz=0 A<=B Fz=1 ó Fo≠Fs Tabla 3.3.- Comparación o resta entre enteros con signo (A-B). UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Facultad-Escuela de Informática Departamento de Electrónica y Comunicaciones Pag.-13 Versión 1.0 28-02-2004 CAPÍTULO 4: UNIDAD DE CONTROL Fig.4.1. Unidad de Control. Fig.4.3. Transferencia entre registros a través de un bus. µórdenes ABus CBus DBus µórdenes µórdenes Contador de Programa Secuenciador Central Decodificador de Inst. Registro de Instrucción Flags Fig.4.2. Unidad de control µprogramada según Wilkes 1.951 RI CO µórdenes reloj DC SM C Flag Bus interno UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Facultad-Escuela de Informática Departamento de Electrónica y Comunicaciones Pag.-14 Versión 1.0 28-02-2004 Fig.4.4. Unidad de control y memoria. OPERACIÓN µINSTRUCCIÓN µÓRDENES PC→ABus Salida de PC (ABus)→DBus Líneas de Cbus necesarias para leer la memoria DBus→RI Carga paralelo de RI FETCH (PC)→RI; PC++ PC+1→PC Incrementar PC RIl*→ABus Salida de RIl* INTERNA RIl*→PC ABus→PC Carga paralelo de PC * Denominaremos en esta tabla RIl a los 24 bits menos significativos de RI, que son los que contienen la dirección a la que hay que saltar. Tabla 4.1. Microinstrucciones necesarias para leer una instrucción. ABus CBus DBus Secuenciador PC RI 126456H 87654321H Memoria Dirección 123456H UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Facultad-Escuela de Informática Departamento de Electrónica y Comunicaciones Pag.-15 Versión 1.0 28-02-2004 Fig.4.5. Las 3 primeras microórdenes. ABus CBus DBus Secuenciador PC RI 123456H 87654321H Memoria Dirección 123456H ABus CBus DBus Secuenciador PC RI 123456H 87654321H Memoria Dirección 123456H 654321H 87H ABus CBus DBus Secuenciador PC RI 123456H 87654321H Memoria Dirección 123456H PC→ABus (ABus) →DBus DBus→RI UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Facultad-Escuela de Informática Departamento de Electrónica y Comunicaciones Pag.-16 Versión 1.0 28-02-2004 Fig.4.6. Las 3 últimas microórdenes. 654321H 87H ABus CBus DBus Secuenciador PC RI 123457H 87654321H Memoria Dirección 123456H PC+1→PC 654321H 87H ABus CBus DBus Secuenciador PC RI 123456H 87654321H Memoria Dirección 123456H RIl→ABus 654321H 87H ABus CBus DBus Secuenciador PC RI 654321H Memoria ABus→PC FC_-_Descriptores_-_Parte_II.pdf UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Facultad-Escuela de Informática Departamento de Electrónica y Comunicaciones Pag.-17 Versión 1.0 28-02-2004 CAPÍTULO 5: INDALO 1.0 Fig.5.1. Unidad Central de Proceso (CPU) de Indalo 1.0. Fig.5.2. Contenido de un bloque triestado de 8 bits. Fig.5.3. Contador ascendente/descendente de 8 bits con carga paralela síncrona. UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Facultad-Escuela de Informática Departamento de Electrónica y Comunicaciones Pag.-18 Versión 1.0 28-02-2004 Fig.5.4 Registro Acumulador en el Indalo 1.0 Fig.5.5 Registro de Instrucción y PC en el Indalo 1.0 Código máquina Ensamblador Binario Hexadecimal ADD A, (address) 0000 0000 00H MOV A, (address) 0001 0000 10H MOV (address), A 0010 0000 20H JMP address 0011 0000 30H Tabla 5.1. Set de instrucciones de Indalo 1.0. UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Facultad-Escuela de Informática Departamento de Electrónica y Comunicaciones Pag.-19 Versión 1.0 28-02-2004 Fig.5.6. Cronogramas de los ciclos de máquina en Indalo 1.0 Operación Nivel RT Microórdenes PC → ABus salpc Primer ciclo de (ABus) → DBus mem, rd máquina Dbus → CO ckco (fetch1) PC + + → PC reg1, ckpc PC → ABus salpc 2º ciclo de (ABus) → DBus mem, rd máquina DBus → DIRL ckdirl (fetch2) PC + + → PC reg1, ckpc PC → ABus salpc Tercer ciclo de (ABus) → DBus mem, rd máquina DBus → DIRH ckdirh (fetch3) PC ++ → PC reg1,ckpc Tabla 5.2 Ciclos de fetch comunes a las 4 instrucciones. UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Facultad-Escuela de Informática Departamento de Electrónica y Comunicaciones Pag.-20 Versión 1.0 28-02-2004 Operación Nivel RT Microórdenes Ciclo de lectura DIR → ABus saldir De memoria (ABus) → DBus mem, rd A+(DIR)→A DBus + A → A alu0, cka Tabla 5.3 Ejecución de la instrucción ADD A, (address) Operación Nivel RT Microórdenes Ciclo de lectura DIR → ABus saldir De memoria: (ABus) → DBus mem, rd (DIR)→A DBus → A cka Tabla 5.4.Ejecución de la instrucción MOV A, (address) Operación Nivel RT Microórdenes Ciclo de escritura DIR → ABus saldir En memoria A → DBus sala A→(DIR) DBus → (ABus) mem, wr Tabla 5.5.Ejecución de la instrucción MOV (address), A Operación Nivel RT Microórdenes Transferencia interna: DIR → ABus saldir DIR→PC ABus → PC mem, wr Tabla 5.6. Ejecución de la instrucción JMP address Fig.5.6. Cronogramas de los ciclos de máquina del INDALO 1.0 Ciclo 1 de fetch(*) Ejecución de ADD A,(addr) Ejecución de MOV A,(addr) (*) Los ciclos 2º y 3º de fetch son idénticos sustituyendo ckco por ckdirl y ckdirh respectivamente. Ejecución de MOV (addr),A Ejecución de JMP addr UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Facultad-Escuela de Informática Departamento de Electrónica y Comunicaciones Pag.-21 Versión 1.0 28-02-2004 Ciclo fetch 1 Ciclo fetch 2 Ciclo fetch 3 Ciclo de ejec estado: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 mem 0 1 1 0 0 1 1 0 0 1 1 0 0 54 bb ∨ 54 bb ∨ ckco 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 reg1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 0 ckdirl 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 ckdirh 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 saldir 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 salpc 1 1 1 0 1 1 1 0 1 1 1 0 0 0 0 cka 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5b alu0 0 0 0 0 0 0 0 0 0 0 0 0 0 54 bb ∧ 54 bb ∧ wr 0 0 0 0 0 0 0 0 0 0 0 0 0 54 bb ∧ 0 sala 0 0 0 0 0 0 0 0 0 0 0 0 0 54 bb ∧ 54 bb ∧ ckpc 0 0 0 1 0 0 0 1 0 0 0 1 0 54 bb ∧ 0 rd 0 1 1 0 0 1 1 0 0 1 1 0 0 5b 5b rst 0 0 0 0 0 0 0 0 0 0 0 0 0 0 54 bb ∧ Tabla 5.7. Estado de las microórdenes durante cada ciclo de reloj Fig.5.7. Diseño del secuenciador central. UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Facultad-Escuela de Informática Departamento de Electrónica y Comunicaciones Pag.-22 Versión 1.0 28-02-2004 Contador (DCBA) Mem ckco reg1 0000 0 0 0 0001 1 0 0 0010 1 1 1 0011 0 0 1 0100 0 0 0 0101 1 0 0 0110 1 0 1 0111 0 0 1 1000 0 0 0 1001 1 0 0 1010 1 0 1 1011 0 0 1 1100 0 0 0 1101 b + b4 5 0 0 1110 b + b4 5 0 0 1111 X X X Fig.5.8. Diseño del circuito combinacional para las microórdenes mem, ckco y reg1. Simplificando mem con Karnaugh: ( )( )( )5b4bBDBABA= +++++mem ckco se obtiene directamente: ABCD=ckco Simplificando reg1 con Karnaugh: ( )CDBBCBD +=+=reg1 UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Facultad-Escuela de Informática Departamento de Electrónica y Comunicaciones Pag.-23 Versión 1.0 28-02-2004 CAPÍTULO 6: INDALO 2.0 JUEGO DE INSTRUCCIONES (por mnemónico) Flags Instrucción Descripción Cod. oper C Z O S P Bytes Cic. Reloj ADC A, op8 A+op8+Fc→A 1001 0op8 X X X X X 1+A 7+B ADD A, op8 A+op8→A 1000 1op8 X X X X X 1+A 7+B AND A, op8 A ∩ op8→A 1001 1op8 0 X 0 X X 1+A 7+B CLC 0→Fc 0000 1101 0 N N N N 1 5 CMP A, op8 A-op8→Act. Flags 1000 0op8 X X X X X 1+A 7+B DEC reg16 reg16--→reg16 0011 00reg16 N N N N N 1 7 DEC reg8 reg8--→reg8 1010 00reg8 N X X X X 1 7 INC reg16 reg16++→reg16 0011 01reg16 N N N N N 1 7 INC reg8 reg8++→reg8 1010 10reg8 N X X X X 1 7 JC addr Si Fc=1 PC+rel8→PC 0001 0001 N N N N N 2 7/12 JMP addr addr→PC 0001 0010 N N N N N 3 15 JMP reg16 reg16→PC 0001 11reg16 N N N N N 1 5 JNC addr Si Fc=0 PC+rel8→PC 0001 0011 N N N N N 2 7/12 JNO addr Si Fo=0 PC+rel8→PC 0001 0100 N N N N N 2 7/12 JNP addr Si Fp=0 PC+rel8→PC 0001 0101 N N N N N 2 7/12 JNS addr Si Fs=0 PC+rel8→PC 0001 0110 N N N N N 2 7/12 JNZ addr Si Fz=0 PC+rel8→PC 0001 0111 N N N N N 2 7/12 JO addr Si Fo=1 PC+rel8→PC 0001 1000 N N N N N 2 7/12 JP addr Si Fp=1 PC+rel8→PC 0001 1001 N N N N N 2 7/12 JS addr Si Fs=1 PC+rel8→PC 0001 1010 N N N N N 2 7/12 JZ addr Si Fz=1 PC+rel8→PC 0001 1011 N N N N N 2 7/12 MOV reg8, op8 op8→reg8 011reg8 op8 N N N N N 1+A 7+B MOV mem8, reg8 Reg8→mem8 0100 mem8reg8 N N N N N 1+A 7+B MOV reg16,op16 op16→reg16 0101 reg16op16 N N N N N 1+A 7+B NEG A -A→A 1011 0000 X X X X X 1 7 NOP No operar 0000 0000 N N N N N 1 5 NOT A A →A 1011 1000 0 X 0 X X 1 7 OR A, op8 A ∪ op8→A 1100 0op8 0 X 0 X X 1+A 7+B RCL A A <rc< →A 1100 1000 X X X X X 1 7 RCR A A >rc> →A 1101 0000 X X X X X 1 7 ROL A A <r< →A 1010 1000 X X X X X 1 7 ROR A A >r> →A 1010 0000 X X X X X 1 7 SAR A A >sa> →A 0100 0000 X X 0 X X 1 7 SBB A, op8 A-(op8+Fc) →A 1101 1op8 X X X X X 1+A 7+B SHL A A <s< →A 1110 0000 X X X X X 1 7 SHR A A >s> →A 1110 1000 X X X 0 X 1 7 STC 1→Fc 0000 1001 1 N N N N 1 5 SUB A, op8 A-op8→A 1111 0op8 X X X X X 1+A 7+B XOR A, op8 A⊕op8→A 1111 1op8 0 X 0 X X 1+A 7+B Nota: Para los valores de A y B consultar la tabla op8, mem8 y op16 En saltos condicionales JC,... se usan 7 ciclos si no se cumple la condición. UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Facultad-Escuela de Informática Departamento de Electrónica y Comunicaciones Pag.-24 Versión 1.0 28-02-2004 LÍNEAS DE CONTROL DE LA ALU. Operación alu3 alu2 alu1 alu0 ENT2 0 0 0 0 No usada 0 0 0 1 ENT1 + ENT2 + Fc 0 0 1 0 ENT1 ∩ ENT2 0 0 1 1 ENT2 -- 0 1 0 0 ENT2 ++ 0 1 0 1 Ca2(ENT1) 0 1 1 0 Ca1(ENT1) 0 1 1 1 ENT1 ∪ ENT2 1 0 0 0 ENT1 <rc< 1 0 0 1 ENT1 >rc> 1 0 1 0 ENT1 + Ca2(ENT2 + Fc) 1 0 1 1 ENT1 <r< 1 1 0 0 ENT1 >r> 1 1 0 1 ENT1 >sa> 1 1 1 0 ENT1 ⊕ ENT2 1 1 1 1 JUEGO DE INSTRUCCIONES (por código de operación). Cod. Oper Instrucción Bytes 0000 0000 NOP 1 0000 1001 STC 1 0000 1101 CLC 1 0001 0001 JC addr 2 0001 0010 JMP addr 3 0001 0011 JNC addr 2 0001 0100 JNO addr 2 0001 0101 JNP addr 2 0001 0110 JNS addr 2 0001 0111 JNZ addr 2 0001 1000 JO addr 2 0001 1001 JP addr 2 0001 1010 JS addr 2 0001 1011 JZ addr 2 0001 11reg16 JMP reg16 1 0011 00reg16 DEC reg16 1 0011 01reg16 INC reg16 1 0100 0000 SAR A 1 0100 mem8reg8 MOV mem8, reg8 1+A 0101 reg16op16 MOV reg16,op16 1+A 011reg8 op8 MOV reg8, op8 1+A 1000 0op8 CMP A, op8 1+A 1000 1op8 ADD A, op8 1+A 1001 0op8 ADC A, op8 1+A 1001 1op8 AND A, op8 1+A 1010 0000 ROR A 1 1010 00reg8 DEC reg8 1 1010 1000 ROL A 1 1010 10reg8 INC reg8 1 1011 0000 NEG A 1 1011 1000 NOT A 1 1100 0op8 OR A, op8 1+A 1100 1000 RCL A 1 1101 0000 RCR A 1 1101 1op8 SBB A, op8 1+A 1110 0000 SHL A 1 1110 1000 SHR A 1 1111 0op8 SUB A, op8 1+A 1111 1op8 XOR A, op8 1+A OPERANDOS DE 8 BITS. Cód. Mnem. Dirección del operando A B 000 (addr) La dirección del operando aparece en los 2 bytes siguientes al Cod. oper. 2 11 001 A Operando en el registro A 0 0 010 B Operando en el registro B 0 0 011 C Operando en el registro C 0 0 100 dat8 Valor inmediato viene en el byte siguiente al Cod. oper 1 3 101 (BC) Operando en la dirección apuntada por BC 0 1 110 (X+rel8) Operando en la dirección apuntada por X+ rel8 1 6 Reg8 Mem8 A B 01 A 00 (addr) 2 11 10 B 01 (BC) 0 1 11 C 10 (X+rel8) 1 6 OPERANDOS
Compartir