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 DE 16 BITS. Cód. Mnem. Dirección del operando A B 00 BC Operando en el registro BC 0 2 01 X Operando en el registro X 0 2 10 dat16 Valor inmediato viene en los 2 bytes siguientes al Cod. op. 2 8 Reg16 00 BC 01 X NOTAS Y SÍMBOLOS. Flags: C=Carry, Z=cero, O=Overflow, P=paridad. X= Flag se actualiza con la ejecución de la inst. N=Flag no cambia con la ejecución de la inst. 0: Flag se pone a 0 1: Flag se pone a 1 Fc: Flag de Carry op8: Operando de 8 bits. addr: Dirección (Entero sin signo de 16 bits) rel8: Entero con signo de 8 bits. Flags C: Contiene el acarreo en las operaciones de suma. Funciona como Borrow en las de resta y comparación. En las operaciones de desplazamiento y rotación, contiene el bit saliente. Z: Vale 1 si el contenido del resultado es =0. O: Realiza una operación XOR entre los acarreos de los 2 bits mas significativos de los operandos. En Shifts y Rotaciones se pone a 1 si el bit de mayor peso cambia como consecuencia de la rotación. S: Es una copia del bit de mayor peso del resultado. P: Es 0 si el número de unos en el resultado es impar. UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Facultad-Escuela de Informática Departamento de Electrónica y Comunicaciones Pag.-25 Versión 1.0 28-02-2004 ESQUEMA DEL INDALO 2.0 UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Facultad-Escuela de Informática Departamento de Electrónica y Comunicaciones Pag.-26 Versión 1.0 28-02-2004 • CONFIGURACIÓN DEL REGISTRO DE FLAGS • DETALLE DEL SUMADOR DE DIRECCIÓN UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Facultad-Escuela de Informática Departamento de Electrónica y Comunicaciones Pag.-27 Versión 1.0 28-02-2004 CAPÍTULO 7: INDALO 3.0 JUEGO DE INSTRUCCIONES (por mnemónico) Flags Instrucción Descripción Cod. oper C Z O S P I Bytes Cic. Reloj ADC A, op8 A+op8+Fc→A 1001 0op8 X X X X X N 1+A 7+B ADD A, op8 A+op8→A 1000 1op8 X X X X X N 1+A 7+B AND A, op8 A ∩ op8→A 1001 1op8 0 X 0 X X N 1+A 7+B CALL addr SP-2→SP, PC→ (SP), addr→PC 0000 1011 N N N N N N 3 27 CLC 0→Fc 0000 1101 0 N N N N N 1 5 CLI 0→Fi 0000 1100 N N N N N 0 1 5 CMP A, op8 A-op8→Act. Flags 1000 0op8 X X X X X N 1+A 7+B DEC reg16 reg16-- →reg16 0011 00reg16 N N N N N N 1 7 DEC reg8 reg8-- →reg8 1010 00reg8 N X X X X N 1 7 HLT Paso a Halt 0000 1110 N N N N N N 1 5 IN A, C (puerto C)→A 0000 1111 N N N N N N 1 8 INC reg16 reg16++→reg16 0011 01reg16 N N N N N N 1 7 INC reg8 reg8++→reg8 1010 10reg8 N X X X X N 1 7 INT vector SP-2→SP, PC→(SP), (V*2)→PC 0001 0000 N N N N N N 2 30 JC addr Si Fc=1 PC+rel8→PC 0001 0001 N N N N N N 2 7/12 JMP addr addr→PC 0001 0010 N N N N N N 3 15 JMP reg16 reg16→PC 0001 11reg16 N N N N N N 1 5 JNC addr Si Fc=0 PC+rel8→PC 0001 0011 N N N N N N 2 7/12 JNO addr Si Fo=0 PC+rel8→PC 0001 0100 N N N N N N 2 7/12 JNP addr Si Fp=0 PC+rel8→PC 0001 0101 N N N N N N 2 7/12 JNS addr Si Fs=0 PC+rel8→PC 0001 0110 N N N N N N 2 7/12 JNZ addr Si Fz=0 PC+rel8→PC 0001 0111 N N N N N N 2 7/12 JO addr Si Fo=1 PC+rel8→PC 0001 1000 N N N N N N 2 7/12 JP addr Si Fp=1 PC+rel8→PC 0001 1001 N N N N N N 2 7/12 JS addr Si Fs=1 PC+rel8→PC 0001 1010 N N N N N N 2 7/12 JZ addr Si Fz=1 PC+rel8→PC 0001 1011 N N N N N N 2 7/12 MOV reg8, op8 op8→reg8 011reg8 op8 N N N N N N 1+A 7+B MOV mem8, reg8 Reg8→mem8 0100 mem8reg8 N N N N N N 1+A 7+B MOV reg16,op16 op16→reg16 0101 reg16op16 N N N N N N 1+A 7+B NEG A -A→A 1011 0000 X X X X X N 1 7 NOP No operar 0000 0000 N N N N N N 1 5 NOT A A →A 1011 1000 0 X 0 X X N 1 7 OR A, op8 A ∪ op8→A 1100 0op8 0 X 0 X X N 1+A 7+B OUT C, A A→(puerto C) 0010 0000 N N N N N N 1 8 POP AF (SP)→AF, SP+2→SP 0000 0001 X X X X X X 1 15 POP BC (SP)→BC, SP+2→SP 0000 0010 N N N N N N 1 15 POP X (SP)→X, SP+2→SP 0000 0011 N N N N N N 1 15 PUSH AF SP-2→SP, AF→(SP) 0000 0101 N N N N N N 1 15 PUSH BC SP-2→SP, BC→(SP) 0000 0110 N N N N N N 1 15 PUSH X SP-2→SP, X→(SP) 0000 0111 N N N N N N 1 15 RCL A A <rc< →A 1100 1000 X X X X X N 1 7 RCR A A >rc> →A 1101 0000 X X X X X N 1 7 RET (SP)→PC, SP+2→SP 0000 1000 N N N N N N 1 13 ROL A A <r< →A 1010 1000 X X X X X N 1 7 ROR A A >r> →A 1010 0000 X X X X X N 1 7 SAR A A >sa> →A 0100 0000 X X 0 X X N 1 7 SBB A, op8 A-(op8+Fc) →A 1101 1op8 X X X X X N 1+A 7+B SHL A A <s< →A 1110 0000 X X X X X N 1 7 SHR A A >s> →A 1110 1000 X X X 0 X N 1 7 STI 1→Fi 0000 1010 N N N N N 1 1 5 STC 1→Fc 0000 1001 1 N N N N N 1 5 SUB A, op8 A-op8→A 1111 0op8 X X X X X N 1+A 7+B XOR A, op8 A⊕op8→A 1111 1op8 0 X 0 X X N 1+A 7+B Para los valores de A y B consultar las tablas op8, op16 y mem8. En saltos condicionales 7/12 quiere decir que la duración es de 7 ciclos de reloj si no se UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Facultad-Escuela de Informática Departamento de Electrónica y Comunicaciones Pag.-28 Versión 1.0 28-02-2004 JUEGO DE INSTRUCCIONES (por código de operación) Cod. Oper Instrucción Bytes 0000 0000 NOP 1 0000 0001 POP AF 1 0000 0010 POP BC 1 0000 0011 POP X 1 0000 0101 PUSH AF 1 0000 0110 PUSH BC 1 0000 0111 PUSH X 1 0000 1000 RET 1 0000 1001 STC 1 0000 1010 STI 1 0000 1011 CALL addr 3 0000 1100 CLI 1 0000 1101 CLC 1 0000 1110 HLT 1 0000 1111 IN A, C 1 0001 0000 INT vector 2 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 0010 0000 OUT C, A 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 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 op8 : Operando de 8 bits. Los códigos de operación para las diferentes formas de direccionamiento de op8 son: 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 op16 ✚ Operando de 16 bits. Los códigos de operación para las diferentes formas de direccionamiento de op16 son: Cód. Mnem. Dirección del operando A B 00 BC Operando en el registro BC 0 2 01 X Operando en el registro X 0 2 10 dat16 Valor inmediato viene en los 2 bytes siguientes al Cod.oper 2 8 11 SP Operando en el registro SP 0 2 Reg16 00 BC 01 X 10 SP addr: Direc. (Entero sin signo de 16 bits) rel8: Entero con signo de 8 bits. Flags: 0: Flag se pone a 0 1: Flag se pone a 1 X= Flag se actualiza con la ejecución de la inst. N=Flag no cambia con la ejecución de la inst.C: Es el acarreo en las sumas, el borrow en las restas, y en desplaz. y rotaciones, es el bit saliente. Z: Vale 1 si el contenido del resultado es =0. O: Realiza una operación XOR entre los acarreos de los 2 bits mas significativos de los operandos. En Shifts y Rotaciones se pone a 1 si el bit de mayor peso cambia como consecuencia de la operación. S: Es una copia del bit de mayor peso del resultado. P: Es 0 si el número de unos en el resultado es impar. UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Facultad-Escuela de Informática Departamento de Electrónica y Comunicaciones Pag.-29 Versión 1.0 28-02-2004 OPERACIONES BÁSICAS DE INDALO 3.0 Operación Nro. ciclos reloj Transferencias Instrucciones y notas (PC)→CO; PC++ Casi todas. (1) (PC)→DIRl; PC++ (2) (PC)→DIRh; PC++ (3) F 5 (PC)→Xl, Xh, SPl o SPh; PC++ MOV X,dat16; MOV SP,dat16 A-(PC)→Act. Flags; PC++ CMP A,dat8 A oper2 (PC)→A; PC++ XXX A,dat8 Falu 5 (PC)→reg8; PC++ MOV reg8,dat8 (PC)→CO; PC++; 0→FC o FI CLC; CLI; ADD A,op8; SUB A,op8; CMP A,op8; SHR A; SHL A Fflag 5 (PC)→CO; PC++; 1→FC o FI STC; STI (PC)→CO JMP reg16; RET Fnoinc 3 (PC)→DIRh JMP addr (SP)→F, Xl, Xh, PCl o PCh POP AF; POP X; RET R 3 (DIR)→PCl ó PCh INT vector (6) A-mem8→Act. Flags CMP A,mem8 A oper2 mem8→A XXX A,mem8 (4) mem8→reg8 MOV reg8,mem8 Ralu 3 (SP)→reg8 POP AF; POP BC reg8→mem8 MOV mem8,reg8 reg8→(SP) PUSH AF; PUSH BC W 3 F, Xl, Xh, PCl o PCh→(SP) PUSH AF; PUSH X; CALL addr; INT vector (6) IP 3 (puerto C)→A IN A,C OP 3 A→(puerto C) OUT C,A RI 2 Vector→DIRl Interrupciones hardware It8 2 reg16l→Xl o SPl; reg16h→Xh o SPh MOV X,reg16 MOV SP,reg16 A-reg8→Act. Flags CMP A,reg8 A oper2 reg8→A XXX A,reg8 (4) reg8→reg8 MOV reg8,reg8 A oper1→A YYY A (5) reg8++ ó reg8-- INC reg8; DEC reg8 Italu 2 reg16l→C o reg16h→B MOV BC,reg16 PC+DIRl→PC Jcond addr (si se cumple la condición) DIR→PC JMP addr; CALL addr It16 2 reg16→PC JMP reg16 reg16++ o reg16-- INC reg16; DEC reg16 PC++ Jcond addr (si no se cumple la condición) SP-- PUSH AF; PUSH BC; PUSH X; CALL addr;INT vector (6) SP++ POP AF; POP BC; POP X; RET Iid16 2 DIR++ INT vector (6) I2dirl 2 2*DIRl→DIR INT vector (6) UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Facultad-Escuela de Informática Departamento de Electrónica y Comunicaciones Pag.-30 Versión 1.0 28-02-2004 NOTAS: (1) Se exceptúan: - CLC, CLI, ADD, SUB, CMP, SHR y SHL que leen el código de operación mediante Fflag. - JMP reg16 y RET que lo hacen por medio de Fnoinc. (2) Producen esta transferencia: - Las instrucciones que contienen el operando rel8, excepto Jcond addr cuando no se cumple la condición. - Las instrucciones que contienen el operando addr. - INT vector. (3) Producen esta transferencia las instrucciones que contienen el operando addr, excepto JMP addr que emplea Fnoinc. Nótese que el operando de Jcond addr no es addr sino rel8. (4) Oper2 es cualquiera de las operaciones binarias que puede realizar la CPU: suma con carry, resta con borrow, AND, OR u OR exclusivo; XXX es cualquiera de los mnemónicos de las instrucciones que realizan operaciones binarias: ADD, ADC, SUB, SBB, AND, OR o XOR. (5) Oper1 es cualquiera de las operaciones unarias que puede realizar la CPU: rotaciones (circulares y a través de carry; a derecha y a izquierda); shift aritmético a la derecha, y complementos (a 1 y a 2). YYY es cualquiera de los mnemónicos de las instrucciones que realizan las operaciones anteriores: ROR, ROL, RCR, RCL, SHL, SAR, SAL, NOT y NEG. (6) También se producen estas operaciones en el proceso de atención a las interrupciones hardware. UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Facultad-Escuela de Informática Departamento de Electrónica y Comunicaciones Pag.-31 Versión 1.0 28-02-2004 ESQUEMA DEL INDALO 3.0 UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Facultad-Escuela de Informática Departamento de Electrónica y Comunicaciones Pag.-32 Versión 1.0 28-02-2004 CAPÍTULO 8: INTERFACES DE ENTRADA/SALIDA Fig.8.1. Buffer triestado y Biestables como elementos básicos de E/S. Fig.8.2 Decodificador centralizado (varias líneas de selección con un circuito). Fig.8.3 Decodificación de direcciones de E/S distribuida. UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Facultad-Escuela de Informática Departamento de Electrónica y Comunicaciones Pag.-33 Versión 1.0 28-02-2004 Fig.8.4 Circuito de selección del puerto 5 para entrada y cronograma de funcionamiento. Fig.8.5 Circuito de selección del puerto 1 para escritura, y cronográma de funcionamiento. UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Facultad-Escuela de Informática Departamento de Electrónica y Comunicaciones Pag.-34 Versión 1.0 28-02-2004 Tipo Nombre Direcc. Descripción Datos DATA 1 Salida Datos DATA 2 Salida Datos DATA 3 Salida Líneas de datos . En ellas se coloca el carácter a imprimir. Datos DATA 4 Salida Deben contener el dato al menos 0,5 µS antes de activar Datos DATA 5 Salida STROBE y 0,5 µS después de desactivarlo. Datos DATA 6 Salida Datos DATA 7 Salida Datos DATA 8 Salida Control STROBE Salida Indica a la impresora que se envía un byte Control AUTO FEED Salida Indica a la impresora que avance una línea después caráct. CR Control INIT Salida Resetea o inicializa a la impresora. Control SLCT IN Salida (Select In) Indica a la impresora que está seleccionada Estado ACK Entrada Indica que el último carácter ha sido recibido y procesado Estado BUSY Entrada Indica que la impresora está ocupada y no puede aceptar datos Estado PE Entrada (Paper End) Indica que la impresora no tiene papel. Estado SLCT Entrada (Select) Indica que la impresora está seleccionada Estado ERROR Entrada Indica que se ha producido algún error en la impresora. Tabla 8.1. Líneas del Interface Centronics. Fig.8.6 Conexión de cuatro displays usando un único latch. UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Facultad-Escuela de Informática Departamento de Electrónica y Comunicaciones Pag.-35 Versión 1.0 28-02-2004 Fig.8.7 Circuito de control del interface Centronics. Valor en A Causa BUSY PE ERROR - Impresora preparada 0 0 1 1 Impresora ocupada (generalmente cuando está procesando el último byte recibido o tiene el buffer lleno) 1 0 1 2 Impresora sin papel 1 1 0 3 Off Line u otros errores 1 0 0 Tabla 8.2. Estados posibles en el interfaz Centronics. Fig. 8.8. Ordinograma comprobación estado impresora. FC_-_Documentacion_de_examen.pdf Versión Junio 2.004 -1- DOCUMENTACION EXAMEN INTRODUCCION A LAS COMPUTADORAS NOTA IMPORTANTE: Esta documentación debe ser devuelta al entregar el examen. No se permite escribir nada sobre la documentación, ni separar las hojas. Se debe comprobar al recibir la documentación que no tiene nada escrito. Después de haberla recibido no se admitirán reclamaciones al respecto. Funcionamiento de los registros CK LD CNT UP DWN Significado 1, 0, ó � X X No cambia � 0 X Entrada paralelo � 1 0 Incrementa registro � 1 1 Decrementa registro Entradas de control de la ALU. Operaciones asociadas a cada combinación 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 Posición de los flags en el registro F Posición 7 6 5 4 3 2 1 0 X X I P S O Z C Versión Junio 2.004 -2- SET DE INSTRUCCIONES DE INDALO 3.0 Flags Instrucción Descripción Cod. oper C Z O S P I Bytes Cic. Reloj ADC A, op8 A+op8+Fc➝ A 1001 0op8 X X X X X N 1+A 7+B ADD A, op8 A+op8➝ A 1000 1op8 X X X X X N 1+A 7+B AND A, op8 A ∩ op8➝ A 1001 1op8 0 X 0 X X N 1+A 7+B CALL addr SP-2➝ SP, PC➝ (SP), addr➝ PC 0000 1011 N N N N N N 3 27 CLC 0➝ Fc 0000 1101 0 N N N N N 1 5 CLI 0➝ Fi 0000 1100 N N N N N 0 1 5 CMP A, op8 A-op8➝ Act. Flags 1000 0op8 X X X X X N 1+A 7+B DEC reg16 reg16--➝ reg16 0011 00reg16 N N N N N N 1 7 DEC reg8 reg8--➝ reg8 1010 00reg8 N X X X X N 1 7 HLT Paso a Halt 0000 1110 N N N N N N 1 3 IN A, C (puerto C)➝ A 0000 1111 N N N N N N 1 8 INC reg16 reg16++➝ reg16 0011 01reg16 N N N N N N 1 7 INC reg8 reg8++➝ reg8 1010 10reg8 N X X X X N 1 7 INT vector SP-2➝ SP, PC➝ (SP), (V*2)➝ PC 0001 0000 N N N N N N 2 30 JC addr Si Fc=1 PC+rel8➝ PC 0001 0001 N N N N N N 2 7/12 JMP addr addr➝ PC 0001 0010 N N N N N N 3 15 JMP reg16 reg16➝ PC 0001 11reg16 N N N N N N 1 5 JNC addr Si Fc=0 PC+rel8➝ PC 0001 0011 N N N N N N 2 7/12 JNO addr Si Fo=0 PC+rel8➝ PC 0001 0100 N N N N N N 2 7/12 JNP addr Si Fp=0 PC+rel8➝ PC 0001 0101 N N N N N N 2 7/12 JNS addr Si Fs=0 PC+rel8➝ PC 0001 0110 N N N N N N 2 7/12 JNZ addr Si Fz=0 PC+rel8➝ PC 0001 0111 N N N N N N 2 7/12 JO addr Si Fo=1 PC+rel8➝ PC 0001 1000 N N N N N N 2 7/12 JP addr Si Fp=1 PC+rel8➝ PC 0001 1001 N N N N N N 2 7/12 JS addr Si Fs=1 PC+rel8➝ PC 0001 1010 N N N N N N 2 7/12 JZ addr Si Fz=1 PC+rel8➝ PC 0001 1011 N N N N N N 2 7/12 MOV reg8, op8 op8➝ reg8 011reg8 op8 N N N N N N 1+A 7+B MOV mem8, reg8 Reg8➝ mem8 0100 mem8reg8 N N N N N N 1+A 7+B MOV reg16,op16 op16➝ reg16 0101 reg16op16 N N N N N N 1+A 7+B NEG A -A➝ A 1011 0000 X X X X X N 1 7 NOP No operar 0000 0000 N N N N N N 1 5 NOT A A ➝ A 1011 1000 0 X 0 X X N 1 7 OR A, op8 A ∪ op8➝ A 1100 0op8 0 X 0 X X N 1+A 7+B OUT C, A A➝ (puerto C) 0010 0000 N N N N N N 1 8 POP AF (SP)➝ AF, SP+2➝ SP 0000 0001 X X X X X X 1 15 POP BC (SP)➝ BC, SP+2➝ SP 0000 0010 N N N N N N 1 15 POP X (SP)➝ X, SP+2➝ SP 0000 0011 N N N N N N 1 15 PUSH AF SP-2➝ SP, AF➝ (SP) 0000 0101 N N N N N N 1 15 PUSH BC SP-2➝ SP, BC➝ (SP) 0000 0110 N N N N N N 1 15 PUSH X SP-2➝ SP, X➝ (SP) 0000 0111 N N N N N N 1 15 RCL A A <rc< ➝ A 1100 1000 X X X X X N 1 7 RCR A A >rc> ➝ A 1101 0000 X X X X X N 1 7 RET (SP)➝ PC, SP+2➝ SP 0000 1000 N N N N N N 1 13 ROL A A <r< ➝ A 1010 1000 X X X X X N 1 7 ROR A A >r> ➝ A 1010 0000 X X X X X N 1 7 SAR A A >sa> ➝ A 0100 0000 X X 0 X X N 1 7 SBB A, op8 A-(op8+Fc) ➝ A 1101 1op8 X X X X X N 1+A 7+B SHL A A <s< ➝ A 1110 0000 X X X X X N 1 7 SHR A A >s> ➝ A 1110 1000 X X X 0 X N 1 7 STI 1➝ Fi 0000 1010 N N N N N 1 1 5 STC 1➝ Fc 0000 1001 1 N N N N N 1 5 SUB A, op8 A-op8➝ A 1111 0op8 X X X X X N 1+A 7+B XOR A, op8 A⊕ op8➝ A 1111 1op8 0 X 0 X X N 1+A 7+B Para los valores de A y B consultar las tablas op8, op16 y mem8. En saltos condicionales 7/12 quiere decir que la duración es de 7 ciclos de reloj si no se salta y de 12 si se salta Versión Junio 2.004 -3- Set de instrucciones por Cod. oper Cod. Oper Instrucción Bytes 0000 0000 NOP 1 0000 0001 POP AF 1 0000 0010 POP BC 1 0000 0011 POP X 1 0000 0101 PUSH AF 1 0000 0110 PUSH BC 1 0000 0111 PUSH X 1 0000 1000 RET 1 0000 1001 STC 1 0000 1010 STI 1 0000 1011 CALL addr 3 0000 1100 CLI 1 0000 1101 CLC 1 0000 1110 HLT 1 0000 1111 IN A, C 1 0001 0000 INT vector 2 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 0010 0000 OUT C, A 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 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 op8 ➝ Operando de 8 bits. Los códigos de operación para las diferentes formas de direccionamiento de op8 son: 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 op16 ➝ Operando de 16 bits. Los códigos de operación para las diferentes formas de direccionamiento de op16 son: Cód. Mnem. Dirección del operando A B 00 BC Operando en el registro BC 0 2 01 X Operando en el registro X 0 2 10 dat16 Valor inmediato viene en los 2 bytes siguientes al Cod.oper 2 8 11 SP Operando en el registro SP 0 2 Reg16 00 BC 01 X 10 SP addr: Direc. (Entero sin signo de 16 bits) rel8: Entero con signo de 8 bits. Flags: 0: Flag se pone a 0 1: Flag se pone a 1 X= Flag se actualiza con la ejecución de la inst. N=Flag no cambia con la ejecución de la inst. C: Es el acarreo en las sumas, el borrow en las restas, y en desplaz. y rotaciones, es el bit saliente. Z: Vale 1 si el contenido del resultado es =0. O: Realiza una operación XOR entre los acarreos de los 2 bits mas significativos de los operandos. En Shifts y Rotaciones se pone a 1 si el bit de mayor peso cambia como consecuencia de la operación. S: Es una copia del bit de mayor peso del resultado. P: Es 0 si el número de unos en el resultado es impar. Versión Junio 2.004 -4- IN D A LO 3 .0 Versión Junio 2.004 -5- Operaciones básicas de Indalo 3.0 Operación Nro. ciclos reloj Transferencias Instrucciones y notas (PC)→CO; PC++ Casi todas. (1) (PC)→DIRl; PC++ (2) (PC)→DIRh; PC++ (3) F 5 (PC)→Xl, Xh, SPl o SPh; PC++ MOV X,dat16; MOV SP,dat16 A-(PC)→Act. Flags; PC++ CMP A,dat8 A oper2 (PC)→A; PC++ XXX A,dat8 Falu 5 (PC)→reg8; PC++ MOV reg8,dat8 (PC)→CO; PC++; 0→FC o FI CLC; CLI; ADD A,op8; SUB A,op8; CMP A,op8; SHR A; SHL A Fflag 5 (PC)→CO; PC++; 1→FC o FI STC; STI (PC)→CO JMP reg16; RET Fnoinc 3 (PC)→DIRh JMP addr (SP)→F, Xl, Xh, PCl o PCh POP AF; POP X; RET R 3 (DIR)→PCl ó PCh INT vector (6) A-mem8→Act. Flags CMP A,mem8 A oper2 mem8→A XXX A,mem8 (4) mem8→reg8 MOV reg8,mem8 Ralu 3 (SP)→reg8 POP AF; POP BC reg8→mem8 MOV mem8,reg8 reg8→(SP) PUSH AF; PUSH BC W 3 F, Xl, Xh, PCl o PCh→(SP) PUSH AF; PUSH X; CALL addr; INT vector (6) IP 3 (puerto C)→A IN A,C OP 3 A→(puerto C) OUT C,A RI 2 Vector→DIRl Interrupciones hardware It8 2 reg16l→Xl o SPl; reg16h→Xh o SPh MOV X,reg16 MOV SP,reg16 A-reg8→Act. Flags CMP A,reg8 A oper2 reg8→A XXX A,reg8 (4) reg8→reg8 MOV reg8,reg8 A oper1→A YYY A (5) reg8++ ó reg8-- INC reg8; DEC reg8 Italu 2 reg16l→C o reg16h→B MOV BC,reg16 PC+DIRl→PC Jcond addr (si se cumple la condición) DIR→PC JMP addr; CALL addr It16 2 reg16→PC JMP reg16 reg16++ o reg16-- INC reg16; DEC reg16 PC++ Jcond addr (si no se cumple la condición) SP-- PUSH AF; PUSH BC; PUSH X; CALL addr;INT vector (6) SP++ POP AF; POP BC; POP X; RET Iid16 2 DIR++ INT vector (6) I2dirl 2 2*DIRl→DIR INT vector (6) Versión Junio 2.004 -6- NOTAS: (1) Se exceptúan: - CLC, CLI, ADD, SUB, CMP, SHR y SHL que leen el código de operación mediante Fflag. - JMP reg16 y RET que lo hacen por medio de Fnoinc. (2) Producen esta transferencia: - Las instrucciones que contienen el operando rel8, excepto Jcond addr cuando no se cumple la condición. - Las instrucciones que contienen el operando addr. - INT vector. (3) Producen esta transferencia las instrucciones que contienen el operando addr, excepto JMP addr que emplea Fnoinc. Nótese que el operando de Jcond addr no es addr sino rel8. (4) Oper2 es cualquiera de las operaciones binarias que puede realizar la CPU: suma con carry, resta con borrow, AND, OR u OR exclusivo; XXX es cualquiera de los mnemónicos de las instrucciones que realizan operaciones binarias: ADD, ADC, SUB, SBB, AND, OR o XOR. (5) Oper1 es cualquiera de las operaciones unarias que puede realizar la CPU: rotaciones (circulares y a través de carry; a derecha y a izquierda); shift aritmético a la derecha, y complementos (a 1 y a 2). YYY es cualquiera de los mnemónicos de las instrucciones que realizan las operaciones anteriores: ROR, ROL, RCR, RCL, SHL, SAR, SAL, NOT y NEG. (6) También se producen estas operaciones en el proceso de atención a las interrupciones hardware. FC_-_Septiembre_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: 11 de Septiembre de 2007 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. Instrucción µInstrucciones µÓrdenes Operación salpc mem, rd ckco reg1, ckpcl, ckpch salpc mem, rd cka reg1, ckpcl, ckpch MOV BC,dat16 PC → ABUS (ABUS) → DBUS DBUS → CO PC++ 0 → FC C → DBUS A-DBUS-FC → A salpc mem, rd ckco 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. 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: 11 de Septiembre de 2007 PROBLEMA 1: Solución (y 1) Instrucción µInstrucciones µÓrdenes Operación PC → ABUS salpc (ABUS) → DBUS mem, rd DBUS → CO ckco PC++ reg1, ckpcl, ckpch F PC → ABUS salpc (ABUS) → DBUS mem, rd DBUS → A cka MOV A,dat8 PC++ reg1, ckpcl, ckpch Falu PC → ABUS salpc (ABUS) → DBUS mem, rd DBUS → CO ckco PC++ reg1, ckpcl, ckpch F PC → ABUS salpc (ABUS) → DBUS mem, rd DBUS → C ckc PC++ reg1, ckpcl, ckpch Falu PC → ABUS salpc (ABUS) → DBUS mem, rd DBUS → B ckb MOV BC,dat16 PC++ reg1, ckpcl, ckpch Falu PC → ABUS salpc (ABUS) → DBUS mem, rd DBUS → CO ckco PC++ reg1, ckpcl, ckpch 0 → FC quitfc Fflag C → DBUS salc SUB A,C A-DBUS-FC → A alu3, alu1, alu0, cka, ckfl, ckfc Italu PC → ABUS salpc (ABUS) → DBUS mem, rd HLT DBUS → CO ckco Fnoinc 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: 11 de Septiembre de 2007 PROBLEMA 2 (2.5 puntos) Considere el siguiente programa, junto con ciertos contenidos de memoria que aparecen a continuación: Dirección Contenido 0000H 45H 0001H 30H 0002H 0F2H 0003H 21H 0004H 0DAH ----------------- ----------------- 4000H 2AH 4001H 3FH 4002H 21H ----------------- ----------------- 21F2H 6CH 21F3H 56H 21F4H 00H ORG 2000H XOR A,A MOV X,4000H MOV B,3 BUCLE: MOV C,(X) ADD A,C INC X DEC B JNZ BUCLE HLT NOTAS: Al comienzo del programa SP = 0EE00H y FI = 1 21F5H 08H Se pide: a) Escribir el código máquina del programa, indicando la posición de memoria que ocupa cada byte. (0.75 puntos) b) Si se produce una interrupción hardware con vector 1, la primera vez que se ejecuta la instrucción MOV C, (X), indicar el contenido de SP y PC al terminar de ejecutar la instrucción RET con que concluye la rutina de servicio. (0.5 puntos) c) Indicar el valor final de A, suponiendo que no se produce la interrupción anterior, y explicar, en pocas líneas, qué hace el programa. (0.5 puntos) Pág. 3 d) Calcular el tiempo que tarda en ejecutarse el programa, sin tener en cuenta la interrupción, si la frecuencia de la CPU es de 100 MHz. (0.75 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: 11 de Septiembre de 2007 PROBLEMA 2: Solución (1) Apartado a) Dirección Contenido (Hex) Instrucción Ciclos de reloj 2000H 0F9 XOR A,A 7 2001H 56 2002H 00 2003H 40 MOV X,4000H 15 2004H 74 2005H 03 MOV B,3 10 BUCLE = 2006H 7E 2007H 00 MOV C, (X) 13 2008H 8B ADD A,C 7 2009H 35 INC X 7 200AH A2 DEC B 7 200BH 17 200CH 0F9 JNZ BUCLE 7/12 200DH 0E HLT 3 Apartado b) Al regresar de una interrupción, después del RET, los registros se quedan como estaban, es decir, con el valor que tenían antes de entrar en la rutina de servicio: SP = 0EE00 H PC = 2008 H NOTA: El valor de SP no ha variado desde el comienzo del programa debido a que ninguna instrucción, antes de producirse la interrupción, había utilizado la pila. Apartado c) El programa pone inicialmente a 0 el registro A, lee el contenido de las direcciones de memoria situadas a partir de la 4000H inclusive, tantas como se indique en el registro B, y va sumando su valor al registro A. En este caso concreto, B = 3 y, por tanto, lee el contenido de las direcciones 4000H, 4001H y 4002H y las va sumando al valor de A. Al final A = 2AH + 3FH +21H = 8AH 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: 11 de Septiembre de 2007 PROBLEMA 2: Solución (y 2) - Apartado d) Considerando que las tres primeras instrucciones y el HLT final las ejecuta una sola vez, y que el bucle lo ejecuta 3 veces (la instrucción JNZ salta dos veces -12 ciclos- y no salta una vez 7 ciclos-), resulta: Nº de ciclos de reloj = (7 +15 +10 +3)·1 + (13 + 7 +7 +7)·3 +12·2 + 7·1 =168 Tiempo de ejecución = 168 · Tiempo de ciclo = .seg68,1seg 10100 1168 6 µ=⋅ ⋅ 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: 11 de Septiembre de 2007 PROBLEMA 3 (2.5 puntos) Se dispone del siguiente fragmento de programa y subrutinas para un Indalo 3.0: … SUBR1: PUSH AF CLC XOR A, A MOV A, 10H CALL SUBR2 SBB A, 0FEH POP AF INC X RET CALL SUBR1 JMP FIN … SUBR2: MOV C, 0 FIN: HLT OUT C, A RET R_SERVICIO: NOP RET Además, se conocen algunas equivalencias entre direcciones absolutas de memoria y etiquetas, así como los siguientes datos cuando se va a leer la instrucción CLC: FIN SUBR1 SUBR2 R_SERVICIO SP (SP) PC FI 1200H 2000H 2100H 2200H 0500H 12H 1000H 1 Sabiendo que cuando se está ejecutando la instrucción OUT C,A (dentro de SUBR2) se produce la interrupción hardware de vector 10H, cuya rutina de atención comienza en R_SERVICIO, rellenar la tabla adjunta después de ejecutar las instrucciones que están numeradas en el enunciado. NOTA: Se recomienda seguir el orden establecido por la numeración y realizar un esquema de la ocupación de la pila. Pág. 6 PC SP (SP) 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: 11 de Septiembre de 2007 PROBLEMA 3: Solución (1) Para poder rellenar la tabla, debemos realizar un seguimiento del estado de la pila a medida que se ejecutan instrucciones: - La instrucción CALL SUBR1 guarda en pila como dirección de retorno aquella donde empieza la instrucción JMP FIN (1009H). Después, carga en el PC la dirección de inicio de la subrutina (SUBR1 = 2000H). La pila queda entonces como: SP = 04FEH 09H = PCL 04FFH 10H = PCH Dir. de retorno de la primera subrutina (SUBR1) 0500H 12H - En SUBR1, lo primero que se hace es guardar en pila el contenido de los registros A y F. Éstos tienen los valores correspondientes a la resta con borrow que se realizó con las tres primeras instrucciones del fragmento de programa: F F A – dat8 – Fc = 10H – 0FEH – 0 = 10H + CA2(0FEH) = 12 H - - FI FP FS O Z FC 0 0 1 1 0 0 0 1 A = 12H F = 31H Así: SP = 04FCH 31H = F 04FDH 12H = A Contenido de los registros A y F 04FEH 09H = PCL 04FFH 10H = PCH 0500H 12H - La instrucción CALL SUBR2 guarda en pila como dirección de retorno aquella donde empieza la instrucción POP AF (2005H). Después carga en el PC la dirección de inicio de la subrutina (SUBR2 = 2100H). La pila queda entonces como: Pág. 7 SP = 04FAH 05H = PCL 04FBH 20H = PCH Dir. de retorno de la segunda subrutina (SUBR2) 04FCH 31H = F 04FDH 12H = A 04FEH 09H = PCL 04FFH 10H = PCH 0500H 12H 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: 11 de Septiembre de 2007 PROBLEMA 3: Solución (y 2) I - Cuando se atiende a la interrupción (están habilitadas, pues F =1), después de terminar de ejecutar la instrucción en curso, se guarda en pila como dirección de retorno aquella donde empieza la instrucción siguiente a OUT C,A (2103H). A continuación, se carga en el PC la dirección de inicio de la rutina de servicio de dicha interrupción (R_SERVICIO = 2200H). La pila queda así: SP = 04F8H 03H = PCL 04F9H 21H = PCH Dir. de retorno de la subrutina de servicio 04FAH 05H = PCL 04FBH 20H = PCH 04FCH 31H = F 04FDH 12H = A 04FEH 09H = PCL 04FFH 10H = PCH 0500H 12H Dentro de la rutina de servicio, la instrucción NOP no hace nada salvo incrementar el PC y dejarlo apuntando a la siguiente instrucción (2201H) - Las instrucciones RET se dedican a sacar de la pila las direcciones de retorno cargándolas en el PC. Por su parte, POP AF restaura el valor de F y A. 04F8H 03H = PCL 04F8H 03H = PCL 04F8H 03H = PCL 04F9H 21H = PCH 04F9H 21H = PCH 04F9H 21H = PCH SP = 04FAH 05H = PCL 04FAH 05H = PCL 04FAH 05H = PCL 04FBH 20H = PCH 04FBH 20H = PCH 04FBH 20H = PCH 04FCH 31H = F SP = 04FCH 31H = F 04FCH 31H = F 04FDH 12H = A 04FDH 12H = A 04FDH 12H = A 04FEH 09H = PCL 04FEH 09H = PCL 04FEH 09H = PCL 04FFH 10H = PCH 04FFH 10H = PCH 04FFH 10H = PCH 0500H 12H 0500H 12H SP = 0500H 12H 1er RET 2º RET( ) POP AF ( ) y 3 er RET Con todas estas consideraciones, la tabla pedida es: Pág. 8 PC SP (SP) 2000H 04FEH 09H 2100H 04FAH 05H 2201H 04F8H 03H 2005H 04FCH 31H 2006H 04FEH 09H 1200H 0500H 12H 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: 11 de Septiembre de 2007 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. Instrucción µInstrucciones µÓrdenes Operación PC → ABUS (ABUS) → DBUS DBUS → CO PC++ PC → ABUS (ABUS) → DBUS DBUS → DIRL PC++ PC → ABUS (ABUS) → DBUS DBUS → DIRH PC++ SP-- SP → ABUS PCH → DBUS DBUS → (ABUS) SP-- SP → ABUS PCL → DBUS DBUS → (ABUS) DIR→ ABUS ABUS → PC CLI salpc mem, rd ckco reg1, ckpcl, ckpch alu1, alu2, cka, ckfl, ckfc Pág. 1 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: 11 de Septiembre de 2007 PROBLEMA 1: Solución (y 1) Instrucción µInstrucciones µÓrdenes Operación PC → ABUS salpc (ABUS) → DBUS mem, rd DBUS → CO ckco PC++ reg1, ckpcl, ckpch F PC → ABUS salpc (ABUS) → DBUS mem, rd DBUS → DIRL ckdirl PC++ reg1, ckpcl, ckpch F PC → ABUS salpc (ABUS) → DBUS mem, rd DBUS → DIRH ckdirh PC++ reg1, ckpcl, ckpch F SP-- reg1, reg0, ckspl, cksph Iid16 SP → ABUS salsp PCH → DBUS salpch DBUS → (ABUS) mem, wr W SP-- reg1, reg0, ckspl, cksph Iid16 SP → ABUS salsp PCL → DBUS salpcl DBUS → (ABUS) mem, wr W DIR→ ABUS saldir CALL addr ABUS → PC ckpcl, ckpch It16 PC → ABUS salpc (ABUS) → DBUS mem, rd DBUS → CO ckco PC++ reg1, ckpcl, ckpch CLI 0 → FI quitfi Fflag PC → ABUS salpc (ABUS) → DBUS mem, rd DBUS → CO ckco PC++ reg1, ckpcl, ckpch F NEG A -A → A alu1, alu2, cka, ckfl, ckfc Italu 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: 11 de Septiembre de 2007 PROBLEMA 2 (2.5 puntos) Dado el siguiente programa: ORG 2000H MOV B,(4328H) MOV C,(2518H) XOR A,A Bucle: ADD A,B DEC C JNZ Bucle HLT se pide: a) Escribir su código máquina indicando la dirección de comienzo de cada instrucción. (0.75 puntos) b) ¿Cuál es la función del programa? (0.75 puntos) c) ¿Cuánto tiempo tarda en ejecutarse si se cumple que (4328H) = 05H y (2518H) = 03H y la frecuencia de reloj de la CPU es 100 MHz? (1 punto) 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: 11 de Septiembre de 2007 PROBLEMA 2: Solución (y 1) Apartado a) INSTRUCCIÓN POSICIÓN CONTENIDO CICLOS DE RELOJ MOV B, (4328H) 2000H 70H, 28H, 43H 18 MOV C, (2518H) 2003H 78H, 18H, 25H 18 XOR A, A 2006H 0F9H 7 ADD A, B 2007H=Bucle 8AH 7 DEC C 2008H 0A3H 7 JNZ Bucle 2009H 1BH, 0FCH 7 / 12 HLT 200BH 0EH 3 Apartado b) Las tres primeras instrucciones sirven para inicializar los registros, A = 0, B = (4328H) y C = (2518H). El bucle suma el contenido del registro B tantas veces como indique el registro C, es decir, el programa multiplica el contenido del registro B por el contenido del registro C. Apartado c) Para este apartado tendremos en cuenta que B = 05H y C = 03H. De acuerdo con estos valores, las tres primeras instrucciones se ejecutan sólo una vez, lo mismo que HLT, y el bucle se ejecuta tres veces, por lo tanto: INSTRUCCIÓN 1ª Iterac. 2ª Iterac. 3ª Iterac. MOV B, (4328H) 18 MOV C, (2518H) 18 XOR A, A 7 ADD A, B 7 7 7 DEC C 7 7 7 JNZ Bucle 12 12 7 HLT 3 TOTAL 69 26 24 Nº Ciclos totales = 69 + 26 + 24 = 119 Pág. 4 Tiempo de ejecución = segµ19'1 Mhz100 ciclos119 f ciclosºN == 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: 11 de Septiembre de 2007 PROBLEMA 3 (2.5 puntos) La tabla adjunta es un volcado de las primeras posiciones de memoria y el código máquina de un programa cargado entre las direcciones 3518H y 351FH. Además, se conocen los siguientes datos iniciales: FI = 1 SP = 0FF00H PC = 3518H POSICIÓN CONTENIDO 0000H 0001H 0002H 0003H 0004H 81H 98H 0CDH 0ABH 01H -------------- ----------------- 3518H 3519H 351AH 351BH 351CH 351DH 351EH 351FH 6CH 8FH 74H 0C1H 8AH 14H 0F9H 00H Se pide: a) Desensamblar la zona de memoria comprendida entre las direcciones 3518H y 351FH. (0.6 puntos) b) Se produce una interrupción hardware con vector 1 cuando PC = 351EH. Hacer un esquema de la pila, indicando las direcciones y sus contenidos, y dar los valores de PC y SP cuando se va a ejecutar la rutina de atención de la interrupción. (0.7 puntos) c) Hacer una tabla con los ciclos de máquina que se producen desde que se activa la señal int de la interrupción del apartado anterior hasta que empieza a ejecutarse la rutina de atención. Indicar también, en esa tabla, los valores del ABUS y del DBUS para cada ciclo de máquina. (0.7 puntos) d) Repetir el apartado b) si la dirección 351BH cambia su contenido a 71H. (0.5 puntos) 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: 11 de Septiembre de 2007 PROBLEMA 3: Solución (1) Apartado a) A continuación se indica el código desensamblado: 6CH, 8FH ----------------- MOV A, 8FH 74H, 0C1H --------------- MOV B, 0C1H 8AH ------------------------ ADD A, B 14H, 0F9H --------------- JNO 3518H 00H ------------------------ NOP Apartado b) Primero, se termina de ejecutar la instrucción en curso (salto condicional) antes de atender a la interrupción (téngase en cuenta que las interrupciones están habilitadas, pues FI = 1). Precediendo a la instrucción de salto, se produce la suma A + B = 8FH + 0C1H = 50H, con Fo = 1, por lo que no se cumple la condición de salto y la CPU se limita a incrementar el PC, que queda apuntando a la dirección 351FH. Esta es la dirección que se guarda en la pila previamente a poder atender a la interrupción, para lo que el registro SP se decrementa dos veces quedando con el valor 0FEFEH. Para obtener la dirección de inicio de la rutina de atención, el vector se multiplica por dos, se leen esa dirección y la siguiente (con el criterio “little endian”) y se obtiene la dirección 0ABCDH. En esa dirección, comenzará la rutina de servicio y, por tanto, se cargará en el registro PC. Así, el valor pedido de los registros PC y SP será: PC = 0ABCDH SP = 0FEFEH y el esquema de ocupación de la pila: Contenido Dirección 1FH 35H 0FEFEH 0FEFFH 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: 11 de Septiembre de 2007 PROBLEMA 3: Solución (y 2) Apartado c) C. Máquina ABUS DBUS Rec. Int. (RI) ----------- 01H Esc. (W) Esc.(W) Lec. (R) Lec. (R) 0FEFFH 0FEFEH 0002H 0003H 35H 1FH 0CDH 0ABH Apartado d) En este caso, antes del salto se produce la suma A + B = 8FH + 71H = 00H, con Fo = 0. Por tanto, sí se cumple la condición de salto y entonces el PC queda apuntando a la dirección 3518H, que es la dirección que se guarda en la pila antes de prestar servicio a la interrupción. En cuanto a los valores de los registros SP y PC, no hay cambios con respecto al apartado b), pues el proceso a seguir es el mismo que allí se vio para calcular sus contenidos. Así: PC = 0ABCDH SP = 0FEFEH En cambio, el esquema de la pila sí varía al ser otra la dirección que se guarda en ella: Contenido Dirección 18H 35H 0FEFEH 0FEFFH Pág. 7 FC_-_Septiembre_2007_-_Teoria_-_Soluciones.pdf UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones FUNDAMENTOS DE COMPUTADORES (Teoría. Examen Final. Mañana) CONVOCATORIA: 11 de Septiembre 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) Si SP = 2009H cuando se está leyendo la instrucción POP AF, ¿cuánto valdrá después de ejecutarla?: a) 2011H. b) 200AH. c) 2007H. d) **200BH. 2) Cuando se está leyendo el código de operación de la instrucción CALL 1000H, la cual comienza en la posición 0100H, se produce una interrupción hardware de vector 30H, cuya rutina de servicio empieza en la posición 2000H. Sabiendo que FI = 0, ¿cuál es el valor del PC después de terminar de leer dicha instrucción?: a) 1000H. b) 2000H. c) 0101H. d) **0103H. 3) ¿Cómo quedan los flags del registro de estado del Indalo 3.0 después de ejecutar la siguiente secuencia de instrucciones?: MOV A, 8FH SHL A AND A, 18H a) FC = 0, FO = 1, FZ = 0, FS = 0, FP = 1. b) **FC = 0, FO = 0, FZ = 0, FS = 0, FP = 1. c) FC = 0, FO = 0, FZ = 0, FS = 0, FP = 0. d) FC = 1, FO = 0, FZ = 0, FS = 0, FP = 1. 4) En una instrucción de salto condicional del Indalo 3.0, la dirección de salto: a) Está en los dos bytes siguientes al código de operación. b) Se obtiene sumando al PC un dato de 16 bits. c) Se obtiene sumando al PC un dato de 8 bits que es un entero sin signo. d) **Se obtiene sumando al PC un dato de 8 bits que es un entero con signo. 5) La instrucción MOV A,op8: a) Ocupa 3 bytes de memoria. b) **Ocupa 2 bytes de memoria. Pág. 1 c) Ocupa 1 byte de memoria. d) Puede ocupar 1, 2 ó 3 bytes de memoria, según sea el valor de op8. UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones FUNDAMENTOS DE COMPUTADORES (Teoría. Examen Final. Mañana) CONVOCATORIA: 11 de Septiembre de 2007 TEST (continuación) 6) En un sistema de memoria, la microórden mem se utiliza para: a) **Activar el decodificador principal de la memoria. b) Activar la línea CS de un circuito integrado de memoria concreto. c) Abrir el driver bidireccional de los circuitos integrados de memoria. d) Notificar un acceso a memoria, por lo que debe activarse antes de enviar la dirección de la posición a la que se desea acceder. 7) Cuando se ejecuta la instrucción INT vector, ¿cuál es la secuencia de pasos que se siguen?: a) Primero, activación de int, luego de inta y, por último, envío del vector. b) Primero, activación de inta, luego de int y, por último, envío del vector. c) Envío del vector, activación de int y después de inta. d) **Ninguna de las respuestas anteriores es correcta. 8) De las instrucciones NOP y HLT puede afirmarse que: a) Son idénticas en su forma de trabajar y sólo se diferencian en que la segunda no está disponible en la versión 2.0 del Indalo. b) **HLT se diferencia de NOP en que no incrementa el PC. c) NOP se diferencia de HLT en que no incrementa el PC. d) Las dos sólo constan de código de operación, por lo que su tiempo de ejecución es el mismo. 9) En el direccionamiento de un puerto: a) Se usa el valor del registro SP para identificar el puerto. b) **Se utilizan los 8 bits de menos peso del ABUS. c) Se utilizan los 8 bits del DBUS para identificar el puerto. d) Se utiliza el registro X para identificar el puerto. 10) La ejecución de una instrucción: a) No requiere nunca ciclos de fetch. b) **Requiere siempre al menos un ciclo de fetch. c) Utiliza siempre tres ciclos de fetch. d) Si es interna, no requiere ciclos de fetch. 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: 11 de Septiembre 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: 11 de Septiembre 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) Si SP = 3000H cuando se está leyendo la instrucción PUSH AF, ¿cuánto valdrá después de ejecutarla?: a) 3002H. b) 3001H. c) 2FFFH. d) **2FFEH. 2) Cuando se está leyendo el código de operación de la instrucción CALL 2000H, la cual comienza en la posición 0200H, se produce una interrupción hardware de vector 40H, cuya rutina de servicio empieza en la posición 3000H. Sabiendo que FI = 0, ¿cuál es el valor del PC cuando la CPU Indalo 3.0 termina la ejecución de dicha instrucción?: a) 3000H. b) 0203H. c) **2000H. d) 0201H. 3) ¿Cómo quedan los flags del registro de estado del Indalo 3.0 después de ejecutar la siguiente secuencia de instrucciones?: MOV A, 8FH SHR A XOR A, 3 a) FC = 0, FO = 1, FZ = 0, FS = 0, FP = 1. b) **FC = 0, FO = 0, FZ = 0, FS = 0, FP = 1. c) FC = 0, FO = 0, FZ = 0, FS = 0, FP = 0. d) FC = 1, FO = 0, FZ = 0, FS = 0, FP = 1. 4) De una instrucción de salto condicional podemos decir que: a) Si no se cumple la condición de salto, no se ejecuta. b) Siempre consume el mismo número de ciclos de reloj. c) Calcula la dirección de salto sumando al PC un valor sin signo de dieciséis bits. d) **Si no cumple la condición de salto, incrementa dos veces el PC. 5) Las instrucciones en el Indalo 3.0: a) **Ocupan, al menos, un byte en memoria. b) Contienen ,al menos, un registro como operando. Pág. 1 c) Requieren un mínimo de dos ciclos de máquina para su lectura y ejecución. d) Pueden comprender dos, tres, o cuatro bytes. UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones FUNDAMENTOS DE COMPUTADORES (Teoría. Examen Final. Tarde) CONVOCATORIA: 11 de Septiembre de 2007 TEST (continuación) 6) La instrucción MOV A,B realiza una transferencia del registro B al A a través …: a) … de los 8 bits más significativos del ABUS. b) … de los 8 bits menos significativos del ABUS. c) **… del DBUS, pasando por la ALU. d) … del DBUS, sin pasar por la ALU. 7) ¿Cuál de los siguientes elementos no interviene en el funcionamiento del secuenciador central?: a) Los flags. b) El código de operación de las instrucciones. c) **La referencia a operandos de las instrucciones. d) La señal de control WAIT. 8) Las directivas del lenguaje ensamblador son: a) Instrucciones que ejecuta la CPU sin usar la ALU. b) Instrucciones que son traducidas a código máquina. c) Instrucciones que se ejecutan en un ciclo de reloj. d) **Indicaciones para el programa ensamblador que no son traducidas a código máquina. 9) La instrucción INT vector: a) Es exactamente igual que la instrucción JMP addr. b) Se ve afectada por la máscara de interrupciones. c) En ningún instante de su ejecución utiliza la pila. d) **Todas las respuestas anteriores son falsas. 10) La instrucción IN B,C de Indalo 3.0 sirve para: a) Leer un byte del puerto indicado en C y depositarlo en B. b) Leer un byte del puerto indicado en B y depositarlo en A. c) Transferir el valor del registro C al B. d) **Nada, pues es sintácticamente incorrecta. 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: 11 de Septiembre 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 ic_2003_colecci?n.pdf UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Introducción a las Computadoras (Prob.). CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 3 de Febrero de 2003. (Mañana) 2003-1- PROBLEMA. 1 (2.5 Puntos) Represente, en la tabla que aparece a continuación, microinstrucciones, microórdenes y operaciones básicas de la secuencia de instrucciones: SHL A, JNP etiqueta (si se cumple la condición) y NOP. Instrucción µInstrucciones µÓrdenes Operación Básica UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Introducción a las Computadoras (Prob.). CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 3 de Febrero de 2003. (Mañana) 2003-2- PROBLEMA. 1 (cont.) SOLUCIÓN Instrucción µInstrucciones µÓrdenes Operación Básica PC → ABUS salpc (ABUS) → DBUS mem, rd DBUS → CO ckco PC++ reg1, ckpcl, ckpch 0 → FC quitfc Fflag ENT1 <rc< → RESULT alu3, alu0, ckfl, ckfc SHL A DBUS → A cka Italu PC → ABUS salpc (ABUS) → DBUS mem, rd DBUS → CO ckco PC++ reg1, ckpcl, ckpch F PC → ABUS salpc (ABUS) → DBUS mem, rd DBUS → DIRL ckdirl PC++ reg1, ckpcl, ckpch F PC → ABUS salpc ABUS+DIRL → ABUS sumdir JNP etiqueta (P=0) ABUS → PC ckpcl, ckpch It16 PC → ABUS salpc (ABUS) → DBUS mem, rd DBUS → CO ckco NOP PC++ reg1, ckpcl, ckpch F UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Introducción a las Computadoras (Prob.). CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 3 de Febrero de 2003. (Mañana) 2003-3- PROBLEMA. 2 (2.5 Puntos) Dado el siguiente fragmento de programa: ........................ XOR A, A MOV BC,0A48EH MOV A, 9FH ADC A, B bucle : SHL A JO bucle CMP A, C ........................ Se pide: a) Contenido del acumulador, A, al finalizar el programa. b) Estado de los flags FC, FZ, FO, FS y FP tras ejecutar CMP A, C. c) Interprete la secuencia de los flags obtenida suponiendo que los operandos son enteros sin signo y también para enteros con signo. SOLUCIÓN Desarrollando el fragmento de código se obtiene: CÓDIGO EJECUCIÓN XOR A, A 0→A MOV BC,0A48EH A4H→B, 8EH→C MOV A, 9FH 9FH→A ADC A, B 9FH+A4H=143H ⇒ 43H→A, 1→FC Ciclo 1 Ciclo 2 Ciclo 3 bucle : SHL A 86H→A, 1→FO 0CH→A, 1→FO 18H→A, 0→FO JO bucle salta salta no salta CMP A, C 18H - 8EH= 8AH→ FC= 1, FZ= 0, FO= 1, FS = 1 y FP= 0 a) A= 18H b) FC= 1 (borrow), FZ= 0, FO= 1, FS = 1 y FP= 0 c) Según el valor de los flags: a. Si los operandos son sin signo A<B (FC= 1) b. Si los operandos son con signo A>B (FO= 1 y FS = 1) UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Introducción a las Computadoras (Prob.). CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 3 de Febrero de 2003. (Mañana) 2003-4- PROBLEMA. 3 (2.5 Puntos) Dado el siguiente fragmento de programa ORG 2000H MOV X, 2816H MOV A, 1 MOV (X), A MOV C,5 bucle : SHL A MOV B, A ADD A, (X) MOV (X), A MOV A, B DEC C JNZ bucle HLT Se pide: a) Escribir el código máquina (0.5 ptos). b) Valor final de los registros y de las posiciones de memoria que intervienen (0.75 ptos). c) Función del programa (0.75 ptos). d) Tiempo que tarda en ejecutarse si la frecuencia del reloj de la CPU es de 100MHz (0.5 ptos). SOLUCIÓN a) Dirección Instrucciones Código Máquina Ciclos de Reloj 2000H MOV X, 2816H 56 16 28 15 2003H MOV A, 1 6C 01 10 2005H MOV (X), A 49 00 13 2007H MOV C,5 7C 05 10 2009H bucle: SHL A E0 7 200AH MOV B, A 71 7 200BH ADD A, (X) 8E 00 13 200DH MOV (X), A 49 00 13 200FH MOV A, B 6A 7 2010H DEC C A3 7 2011H JNZ bucle 17 F6 7/12 2013H HLT 0E 5 UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Introducción a las Computadoras (Prob.). CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 3 de Febrero de 2003. (Mañana) 2003-5- PROBLEMA. 3 (cont.) b) El proceso de ejecución resulta: ORG 2000H 1 MOV X, 2816H 2816H→X 2 MOV A, 1 1→A 3 MOV (X), A 1→(2816H) Ciclo1 Ciclo1 Ciclo1 Ciclo1 Ciclo1 4 MOV C,5 5→C 5 bucle: SHL A 2→A 4→A 8→A 16→A 32→A 6 MOV B, A 2→B 4→B 8→B 16→B 32→B 7 ADD A, (X) 1+2=3→A 4+3=7→A 8+7=15→A 16+15=31→A 32+31=63→ A 8 MOV (X), A 3→(2816H) 7→(2816H ) 15→(2816H ) 31→(2816H) 63→(2816H) 9 MOV A, B 2→A 4→A 8→A 16→A 32→A 10 DEC C 4→C 3→C 2→C 1→C 0→C 11 JNZ bucle salta salta salta salta no salta 12 HLT parada A= B= 32, C= 0, (2816H)= 63 c) Si llamamos n al número almacenado en el registro C, el programa obtiene en la posición de memoria 2816H el resultado de la expresión: 2n+1-1 y en el registro A= 2n. d) El número de ciclos de reloj, será: nº ciclos= 15+10+13+10+(7×5)+ (7×5)+ (13×5)+ (13×5)+ (7×5)+ (7×5)+ (12×4)+7+5= 378 s78.3 MHz100 ciclos378Tiempo µ== UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Introducción a las Computadoras (Prob.). CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 3 de Febrero de 2003. (Mañana) 2003-6- 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 ptos. Cada respuesta incorrecta descuenta 0,1 ptos. 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 hoja siguiente) 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 INT 03FH: a) Es una interrupción hardware b) Condiciona su ejecución al estado de la máscara de interrupciones c) Efectúa una lectura en las direcciones 007EH y 007FH. d) Equivale a un salto incondicional 2.- La instrucción JC address: a) En código máquina ocupa tres posiciones de memoria b) El tiempo de ejecución varía según el estado del flag de acarreo. c) Después de ejecutarse el flag de acarreo se pone siempre a cero. d) Guarda, antes de saltar, la dirección de retorno en la pila 3.- En el Indalo III el registro SP (Stack Pointer): a) Se usa en los direccionamientos indirectos indexados. b) Contiene la dirección del último dato introducido en la pila. c) Al efectuarse una lectura en la pila, disminuye en dos unidades d) A veces, interviene en loa ciclos de Fetch. 4.- Sobre los flags podemos decir: a) Fc = 1 indica desbordamiento en sumas aritméticas de enteros sin signo. b) F0 = 1 indica desbordamiento en operaciones lógicas. c) Fz no se activa nunca en sumas aritméticas. d) Fs = 1 indica que A<B después de efectuar la operación A-B si A y B son enteros con signo. 5.- Después de efectuar CMP A,B los flags quedan como sigue: Fc = Fo = 1 Fz = Fs =0 a) Significa que si A y B son enteros sin signo A<B. b) Si son enteros con signo A>B. c) Si son enteros sin signo no se produce desbordamiento. d) Si son enteros con signo, el resultado ha sido negativo. UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Introducción a las Computadoras (Prob.). CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 3 de Febrero de 2003. (Mañana) 2003-7- TEST (cont.) 6.- Sobre el Mpx que el Indalo III tiene en la entrada del registro PC podemos decir: a) Es imprescindible en las operaciones de incremento y decremento de registros. b) Permite cargar el registro PC, según convenga, con el contenido del DBUS o con el del ABUS. c) Permite utilizar el registro PC en los accesos a la pila. d) Solo interviene en las interrupciones hardware. 7.- Sobre los ciclos de Fetch podemos decir: a) Algunas instrucciones no efectúan ningún ciclo de Fetch. b) Existen ciclos de Fetch de lectura y ciclos de Fetch de escritura. c) En los ciclos de Fetch interviene siempre el registro PC. d) La duración de todos los ciclos de Fetch es siempre la misma. 8.- Sobre los ciclos de máquina podemos decir: a) En todos los ciclos de máquina interviene siempre la memoria. b) En todos los ciclos de máquina interviene siempre el bus de datos. c) La duración de cualquier ciclo de máquina es constante. d) Algunas instrucciones no efectúan ningún ciclo de máquina. 9.- De los registros del Indalo III podemos decir: a) El registro DIR siempre contiene una dirección. b) El registro X se usa en los direccionamientos indirectos indexados. c) El registro SP interviene en algunos ciclos de Fetch. d) El registro BC se utiliza en las operaciones de SHIFTS aritméticos. 10.- Sobre las instrucciones en Ensamblador de operaciones lógicas podemos decir. a) AND A,B es cero si y solo si A = B = 0. b) OR A,B es cero si y solo si A = B = 0. c) XOR A,B es cero si A ≠ B . d) TEST A,B no afecta a los flags. UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Introducción a las Computadoras (Prob.). CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 3 de Febrero de 2003. (Mañana) 2003-8- TEST (cont.) 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 APELLIDOS Y NOMBRE: ASIGNATURA: Introducción a las Computadoras (Prob.). CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 2 de Junio de 2003. (Mañana) 2003-9- PROBLEMA. 1 (2.5 Puntos) a) Completar la siguiente tabla, indicando las microinstrucciones, operaciones básicas e instrucción o instrucciones correspondientes. (1 pto) INSTRUCCIÓN Op. Básicas Microinstrucciones Microórdenes salpc mem, rd ckco reg1, ckpch, ckpcl reg1, reg0, cksph, ckspl salsp sala mem, wr reg1, reg0, cksph, ckspl salsp salfl mem, wr UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Introducción a las Computadoras (Prob.). CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 2 de Junio de 2003. (Mañana) 2003-10- PROBLEMA. 1 (cont.) b) Indicar en la siguiente tabla las operaciones básicas, microinstrucciones y microórdenes necesarias para ejecutar la instrucción JNZ addr para FZ=0 y FZ=1. (1.5 ptos) Instrucción Op. básicas Microinstrucciones Microórdenes JNZ addr (FZ = 0) JNZ addr (FZ = 1) UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Introducción a las Computadoras (Prob.). CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 2 de Junio de 2003. (Mañana) 2003-11- PROBLEMA. 1 (cont.) SOLUCIÓN a) INSTRUCCIÓN Op. Básicas Microinstrucciones Microórdenes PC→ABUS salpc (ABUS)→DBUS mem, rd DBUS→CO ckco F PC++ reg1, ckpch, ckpcl Iid16 SP-- reg1, reg0, cksph, ckspl SP→ABUS salsp A→DBUS sala W DBUS→(ABUS) mem, wr Iid16 SP-- reg1, reg0, cksph, ckspl SP→ABUS salsp F→DBUS salfl PUSH AF W DBUS→(ABUS) mem, wr b) Instrucción Op. Básicas Microinstrucciones Microórdenes PC→ABUS salpc (ABUS)→DBUS mem, rd DBUS→CO ckco F PC++ reg1, ckpch, ckpcl PC→ABUS salpc (ABUS)→DBUS mem, rd DBUS→DIRL ckco F PC++ reg1, ckpch, ckpcl PC→ABUS salpc JNZ addr (Fz=1) It16 ABUS+DIRL→PC sumdir, ckpcl, ckpch PC→ABUS salpc (ABUS)→DBUS mem, rd DBUS→CO ckco F PC++ reg1, ckpch, ckpcl JNZ addr (Fz=0) Iid16 PC++ reg1, ckpch, ckpcl UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Introducción a las Computadoras (Prob.). CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 2 de Junio de 2003. (Mañana) 2003-12- PROBLEMA. 2 (2.5 Puntos) Sea el siguiente programa en ensamblador: ORG 2F20H MOV A, 0DBH MOV BC, 3007H bucle : SUB A,B JZ [FMR1]fin JC fin DEC C JZ fin JC fin JMP bucle fin: HLT 1) Ensambladlo (Obtened el mismo programa en código máquina). (1 pto) 2) Si la frecuencia del reloj del sistema es de 1GHz. Obtened el tiempo que tarda en ejecutarse el programa. (1 pto) 3) Valor final del registro A. (0.5 ptos) SOLUCIÓN 1) DIRECCIÓN CONTENIDO PULSOS 2F20H 6CDBH 10 2F22H 520730H 15 2F25H F2H 7 2F26H 1B0AH 7/12 2F28H 1108H 7/12 2F2AH A3H 7 2F2BH 1B05H 7/12 2F2DH 1103H 7/12 2F2FH 12252FH 15 2F32H 0EH 3 UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Introducción a las Computadoras (Prob.). CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 2 de Junio de 2003. (Mañana) 2003-13- PROBLEMA. 2 (cont.) 2) Ejecución del programa: MOV A,0DBH ; A DBH MOV BC,3007H ; B 30H C 07H ;BUCLE 1ª VEZ ---------------------------------------------------------------------------------------------- SUB A,B ; DBH – 30H = 11011011 + 11010000 = 10101011 A = ABH ; Fc = 0 Fz = 0 JZ FIN (No salta) JC FIN (No salta) DEC C ; C = 6 Fz = 0 JZ FIN (No salta) JC FIN (No salta) (El Fc = 0 debido a la instrucción SUB A,B) JMP BUCLE ;BUCLE 2ª VEZ ------------------------------------------------------------------------------------------------ SUB A,B ; ABH – 30H = 10101011 + 11010000 = 01111011 A = 7BH ; Fc = 0 Fz = 0 JZ FIN (No salta) JC FIN (No salta) DEC C ; C = 5 Fz = 0 JZ FIN (No salta) JC FIN (No salta) (El Fc = 0 debido a la instrucción SUB A,B) JMP BUCLE ;BUCLE 3ª VEZ ------------------------------------------------------------------------------------------------------- SUB A,B ; 7BH – 30H = 01111011 + 11010000 = 01001011 A = 4BH ; Fc = 0 Fz = 0 JZ FIN (No salta) JC FIN (No salta) DEC C ; C = 4 Fz = 0 JZ FIN (No salta) JC FIN (No salta) (El Fc = 0 debido a la instrucción SUB A,B) JMP BUCLE ;BUCLE 4ª VEZ --------------------------------------------------------------------------------------------------------- SUB A,B ; 4BH – 30H = 01001011 + 11010000 = 00011011 A = 1BH ; Fc = 0 Fz = 0 JZ FIN (No salta) JC FIN (No salta) DEC C ; C = 3 Fz = 0 JZ FIN (No salta) JC FIN (No salta) (El Fc = 0 debido a la instrucción SUB A,B) JMP BUCLE UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Introducción a las Computadoras (Prob.). CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 2 de Junio de 2003. (Mañana) 2003-14- PROBLEMA. 2 (cont.) ;BUCLE 5ª VEZ --------------------------------------------------------------------------------------------------------- SUB A,B ; 1BH – 30H = 00011011 + 11010000 = 11101011 A = EBH ; Fc = 1 Fz = 0 JZ FIN (No salta) JC FIN (salta) HLT Nº de pulsos de reloj N = 10 + 15 + 4x 57 +7 + 7 + 12 + 3 = 284 Tiempo que tarda en ejecutarse el programa 282 / 1 GHz = 282 nsg = 0,282 µsg UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Introducción a las Computadoras (Prob.). CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 2 de Junio de 2003. (Mañana) 2003-15- PROBLEMA. 3 (2.5 Puntos) Se dispone de una tarjeta de expansión que se inserta en un ordenador equipado con un microprocesador INDALO 3.0. La tarjeta incorpora dos conexiones, una a un sensor que mide la temperatura del agua de un tanque y otra a un calentador, situado bajo éste, para controlar su encendido. INDALO 3.0 TARJETA TANQUE AGUA CALENTADOR SENSOR Dicha tarjeta dispone de tres puertos de E/S, con los siguientes cometidos: − Puerto 1: En él se anota la temperatura mínima admisible para el agua del tanque (TMIN). − Puerto 2: Ahí es donde se registra cada 30 sg la temperatura que mide el sensor (TMED). − Puerto 3: Registro de estado. Si el agua del tanque se enfría más de lo permitido (TMIN > TMED), la interfaz de la tarjeta generará la interrupción 0DH, al tiempo que modificará algunos bits del registro de estado para indicar esta situación. La rutina de servicio para esa interrupción, que figura a continuación, tiene como primer cometido estudiar los bits del registro de estado que han sido modificados por la tarjeta para comprobar si, efectivamente, la causa que ha generado la interrupción es un enfriamiento del agua. Sólo en caso afirmativo, procederá a activar otros bits de ese mismo registro de estado, lo cual servirá para indicar a la tarjeta que encienda el calentador con objeto de incrementar la temperatura del agua. temp: MOV C, 2AH IN A, C MOV B, A XOR A, 40H AND A, 0C0H JNZ final MOV A, B OR A, 06H OUT C, A final: RET UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Introducción a las Computadoras (Prob.). CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 2 de Junio de 2003. (Mañana) 2003-16- PROBLEMA. 3 (cont.) NOTA: Para simplificar el diseño de la rutina de servicio, se ha considerado que la desconexión del calentador es automática transcurridos 10 sg desde su encendido. Tampoco se ha entrado en valoraciones tales como guardar el contenido de los registros que puedan ser modificados durante su ejecución. 1) Considerando que el contenido de una parte de la memoria principal es: 0019H 0FH 001AH 2CH 001BH 4FH 001CH 70H 001DH 00H 001EH 7CH calcular la dirección de comienzo de la rutina de servicio de la interrupción 0DH (0,7 puntos). 2) ¿Cuál es la dirección del registro de estado? (0,5 puntos). UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Introducción a las Computadoras (Prob.). CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 2 de Junio de 2003. (Mañana) 2003-17- PROBLEMA. 3 (cont.) 3) ¿Qué bits del registro de estado indican si el enfriamiento del agua del tanque es mayor que el permitido (TMIN > TMED)?. ¿A qué valor lógico indican dicha situación?. Numérense de b0 a b7, de menor a mayor peso (0,8 puntos). 4) ¿Qué bits del registro de estado hay que activar para indicar a la tarjeta que active el calentador? (0,5 puntos). IMPORTANTE: Ninguna de las respuestas puntuará si no está debidamente razonada. UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Introducción a las Computadoras (Prob.). CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 2 de Junio de 2003. (Mañana) 2003-18- PROBLEMA. 3 (cont.) SOLUCIÓN 1) Tenemos que: N = 0DH = 1310 ⇒ 2N = 2610 = 001AH y 2N+1 = 2710 = 001BH (001AH) = 2CH y (001BH) = 4FH ⇒ addr = 4F2CH 2) El único puerto que maneja la subrutina figura en la primera instrucción, momento en el que se procede a direccionarlo. Se trata de 2AH. 3) La instrucción AND anula todos los bits del acumulador (donde se ha volcado el contenido del puerto 2AH) salvo b7 y b6. La instrucción XOR invierte previamente b6. Si b7 y el inverso de b6 son distintos de cero, se produce el salto condicional y se sale de la subrutina sin hacer nada. En consecuencia, los valores pedidos son b6 = 1 y b7 = 0. 4) Si no se produce el salto, esto es, si se da la condición pedida sobre los bits b7 y b6, la instrucción OR pone a 1 los bits b2 y b1, conservando el valor del resto. Acto seguido se guardan las actualizaciones en el registro de estado de la tarjeta antes de salir de la subrutina. UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Introducción a las Computadoras (Prob.). CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 2 de Junio de 2003. (Tarde) 2003-19- PROBLEMA. 1 (2.5 Puntos) a) Complete la tabla siguiente (2 ptos.). b) Comente, brevemente, el significado de la operación que hacen las instrucciones representadas en la tabla (0.5 ptos.). Instrucción µInstrucciones µÓrdenes Operación Básica PC → ABUS (ABUS) →DBUS DBUS → CO PC ++ BC → ABUS (ABUSL) → DBUS DBUS → A XOR A, 02H salpc mem, rd ckco ckpch, ckpcl, reg1 salbc sala io,wr UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Introducción a las Computadoras (Prob.). CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 2 de Junio de 2003. (Tarde) 2003-20- PROBLEMA. 1 (cont) SOLUCIÓN Instrucción µInstrucciones µÓrdenes Operación Básica PC → ABUS salpc (ABUS) →DBUS mem,rd DBUS → CO ckco PC ++ reg1, ckpch, ckpcl F BC → ABUS salbc (ABUSL) → DBUS io, rd IN A,C DBUS → A ckca IP PC → ABUS salpc (ABUS) →DBUS mem, rd DBUS → CO ckco PC ++ ckpch, ckpcl, reg1 F PC → ABUS salpc (ABUS) → DBUS mem, rd DBUS ⊕ A→ A ckca, alu3,alu2, alu1, alu0 XOR A, 2H PC ++ reg1, ckpch, ckpcl Falu PC → ABUS salpc (ABUS) → DBUS mem, rd DBUS → CO ckco PC ++ ckpch, ckpcl, reg1 F BC → ABUS salbc A → DBUS sala OUT C,A (DBUS) → (ABUSL) io,wr OP b) Complementa el valor del bit 2 (****.**X*) del puerto indicado por el registro C. UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Introducción a las Computadoras (Prob.). CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 2 de Junio de 2003. (Tarde) 2003-21- PROBLEMA. 2 (2.5 Puntos) Se sabe que las instrucciones de un programa para el Indalo 3 comienzan a partir de la dirección 3000H.El código máquina es el que aparece en el siguiente volcado de memoria: Dirección Contenido 3000H 56H 80H 12H 6EH 00H 3005H 84H 00H 1BH 0BH 40H 300AH 13H 02H C8H E0H 49H 300FH 00H 35H 12H 03H 30H 3014H 0EH Los datos se encuentran en las direcciones 1280H hasta la 1289H (ambas inclusive): Dirección 1280H 1281H 1282H 1283H 1284H 1285H 1286H 1287H 1288H 1289H Contenido 28H 17H 18H 0E8H 0F4H 37H 09H 17H 00H 23H Se pide: a) Desensamblar el programa (0,50 ptos.) b) ¿Cuál es el contenido de las direcciones 1280H hasta la 1289H, al finalizar el programa? (0,75 ptos.) c) ¿Qué hace el programa?. Explicar la funcionalidad del programa en menos de 6 líneas. (0,75 ptos.) d) Calcular el tiempo que tarda en ejecutarse el programa sabiendo que la frecuencia de la CPU es de 100 MHz. (0,50 ptos.) Nota. Contestar cada apartado en el espacio reservado para tal fin. No se corregirá cualquier respuesta que no esté situada en el sitio indicado SOLUCIÓN UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Introducción a las Computadoras (Prob.). CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 2 de Junio de 2003. (Tarde) 2003-22- PROBLEMA. 2 (cont.) a) Código fuente: Dirección Instrucción (código fuente) 3000 H MOV X, 1280H 3003H MOV A, (X) 3005H CMP A, 0 3007H JZ 3014H 3009H SAR A 300AH JNC 300EH 300CH RCL A 300DH SHL A 300EH MOV (X), A 3010H INC X 3011H JMP 3003H 3014H HLT b) ¿Cuál es el contenido de las direcciones 1280H hasta la 1289H, al finalizar el programa? Dirección 1280H 1281H 1282H 1283H 1284H 1285H 1286H 1287H 1288H 1289H Contenido 14H 2EH OCH 0F4H 0FAH 6EH 12H 2EH 00H 23H c) ¿Qué hace el programa?. Explicar la funcionalidad del programa en menos de 6 líneas El programa recorre mediante el registro X, que utiliza como puntero, una lista de números a los que procesa uno a uno, hasta encontrar el 0 , en cuyo caso el programa concluye. El proceso comienza por distinguir si un número es par o impar: los números pares los divide por dos (teniendo en cuenta el signo, que mantiene) y los números impares los multiplica por dos. El número obtenido, se sobreescribe sobre el dato original UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Introducción a las Computadoras (Prob.). CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 2 de Junio de 2003. (Tarde) 2003-23- PROBLEMA. 2 (cont.) d) Calcular el tiempo que tarda en ejecutarse el programa sabiendo que la frecuencia de la CPU es de 100 MHz. Instrucción (código fuente) Ciclos de Reloj Numero de veces que se ejecuta Totales parciales MOV X, 1280H 15 1 15 MOV A, (X) 13 9 117 CMP A, 0 10 9 90 JZ 3014H 7/11 8/1 67 SAR A 7 8 56 JNC 300EH 7/11 4/4 72 RCL A 7 4 28 SHL A 7 4 28 MOV (X), A 13 8 104 INC X 7 8 56 JMP 3003H 15 8 120 HLT 3 1 3 TOTAL FINAL: 756 tiempo = 756 x Periodo = .seg56,7seg 10100 1756 6 µ= ⋅ ⋅ − Tiempo de ejecución = .seg56,7 µ UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Introducción a las Computadoras (Prob.). CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 2 de Junio de 2003. (Tarde) 2003-24- PROBLEMA. 3 (2.5 Puntos) Se dispone de una tarjeta de expansión que se inserta en un ordenador equipado con un microprocesador INDALO 3.0. La tarjeta incorpora dos conexiones, una a un sensor que mide la temperatura del agua de un tanque y otra a un calentador, situado bajo éste, para controlar su encendido. INDALO 3.0 TARJETA TANQUE AGUA CALENTADOR SENSOR Dicha tarjeta dispone de tres puertos de E/S, con los siguientes cometidos: − Puerto 1: En él se anota la temperatura mínima admisible para el agua del tanque (TMIN). − Puerto 2: Ahí es donde se registra cada 30 sg la temperatura que mide el sensor (TMED). − Puerto 3: Registro de estado. La interfaz de la tarjeta genera la interrupción 18H cada vez que se hace una escritura en el puerto 2. La rutina de servicio para esa interrupción, que figura a continuación, tiene como primer cometido leer los puertos de la tarjeta y comprobar si se ha producido un enfriamiento del agua del tanque mayor de lo permitido (TMIN > TMED). Sólo en caso afirmativo, procederá a activar ciertos bits del registro de estado (poniéndolos a 1) para indicar así a la tarjeta que encienda el calentador con objeto de incrementar la temperatura del agua. En caso contrario, los desactivará, apagando de esta forma el calentador. TEMP: MOV C, 9FH IN A, C MOV B, A MOV C, 9EH IN A, C CMP A, B MOV C, 9DH IN A, C JC SALTO AND A, 0F3H OUT C, A JMP FINAL SALTO: OR A, 0CH OUT C, A FINAL: RET UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Introducción a las Computadoras (Prob.). CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 2 de Junio de 2003. (Tarde) 2003-25- PROBLEMA. 3 (cont.) NOTA: Para simplificar el diseño de la rutina de servicio, no se ha entrado en valoraciones tales como guardar el contenido de los registros que puedan ser modificados durante su ejecución. 1) Considerando que el contenido de una parte de la memoria principal es: 002DH 0FH 002EH 2CH 002FH 4FH 0030H 70H 0031H 10H 0032H 7CH calcular la dirección de comienzo de la rutina de servicio de la interrupción 18H (0,5 puntos). 2) ¿Cuál es la dirección del registro de estado? (0,5 puntos). 3) ¿Cuál es la dirección del puerto 1? (0,5 puntos). UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Introducción a las Computadoras (Prob.). CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 2 de Junio de 2003. (Tarde) 2003-26- PROBLEMA. 3 (cont.) 4) ¿Cuál es la dirección del puerto 2? (0,5 puntos). 5) ¿Qué bits del registro de estado indican que hay que activar el calentador del tanque (TMIN > TMED)?. Numérense de b0 a b7, de menor a mayor peso (0,5 puntos). IMPORTANTE: Ninguna de las respuestas puntuará si no está debidamente razonada. UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Introducción a las Computadoras (Prob.). CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 2 de Junio de 2003. (Tarde) 2003-27- PROBLEMA. 3 (cont.) SOLUCIÓN 1) Tenemos que: N = 18H = 2410 ⇒ 2N = 4810 = 0030H y 2N+1 = 4910 = 0031H (0030H) = 70H y (0031H) = 10H ⇒ addr = 1070H 2) Sólo el último puerto leído por la subrutina es el que experimenta manipulación de sus bits. Se trata entonces de 9DH. 3) El salto sólo se efectúa si FC = 1, es decir, si B > A (al restar hay desbordamiento). Dicho salto conduce a una instrucción OR que activa los bits b3 y b2 (encendiendo el calentador). Esto significa que B = TMIN y A = TMED, por lo que el primer puerto leído contiene TMIN y la dirección del puerto 1 será 9FH. 4) Completando el razonamiento del apartado anterior, se deduce que el segundo puerto contiene TMED y su dirección será entonces 9EH. 5) La instrucción AND anula los bits b3 y b2, mientras que OR los pone a 1 (sólo si se produce el salto, es decir, si TMIN < TMED) conservando el resto de los valores. Esos son entonces los bits que gobiernan el encendido del calentador. UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Introducción a las Computadoras (Prob.). CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 2 de Junio de 2003. (Mañana) 2003-28- 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 ptos. Cada respuesta incorrecta descuenta 0,1 ptos. 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 hoja siguiente) 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 los ciclos de escritura, se entiende por tiempo de acceso de una memoria al que transcurre: 1a).- Desde el momento en el que está preparado todo (la dirección y el dato en los buses correspondientes, y además, las señales CS y WE activas), hasta que la memoria recoge el dato del bus. 1b).- Desde el momento en el que la dirección está en el bus, hasta que la memoria está preparada para capturar el dato. 1c).- Desde el momento en el que se selecciona con la señal CS, hasta que se realiza la transferencia del dato. 1d).- Ninguna de las respuestas anteriores es correcta. 2).- Con relación a la instrucción INT vector del INDALO 3.0, puede decirse que... 2a).- ...se diferencia de CALL address únicamente en el modo de direccionamiento. 2b).- ...se produce tanto en las interrupciones hardware como en las software. 2c).- ...sólo se ejecuta si el flag I es igual a 1. 2d).- ...al igual que en el caso de las interrupciones hardware, puede interrumpir al programa que se esté ejecutando en cualquier momento, y no es predecible en que instante se producirá. 3).- Si en un sistema basado en el INDALO 3.0 necesitamos conectar 35 puertos de entrada, 25 de salida y 20 de entrada/salida... 3a).- ...tiene que realizarse forzosamente una decodificación incompleta de las direcciones de los puertos. 3b).- ...la decodificación de las direcciones de los puertos no puede ser incompleta. 3c).- ...la decodificación de las direcciones de los puertos puede ser incompleta de 6 bits. 3d).- ...la decodificación de las direcciones de los puertos puede ser incompleta, pero debe ser de al menos 7 bits. UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Introducción a las Computadoras (Prob.). CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 2 de Junio de 2003. (Mañana) 2003-29- TEST (cont.) 4).- La instrucción ADD A,(X)... 4a).- ...produce durante su ejecución la microorden quitfc. 4b).- ...se lee mediante un único ciclo de fetch. 4c).- ... no existe como tal. Se simula por medio de 2 instrucciones: CLC y ADC A,(X). 4d).- ...produce durante su ejecución la microinstrucción: A⊕DBUS→A. 5).- .El ADM o DMA... 5a).- ...se produce cuando se ejecutan instrucciones que emplean direccionamiento directo para acceder a memoria. 5b).- ...fuerza al micro a guardar la dirección de retorno en la pila. 5c).- ...puede enmascararse mediante un biestable interno del micro. 5d).- Ninguna de las anteriores respuestas es cierta. 6).- Con relación a las instrucciones de salto condicional del INDALO 3.0, puede decirse que... 6a).- ...ocupan un solo byte si no se cumple la condición, y 2 si se cumple. 6b).- ...si el valor del segundo byte es 00, se produce un bucle infinito. 6c).- ...dan lugar siempre a 2 ciclos de fetch. 6d).- Ninguna de las anteriores respuestas es cierta. 7).- Cuando se produce una interrupción hardware 7a).- La tabla de direcciones de las rutinas de atención a las interrupciones ocupa las posiciones de la 00H a la FFH. 7b).- El microprocesador pone en el ABUS la dirección del vector. 7c).- En el INDALO 3.0 el vector debe multiplicarse por 2. 7d).- No hay diferencia entre una interrupción y una instrucción CALL addr. 8).- En el tratamiento de puertos en el INDALO 3.0: 8a).- La dirección del puerto se queda siempre en el registro SP 8b).- Pueden direccionarse hasta 512 puertos. 8c).- Hay unas direcciones reservadas para puertos y otras reservadas para la memoria. 8d).- El acceso a puertos se reconoce porque se activa io. UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Introducción a las Computadoras (Prob.). CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 2 de Junio de 2003. (Mañana) 2003-30- TEST (cont.) 9).- En la CPU INDALO 3.0 ... 9a).- ... la pila crece si crece SP. 9b).- ... la pila se direcciona mediante direccionamiento absoluto. 9c).- ... la pila crece hacia posiciones de memoria decrecientes. 9d).- ... el programa funciona más lento, cuanto menor sea la pila. 10).- El direccionamiento indexado en el INDALO 3.0... 10a).- Hay que sumar dos valores de dos octetos (o bytes) contenidos en los registros B y C para calcular la dirección efectiva del operando. 10b).- Calcula la dirección efectiva del operando sumando el valor del registro X con un desplazamiento de 8 bits. 10c).- No precisa de ninguna suma para calcular la dirección efectiva del operando. 10d).- Ninguna de las anteriores respuestas es correcta. 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 APELLIDOS Y NOMBRE: ASIGNATURA: Introducción a las Computadoras (Prob.). CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 2 de Junio de 2003. (Tarde) 2003-31- 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 ptos. Cada respuesta incorrecta descuenta 0,1 ptos. 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 hoja siguiente) 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) Después de ejecutar la instrucción CMP A,B se llega a la conclusión de que A>B en enteros con signo y que se ha producido desbordamiento. Esto es debido a que: a) Fc=1, Fz =1, Fo =1, Fs = 1 b) Fc=1, Fz =0, Fo =0, Fs = 1 c) Fc=1, Fz =0, Fo =1, Fs = 1 d) Fc=0, Fz =0, Fo =0, Fs = 1 2) De los ciclos de máquina y operaciones internas podemos decir que: a) Un ciclo de fetch termina siempre incrementando el PC. b) Siempre que se produzca una lectura en memoria se produce un ciclo de fetch. c) Algunos ciclos de fetch afectan a los flags. d) Ninguna de las anteriores respuestas es cierta. 3) En INDALO III podemos afirmar: a) Hay instrucciones que no requieren ningún ciclo de fetch. b) Las instrucciones de salto incondicional ocupan tres bytes. c) La instrucción de salto condicional requiere un ciclo de fetch si no se cumple la condición de salto. d) La instrucción de salto condicional siempre se ejecuta en 12 ciclos de reloj. 4) De las interrupciones en Indalo 3.0 podemos decir: a) Todas las interrupciones están producidas por un periférico. b) Cuando se recibe una interrupción la CPU termina el ciclo de máquina en curso y atiende a la interrupción. c) Si la CPU recibe una interrupción con vector 2 accede a las direcciones 4 y 5. d) La CPU atiende cualquier interrupción en cualquier circunstancia. 5) De las instrucciones de INDALO III podemos decir: a) No hay diferencia entre CALL addr y JMP addr. b) RET produce dos ciclos de escritura en memoria. c) No hay ninguna diferencia entre JMP addres y JMP reg 16. d) La instrucción CALL addr produce dos ciclos de escritura en memoria. UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Introducción a las Computadoras (Prob.). CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 2 de Junio de 2003. (Tarde) 2003-32- TEST (cont.) 6) La CPU INDALO III: a) Puede direccionar 512 puertos. b) Tiene una única señal de control para acceder a la memoria y a los puertos. c) Un puerto y una posición de memoria pueden tener la misma dirección. d) Ninguna de las anteriores respuestas es cierta. 7) Podemos decir siempre en INDALO III: a) Todas las instrucciones de acceso a la pila producen un salto incondicional. b) Todas las instrucciones de acceso a la pila producen un salto condicionado al contenido de SP. c) La instrucción POP X produce dos ciclos de lectura en memoria más uno de fetch. d) La instrucción POP X guarda el contenido de X en la pila. 8) En un acceso DMA: a) La CPU termina el ciclo de máquina en curso y atiende la petición de DMA. b) La CPU termina la instrucción en curso y atiende a la petición. c) DMA requiere una zona libre de memoria para poder implementarlo. d) Ninguna de las anteriores respuestas es cierta. 9) En INDALO III: a) El SP guarda la dirección del primer byte ocupado en la pila. b) El SP guarda la dirección de retorno en una instrucción CALL. c) El SP tiene las mismas funciones que el PC. d) El SP guarda la dirección del último byte ocupado en la pila. 10) En INDALO III: a) Un ciclo de fetch nunca atraviesa en la ALU. b) Un ciclo de fetch tiene como destino siempre CO. c) Algún ciclo de fetch no incrementa el contador de programa. d) Toda instrucción precisa al menos dos ciclos de fetch UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Introducción a las Computadoras (Prob.). CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 2 de Junio de 2003. (Tarde) 2003-33- TEST (cont.) 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 APELLIDOS Y NOMBRE: ASIGNATURA: Introducción a las Computadoras (Prob.). CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 15 de Septiembre de 2003. (Mañana) 2003-34- PROBLEMA. 1 (2.5 Puntos) Inicialmente el registro A del Indalo III contiene cierto número a7a6a5a4a3a2a1a0 . 1. Desarrollar, en lenguaje simbólico, la secuencia de operaciones necesarias para que se active el flag de cero (FZ = 1) si y sólo si se cumplen simultáneamente las dos igualdades siguientes: a7 = a0 y a6 = a1 2. Obtener un programa en lenguaje ensamblador del Indalo equivalente al proceso anterior. Después de cada instrucción en ensamblador que afecte a algún registro, deberá indicar el contenido del registro destino. No es necesario utilizar la memoria. SOLUCIÓN Se resolverá el problema logrando que al final quede en el registro B el número binario 000000a1a0 y en el registro A el número 000000a6a7 y efectuando la operación XOR entre ellos. LENGUAJE SIMBÓLICO INSTRUCCIÓN REGISTRO MOV C,A C = a7a6a5a4a3a2a1a0 AND A, 00000011B A = 000000a1a0 MOV B,A B = 000000a1a0 (Primer objetivo) MOV A,C A = a7a6a5a4a3a2a1a0 AND A, 11000000B A = a7a6000000 ROL A A = a6000000a7 MOV C,A C = a6000000a7 AND A, 00000001B A = 0000000a7 ROR A A = a70000000 ROR A A = 0a7000000 OR A,C A = a6a7000000 ROL A A = a7000000a6 ROL A A = 000000a6a7 (Segundo objetivo) XOR A, B A = 000000(a6⊕a1)(a7⊕a0) Si = 0 Fz = 1 UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Introducción a las Computadoras (Prob.). CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 15 de Septiembre de 2003. (Mañana) 2003-35- PROBLEMA. 2 (2.5 Puntos) En un Indalo 3, se encuentra a partir de la dirección 1200H el siguiente fragmento de programa: 1200H: XOR A, A JS 1208H A) Realizar una tabla en la que aparezcan, para cada instrucción, las operaciones básicas a las que da lugar la ejecución del fragmento y el contenido de los buses ABUS y DBUS (0,5 ptos.) B) Supóngase, que cuando se está leyendo el C.O. de la instrucción JS, se produce una interrupción Hardware con vector 2AH. Indíquese entonces el diagrama de la pila (direcciones y contenido), el valor de SP y de PC, justo en el momento antes de leer la primera instrucción de la rutina de servicio de esa interrupción (1 pto.) C) Realizar una tabla en la que aparezcan todas las operaciones básicas, y contenidos del ABUS y del DBUS, en el supuesto B), desde el momento de recibir el vector de interrupción hasta donde sea posible, con los datos de que se dispone. (1 pto.) Datos adicionales: • Inicialmente SP = 4000H, Fi = 1 • Volcado de memoria: Dirección Contenido 0050H 03H 0051H 02H 0052H 2BH 0053H 0F5H 0054H 0A2H 0055H 0F4H 0056H 46H 0057H 0F8H 0058H 28H 0059H 85H Nota. Contestar cada apartado en el espacio reservado para tal fin. No se corregirá cualquier respuesta que no esté situada en el sitio indicado UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Introducción a las Computadoras (Prob.). CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 15 de Septiembre de 2003. (Mañana) 2003-36- PROBLEMA. 2 (cont.) SOLUCIÓN A) Operaciones básicas a las que da lugar la ejecución del fragmento Instrucción Operación Básica Contenido ABUS Contenido DBUS F 1200H F9H XOR A, A Italu -- -- F 1201H 1AH JS 1208 Iid16 -- -- B) Diagrama de la pila y valor de los registros SP y PC en el momento antes de leer la primera instrucción de la rutina de servicio Diagrama de la Pila PILA Dirección Contenido 3FFEH 03H 3FFFH 12H SP = 3FFEH PC = 0F4A2H UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Introducción a las Computadoras (Prob.). CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 15 de Septiembre de 2003. (Mañana) 2003-37- PROBLEMA. 2 (cont.) C) Operaciones básicas, y contenidos del ABUS y del DBUS, a partir del momento de recibir el vector de interrupción Operación Básica Contenido ABUS Contenido DBUS RI -- 2AH Iid16 -- -- W 3FFFH 12H Iid16 -- -- W 3FFEH 03H I2dirl -- -- R 0054H 0A2H Iid16 -- -- R 0055H 0F4H UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Introducción a las Computadoras (Prob.). CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 15 de Septiembre de 2003. (Mañana) 2003-38- PROBLEMA. 3 (2.5 Puntos) Dado el fragmento de programa y el volcado de memoria que hay a continuación: ORG 1000H MOV X,2000H MOV C,2 CLC bucle: MOV A,(X) ADC A,(X+2) MOV (X+4),A INC X DEC C JNZ bucle RCR A MOV (X+3),A MOV A,(X+2) RCR A MOV (X+2),A Dirección 0 1 2 3 4 5 6 7 8 9 A B C D E F 2000H C7 8F 54 9A F2 78 4A 33 29 A1 5F BB 12 CC 00 90 2010H 38 70 AB 65 0D 87 B5 CC D6 5E A0 44 ED 33 FF 6F Se pide: e) Ensamblar el programa, indicando en qué dirección comienza cada instrucción y cuánto ocupa el programa. (0.9 ptos). f) ¿Cuántas escrituras en memoria se realizan?. Especificar para cada una de ellas los contenidos del ABUS y del DBUS. (0.8 ptos). g) Tiempo que tarda en ejecutarse si la frecuencia del reloj de la CPU es de 100MHz (0.8 ptos). NOTA: Todos los datos del volcado de memoria están expresados en hexa. UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Introducción a las Computadoras (Prob.). CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 15 de Septiembre de 2003. (Mañana) 2003-39- PROBLEMA. 3 (cont.) SOLUCIÓN Cálculos para los apartados a) y c) Dirección Instrucción Lenguaje máquina Bytes ocupa -dos Ciclos de reloj Veces que se ejecuta Ciclos de reloj totales ORG 1000H 1000H MOV X,2000H 56H 00 20H 3 15 1 15 1003H MOV C,2 7CH 02 2 10 1 10 1005H CLC 0DH 1 5 1 5 1006H bucle: MOV A,(X) 6EH 00 2 13 2 26 1008H ADC A,(X+2) 96H 02 2 13 2 26 100AH MOV (X+4),A 49H 04 2 13 2 26 100CH INC X 35H 1 7 2 14 100DH DEC C A3H 1 7 2 14 100EH JNZ bucle 17H F6H* 2 7/12 1/1 19 1010H RCR A D0H 1 7 1 7 1011H MOV (X+3),A 49H 03 2 13 1 13 1013H MOV A,(X+2) 6EH 02 2 13 1 13 1015H RCR A D0H 1 7 1 7 1016H MOV (X+2),A 49H 02 2 13 1 13 TOTAL…………………………………. 24 208 * El cálculo de rel8 es el siguiente: PC+rel8→PC; 1010H+rel8=1006H; rel8=1006H-1010H=FFF6H (expresado en 16 bits, que es igual a F6H en 8 bits). Apartado a): El código ensamblado, así como las direcciones iniciales de las instrucciones, están en la tabla anterior, y el tamaño del programa es de 24 bytes. UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Introducción a las Computadoras (Prob.). CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 15 de Septiembre de 2003. (Mañana) 2003-40- PROBLEMA. 3 (cont.) Apartado b): El proceso de ejecución es el siguiente: Instrucción Ejecución en lenguaje simbólico ORG 1000H MOV X,2000H 2000H→X MOV C,2 2→C CLC 0→Fc MOV A,(X) (2000H)=C7H→A ADC A,(X+2) A+(2002H)+Fc→A; C7H+54H+0=1BH→A y 1→Fc MOV (X+4),A A=1BH→(2004H) INC X 2000H++=2001H→X DEC C 2--=1→C y 0→Fz JNZ bucle Salta MOV A,(X) (2001H)=8FH→A ADC A,(X+2) A+(2003H)+Fc→A; 8FH+9AH+1=2AH→A y 1→Fc MOV (X+4),A A=2AH→(2005H) INC X 2001H++=2002H→X DEC C 1--=0→C y 1→Fz JNZ bucle No salta RCR A A=2AH >rc> (Fc está a 1); 95H→A y 0→Fc MOV (X+3),A A=95H→(2005H) MOV A,(X+2) (2004H)=1BH→A RCR A A=1BH >rc> (Fc está a 0); 0DH→A y 1→Fc MOV (X+2),A A=0DH→(2004H) En la tabla anterior figuran en negrita las escrituras en memoria, y por lo tanto, el contenido de los buses en ellas es el siguiente: Instrucción ABUS DBUS MOV (X+4),A (1ªvez) 2004H 1BH MOV (X+4),A (2ªvez) 2005H 2AH MOV (X+3),A 2005H 95H MOV (X+2),A 2004H 0DH Apartado c): El programa tarda en ejecutarse 208 ciclos de reloj, como se indica en la primera tabla. Por lo tanto: segµ 2,08seg 10*08,2 10*100 208t 66 === − UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Introducción a las Computadoras (Prob.). CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 15 de Septiembre de 2003. (Tarde) 2003-41- PROBLEMA. 1 (2.5 Puntos) 1) Diseñar un programa en lenguaje simbólico que active el flag de cero cuando los bits de un determinado operando cumplan las siguientes condiciones. (1 pto.) 17 aa = , 06 aa = , 0a 5 = y 0a 4 = 2) Escribir un programa en lenguaje ensamblador de INDALO III que realice un salto a la etiqueta SUB si se cumplen las condiciones anteriores. Considerar, para este segundo caso, que el operando se encuentra en la posición de memoria de dirección 2088H, y que el programa se cargará en memoria a partir de la dirección 1000H. Calcular también cual será la última dirección ocupada por el programa. (1,5 ptos) SOLUCIÓN 1) A pesar de tratarse de un único operando tendremos que utilizar dos registros Lenguaje simbólico Valor de A BA → * 01234567 aaaaaaaa AHCA →∧ 20 000000aa 67 ArA >→> 76 a000000a ArA >→> 670000000 aa ABA →⊕ )aa)(aa(aaaaaa 0617234567 ⊕⊕ AH33A →∧ )aa)(aa(00aa00 061745 ⊕⊕ AH12A →⊕ )aa)(aa(00aa00 061745 ⊕⊕ *B no varía desde la primera carga. UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Introducción a las Computadoras (Prob.). CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 15 de Septiembre de 2003. (Tarde) 2003-42- PROBLEMA. 1 (cont) 2) Ensamblador ORG 1000 No ocupa espacio en memoria MOV A, (2808H) 3 bytes MOV A, B 1 bytes AND A, 0C2H 2 bytes ROR A 1 bytes ROR A 1bytes XOR A, B 1 bytes AND A, 33H 2 bytes XOR A, 12H 2 bytes JZ SUB 2 bytes 15 bytes Por tanto la última dirección del programa será 100EH UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Introducción a las Computadoras (Prob.). CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 15 de Septiembre de 2003. (Tarde) 2003-43- PROBLEMA. 2 (2.5 Puntos) En una CPU INDALO III, se está ejecutando la siguiente subrutina : ORG 1000 XOR A, A MOV B, (4518H) MOV C, (4519H) BUCLE: ADD A, B DEC C JNZ BUCLE RET a) Analizar el programa indicando que operación realiza. (0,5 ptos.) b) Valor final de A si (4518H) =5 y ( 4519H ) =2 (0,5 ptos.) Cuando el PC = 100AH y Fz = 0 se produce una interrupción con vector = 3 c) Valor de los registros PC, SP y contenido de la pila cuando se va a leer el CO de la primera instrucción de la rutina de atención a la interrupción. (0,75 ptos.) d) Indicar cuantos ciclos de máquina se producen desde la petición de la interrupción hasta justo antes de leer la primera instrucción de la rutina de atención ala interrupción. Indicar también el contenido de los buses durante este proceso. (0,75 ptos.) Se sabe que cuando se recibe la interrupción SP = 0F000H y el contenido de las diez primeras posiciones de memoria es: dirección contenido 0 58 1 23 2 56 3 5 4 79 5 34 6 21 7 98 8 10 9 12 UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Introducción a las Computadoras (Prob.). CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 15 de Septiembre de 2003. (Tarde) 2003-44- PROBLEMA. 2 (cont.) SOLUCIÓN a) Como vemos, el programa se termina cuando JNZ no cumpla la condición de salto. Esto ocurre cuando C = 0. Mientras C ≠ 0 se va a sumar B consigo mismo un número de veces que vendrá definido por C, es decir, que se va a sumar B consigo mismo tantas veces como indique C. Por lo tanto , la operación es el Producto del operando (4518H) con el operando (4519H) b) Visto lo que hace el programa el valor final de A será el producto 2·5 = 10 decimal o 0AH c) Si el PC = 100AH se está ejecutando la instrucción JNZ BUCLE y como Fz = 0 se cumple la condición de salto. La CPU termina de ejecutar la instrucción en curso ( JNZ BUCLE ) guarda la dirección de retorno y se va a atender la interrupción. Cuando termina de ejecutar la instrucción BUCLE PC luego BUCLE será la dirección de retorno. Por lo tanto: 0EFFEH 07 0EFFFH 10 SP = 0EFFEH. La CPU pone en el PC la dirección de la primera instrucción de la rutina de atención que es ( v*2 ) =21 y (v*2 + 1 )=98 teniendo en cuenta que 21 será el byte menos significativo PC = 9821H d) Nº de orden Tipo de ciclo ABUS DBUS 1 Rec.Interrup. -------------- 03H 2 w.memory EFFFH 10H 3 w.memory EFFEH 07H 4 R. memor 0006H 21H 5 r.memory 0007H 98H UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Introducción a las Computadoras (Prob.). CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 15 de Septiembre de 2003. (Tarde) 2003-45- PROBLEMA. 3 (2.5 Puntos) Disponemos de un sistema microprocesador formado por un Indalo 3.0. (Frec. CPU 20 Mhz), una Memoria Principal formada por un bloque de 64Kbytes y los siguientes periféricos: • Sensor de temperatura: o Produce una interrupción cada vez que tiene un valor de temperatura listo para ser leído. El vector de interrupción es el 028H. o El resultado se deposita en la dirección (puerto) 060H. o El valor obtenido es directamente la temperatura en grados centígrados. El rango de temperatura que es capaz de medir va desde los 0º hasta los 100º. • Periférico genérico: o Esta formado por un registro de salida. En el bit de mayor peso (bit7) esta conectado un ventilador a través de un relé. o La dirección del registro (puerto) es 061H. o Cuando el bit7 = 1 se enciende el ventilador. o Cuando el bit7=0 se apaga el ventilador. Código del Programa Principal Tabla de vectores de interrupción ORG 1000H 0H 00H ;configuración inicial del programa ... ... MOV SP, 6500H 50H 50H MOV C, 61H 51H 80H MOV A, 21 52H 00H Bucle: CMP A, (7000H) 53H 70H JC Zona1 54H 00H MOV A, 0H 55H 65H JMP Fin 56H 3CH Zona1: MOV A, 80H 57H 30H Fin: OUT C,A 58H FFH JMP Bucle 59H 7FH Código de la rutina de interrupción ORG XXXX PUSH BC PUSH AF MOV C, 60H IN A, C MOV (7000H), A POP AF POP BC RET UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Introducción a las Computadoras (Prob.). CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 15 de Septiembre de 2003. (Tarde) 2003-46- PROBLEMA. 3 (cont.) Se pide responder a las siguientes preguntas: a) ¿Dónde se sitúa la pila? ¿Qué valor hay que poner en el ORG de la rutina de interrupción? (0,5 ptos.) b) ¿Qué función tiene el bucle principal del programa (a partir de la etiqueta Bucle)? Razone la respuesta, no se limite a poner el significado de las instrucciones. (0,75 ptos.) c) Traduzca a código máquina la rutina de interrupción y diga cuanto tiempo tarda en ejecutarse. (0,75 ptos.) d) Se pretende optimizar el código de la rutina de interrupción. ¿ Se pueden eliminar las instrucciones PUSH y POP de dicha rutina sin afectar al programa principal? Razone la respuesta. (0,5 ptos.) SOLUCIÓN a) a. SP = 6500 H ( se obtiene de la instrucción MOV SP,6500H ) b. ORG 8050H ( miro las posiciones 50H y 51H de la tabla de vectores) b) Es un bucle infinito en el cual se compara el valor leído del sensor de temperatura con 21, es decir con 21º. Si la temperatura leída es mayor activa el ventilador, si la temperatura es menor apaga el ventilador. c) Dirección Instrucción Memoria Ciclos Reloj 8050H PUSH BC 06H 15 8051H PUSH AF 05H 15 8052H MOV C,60H 7CH 60H 10 8054H IN A,C 0FH 8 8057H MOV (7000H),A 41H 00H 70H 18 8058H POP AF 01H 15 8059H POP BC 02H 15 805AH RET 08H 13 Ciclos totales = 15 + 15 + 10 + 8 + 18 + 15 + 15 +13 = 109 ciclos Tiempo = 109 ciclos * 1/20Mhz = 5,45 µseg d) Tanto el bucle principal del programa como la rutina de interrupción utilizan los registros A y C. Eso significa que tenemos que garantizar la conservación de los valores de A y C, del programa principal, al volver de la rutina de interrupción. La forma más fácil de hacer esto es utilizar las instrucciones POP y PUSH. Por eso, en este caso no se pueden eliminar del programa. UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Introducción a las Computadoras (Test). CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 15 de Septiembre de 2003. (Mañana) 2003-47- 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 ptos. Cada respuesta incorrecta descuenta 0,1 ptos. 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 hoja siguiente) 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ª) Un µP funciona con una frecuencia de reloj de 100MHz para acceder a su sistema de memoria D.R.A.M. (100 MHz es la velocidad de su LOCAL BUS). Los chips que integran esta memoria tienen un TA (tiempo de acceso) de 40 (ns). ¿Cuántos ciclos de reloj necesita el µP para realizar un acceso de lectura en memoria? a) 1 ciclo. b) 2 ciclos. c) 4 ciclos. d) Ninguna de las anteriores es correcta. 2ª) En el Indalo 3.0, si Fc=1, A=0C3H y B=3CH, después de efectuar ADC A,B ... a) Si A y B son enteros sin signo, no se produce desbordamiento. b) El FC no cambia de valor después de la operación. c) Si A y B son enteros sin signo, se produce desbordamiento. d) Ninguna de las anteriores es correcta. 3ª) La instrucción STC tiene como simbólico FC 1, pero, en su fase de ejecución, las microórdenes que es necesario activar para llevar a cabo la instrucción son... a) quitfc, ckfc. b) ponfc, ckfc. c) ponfc. d) ckfl. 4ª) Supongamos que X=08A0H y que se ejecuta la instrucción MOV A,(X+0F0H). Entonces... a) A (0890H), y FO=”1”. b) A (0890), y FO=”0”. c) A (0890H), y FO no se modifica. d) Ninguna de las anteriores es correcta. 5ª) Supongamos que Fc=1 antes de ejecutar la instrucción JNC @ETIQUETA. Entonces, la división en operaciones básicas de la instrucción es: a) F, F, IT16. b) F, IT8. c) F, IID16. d) FFLAG, RALU. UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Introducción a las Computadoras (Test). CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 15 de Septiembre de 2003. (Mañana) 2003-48- CONTINUACIÓN TEST Pensemos en el siguiente fragmento de código: ORG 1000H JMP INICIO DATO: DB ? INICIO: XOR A,A AND A, (DATO) BUCLE: JNC FIN INC A JMP BUCLE FIN: NOP 6ª) El bucle formado por las instrucciones comprendidas entre las etiquetas BUCLE y FIN ... a) Es un bucle infinito. b) El número de veces que se ejecuta depende de (DATO). c) No se ejecuta nunca. d) Ninguna de las anteriores es correcta. 7ª) El programa ocupa... a) 13 Bytes. b) 14 Bytes. c) 15 Bytes. d) 16 Bytes. 8ª) El valor de rel8 en JNC FIN es... a) rel8=2. b) rel8=5. c) rel8=4. d) rel8=-5. 9ª) Alguien modifica el programa, cambiando JNC FIN por JNZ FIN. En este caso, el bucle... a) No se ejecuta nunca. b) Al finalizar el programa, A≠0. c) El bucle se ejecuta 256 veces. d) El programa no finaliza nunca. UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Introducción a las Computadoras (Test). CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 15 de Septiembre de 2003. (Mañana) 2003-49- CONTINUACIÓN TEST 10ª) ¿Cuántos ciclos de máquina se precisan para leer y ejecutar la instrucción AND A, (DATO)? a) Dos. b) Tres. c) Cuatro. d) Seis. 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 APELLIDOS Y NOMBRE: ASIGNATURA: Introducción a las Computadoras (Test). CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 15 de Septiembre de 2003. (Tarde) 2003-50- 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 ptos. Cada respuesta incorrecta descuenta 0,1 ptos. 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 hoja siguiente) 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 CPU con un bus de direcciones de 20 bits: a.La dirección más alta es la FFFFFh b.El mapa de memoria es de 1MB de RAM c.Sólo se pueden conectar dos chips de RAM y dos chips de ROM d.El bit más significativo (a19) determina el bloque al que se accede 2.Para duplicar la velocidad de funcionamiento de una CPU: a.Hay que poner un reloj del doble de frecuencia b.Hay que duplicar el periodo de la señal de reloj c.Dividir el periodo de la señal de reloj a la mitad y poner unas memorias con un tiempo de acceso que garanticen que no se inserten ciclos de espera. d.Poner más memoria RAM. 3. Si en cada acceso a memoria se activa la señal wait: a.La memoria esperará hasta que el dato se haya escrito b.Se estárá insertando al menos un ciclo de espera en cada acceso c.La CPU puede funcionar a su máxima velocidad d.La memoria esperará hasta que se produzca una interrupción 4. Una CPU con una ALU de 8 bits: a.No puede realizar sumas de números de 16 bits b.Puede realizar sumas de números de como máximo 16 bits c.El resultado es un número de 9 bits d. Puede realizar sumas con números de cualquier tamaño 5.En INDALO 3.0, la instrucción CALL a.Deposita el PC en la pila y realiza el salto b.Recupera la dirección de la pila y realiza el salto c.Realiza el salto y guarda el PC en pila d.Realiza el salto y recupera la dirección de la pila UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Introducción a las Computadoras (Test). CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 15 de Septiembre de 2003. (Tarde) 2003-51- TEST (cont.) 6.Si se ejecutan las instrucciones AND A,45h, XOR A,01h y JZ bucle a.Se salta a la etiqueta bucle si a6=1, a2=1 y a0=0 b.Se salta a la etiqueta bucle si a6=0, a2=0 y a0=1 c.Siempre se salta a la etiqueta bucle d.Nunca se salta a la etiqueta bucle 7.En una transferencia por DMA, entre un dispositivo y la CPU a.El dispositivo activa la señal HOLDA para apoderarse del BUS b.El dispositivo envía el vector de interrupción cuando la CPU activa HOLDA c.El dispositivo activa la señal HOLD cuando va a solicitar el BUS d.La CPU activa la señal HOLDA para recuperar el control del BUS 8.En INDALO 3.0, la instrucción ROL A a.Realiza una rotación a la izquierda del registro A a través del acarreo b.Si A contiene el valor 55h, después de ejecutarla, A tendrá AAH c.Realiza un desplazamiento a la izquierda del registro A d.Realiza una rotación a la derecha del registro A, sin usar el acarreo 9.Si la instrucción CALL 3322h está en la dirección 2233h: a.Después de ejecutarse el PC tendrá el valor 2233h b.Después de ejecutarse se habrá guardado en la pila el valor 2236h c.El puntero de pila se debe inicializar con el valor 3322h d.Ninguna de las anteriores 10. La instrución CLC a.Ocupa un byte de memoria y tarda 7 ciclos de reloj en ejecutarse b.Ocupa un byte de memoria y es necesaria una operación F para su ejecución c.Ocupa un byte de memoria y es necesaria una operación Fflag para su ejecución d.Ninguna de las anteriores. UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Introducción a las Computadoras (Test). CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 15 de Septiembre de 2003. (Tarde) 2003-52- TEST (cont.) 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 ic_2004colecci?n.pdf UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Fundamentos de Computadores (Prob.) CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 30 de Enero de 2004 (Extraordinaria) 2004 -1- PROBLEMA. 1 (2.5 Puntos) Represente, en la tabla que aparece a continuación, microinstrucciones, microórdenes y operaciones básicas de la secuencia de instrucciones: SHR A, JNZ etiqueta (si no se cumple la condición) y NOP. Instrucción µInstrucciones µÓrdenes Operación Básica UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Fundamentos de Computadores (Prob.) CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 30 de Enero de 2004 (Extraordinaria) 2004 -2- PROBLEMA. 1 (cont.) SOLUCIÓN Instrucción µInstrucciones µÓrdenes Operación Básica PC→ABUS salpc (ABUS)→DBUS mem, rd DBUS→CO ckco PC++ reg1, ckpch, ckpcl F SHR A A >sa>→A alu3, alu2, alu1, cka Italu PC→ABUS salpc (ABUS)→DBUS mem, rd DBUS→CO ckco PC++ reg1, ckpch, ckpcl F JNZ addr (Si FZ=1) PC++ reg1, ckpch, ckpcl Iid16 PC→ABUS salpc (ABUS)→DBUS mem, rd DBUS→CO ckco NOP PC++ reg1, ckpch, ckpcl F UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Fundamentos de Computadores (Prob.) CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 30 de Enero de 2004 (Extraordinaria) 2004 -3- PROBLEMA. 2 (2.5 Puntos) Inicialmente el registro A del Indalo III contiene cierto número a7a6a5a4a3a2a1a0 . 1. Desarrolla, en lenguaje simbólico, la secuencia de operaciones necesarias para que se active el flag de cero (FZ = 1) si y solo si se cumplen simultáneamente las dos igualdades siguientes: a4 = a5 y a2 ≠ a3 2. Obtén un programa en lenguaje ensamblador del Indalo equivalente al proceso anterior. Después de cada instrucción en ensamblador que afecte a algún registro, deberás indicar el contenido del registro destino. No es necesario utilizar la memoria SOLUCIÓN a) A pesar de tratarse de un único operando tendremos que utilizar dos registros Lenguaje simbólico Valor de A BA → * 01234567 aaaaaaaa AsA >→> 0123456 aaaaaaa0 ABA →⊕ )aa)(aa)(aa)(aa)(aa)(aa)(aa(a 011223344556677 ⊕⊕⊕⊕⊕⊕⊕ AH14A →∧ 00)aa(0)aa(000 2345 ⊕⊕ AH4A →⊕ 00)aa(0)aa(000 2345 ⊕⊕ *B no varía desde la primera carga. b) El siguiente fragmento de código saltaría a la etiqueta etiq si se cumple la condición propuesta. MOV B, A SHR A XOR A, B AND A, 14H XOR A, 4 JZ etiq UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Fundamentos de Computadores (Prob.) CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 30 de Enero de 2004 (Extraordinaria) 2004 -4- PROBLEMA. 3 (2.5 Puntos) Dado el siguiente programa: ORG 1000H datos: DB 08H, 00, N programa: DB 56H, 00H, 10H, 6EH, 00H, 71H, 7EH, 02H, A3H bucle: MOV A, (X) ADD A,B MOV (X), A MOV A, (X+1) ADC A, 0 MOV (X+1), A DEC C JNZ bucle HLT a) Indique claramente la equivalencia en hexadecimal de cada etiqueta (datos, programa, bucle). b) Obtener el contenido conocido de la memoria desde la dirección 1000H (incluyendo el ensamblado del código), antes de ejecutar el programa. Especifique dirección y contenido utilizando la tabla siguiente. c) Suponiendo que los contenidos de memoria son los obtenidos en el apartado anterior, y que inicialmente el registro PC contiene 1003H, explique brevemente la función que realiza el programa. d) Si la frecuencia del reloj del sistema es de 1GHz, calcule N para que el tiempo de ejecución del programa sea de 141 nsg. NOTAS: Suponga que N es un entero sin signo de 8 bits nsg = nanosegundo = 10-9 sg. UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Fundamentos de Computadores (Prob.) CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 30 de Enero de 2004 (Extraordinaria) 2004 -5- PROBLEMA. 3 (cont.) SOLUCIÓN a y b) Dirección Contenido Valor de las etiquetas 1000H 08 1001H 00 datos = 1000H 1002H N programa =1003H 1003H 56 bucle = 100CH 1004H 00 1005H 10 1006H 6E 1007H 00 1008H 71 1009H 7E 100AH 02 100BH A3 100CH 6E 100DH 00 100EH 8A 100FH 49 1010H 00 1011H 6E 1012H 01 1013H 94 1014H 00 1015H 49 1016H 01 1017H A3 1018H 17 1019H F2 101AH 0E UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Fundamentos de Computadores (Prob.) CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 30 de Enero de 2004 (Extraordinaria) 2004 -6- c) Como PC vale inicialmente 1003H, la ejecución comenzará en la posición identificada con la etiqueta programa. Desensamblando la parte codificada (en negrita), el código en ensamblador quedaría: CÓDIGO BYTES CICLOS VECES programa: MOV X, 1000H 3 15 1 MOV A, (X) 2 13 1 MOV B, A 1 7 1 MOV C, (X+2) 2 13 1 DEC C 1 7 1 bucle: MOV A, (X) 2 13 N-1 ADD A,B 1 7 N-1 MOV (X), A 2 13 N-1 MOV A, (X+1) 2 13 N-1 ADC A, 0 2 10 N-1 MOV (X+1), A 2 13 N-1 DEC C 1 7 N-1 JNZ bucle 2 7/12 1/(N-2) HLT 1 3 1 24 53+88·(N-1) TOTAL El programa pretende obtener el producto del valor almacenado en datos por N, en tamaño WORD. d) En la tabla anterior se incluyen también el número de bytes, ciclos y veces que se ejecuta cada instrucción, así como el total de bytes y el de ciclos, éste último en función de N. A partir de ese resultado: N=2. UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Fundamentos de Computadores (Prob.) CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 30 de Enero de 2004 (Extraordinaria) 2004 -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 ptos. Cada respuesta incorrecta descuenta 0,1 ptos. 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 hoja siguiente) 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 máquina donde el flag de carry se comporte como borrow en restas, al realizar una operación, si son uno los dos últimos acarreos, se activarán los flags: a) FC y FO. b) Sólo FO. c) Sólo FC. d) Dependerá de la operación realizada. 2.- Sobre los ciclos de máquina del Indalo 3.0 podemos decir: a) Todo ciclo de máquina necesita de un único ciclo de reloj. b) Un ciclo de máquina siempre supone un salto a subrutina. c) Todos requieren la utilización del bus de datos. d) Necesariamente utilizan la memoria. 3.- ¿Qué modo de direccionamiento permite el INDALO 1.0?: a) Indexado. b) Directo por valor (o directo). c) Inmediato. d) Indirecto por valor. 4.- Sobre las instrucciones de salto podemos decir: a) El salto incondicional se ensambla siempre en tres bytes. b) El salto condicional se ensambla siempre en tres bytes. c) El salto condicional necesita, al menos, 7 pulsos de reloj para su ejecución. d) El salto incondicional es siempre un salto corto. UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Fundamentos de Computadores (Prob.) CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 30 de Enero de 2004 (Extraordinaria) 2004 -2- TEST (cont.) 5.- Para el INDALO 3.0, en la fase de ejecución de la instrucción ADC A, (3F3DH), además de saldir y mem, se activan las microórdenes: a) rd, alu1, cka. b) wr, alu1, cka. c) rd, cka. d) rd, alu1. 6.- Indicar cuál de las siguientes instrucciones carece de sentido en el INDALO 3.0: a) JMP AF. b) JMP X. c) DEC SP. d) PUSH AF. 7.- Señalar la frase correcta: a) Antes de ejecutar una llamada a una subrutina con la instrucción CALL, tenemos que salvar en la pila el contenido del PC. b) Después de ejecutar la instrucción POP, hay que incrementar el puntero de pila SP. c) La instrucción RET no incrementa el PC después de ser leída. d) La instrucción PUSH incrementa el registro SP. 8.- De las interrupciones del INDALO 3.0 puede decirse que ...: a) ... son todas enmascarables. b) ... utilizan como vector la propia dirección de comienzo de la rutina de servicio. c) ... se gestionan con la ayuda de la microorden io. d) Ninguna de las anteriores respuestas es correcta. 9.- Para leer el código de operación de la instrucción SHR A se necesita una operación: a) F. b) FFLAG. c) FALU. d) FNOINC. UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Fundamentos de Computadores (Prob.) CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 30 de Enero de 2004 (Extraordinaria) 2004 -3- TEST (cont.) 10.- ¿Cuál de las siguientes expresiones no es una microinstrucción?: a) DBUS → (ABUS). b) DIR ++. c) (SP) → DBUS. d) 0 → FC. 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 APELLIDOS Y NOMBRE: ASIGNATURA: Fundamentos de Computadores (Prob.) CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 7 de junio de 2004. (Mañana) 2004 -4- PROBLEMA. 1 (2.5 Puntos) Sea la siguiente secuencia de microinstrucciones: Microinstrucciones Microórdenes Operaciones básicas Instrucciones PC ABUS (ABUS) DBUS DBUS CO PC ++ PC 0 Fc PC ABUS (ABUS) DBUS DBUS DIRl PC ++ PC X ABUS ABUS+DIRl ABUS (ABUS) DBUS A+DBUS A PC ABUS (ABUS) DBUS DBUS CO PC ++ PC B DBUS A-DBUS A PC ABUS (ABUS) DBUS DBUS CO PC ++ PC PC ++ PC a) Indicar las microórdenes que se activan en cada caso. (1,2 ptos.) b) Indicar que tipo de operación se realiza en cada conjunto de microórdenes. (0,7 ptos.) c) Indicar de que instrucción o instrucciones se trata. Si en algún caso no está totalmente definida, indicarlo y especificar lo más posible. (0,6 ptos.) UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Fundamentos de Computadores (Prob.) CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 7 de junio de 2004. (Mañana) 2004 -5- PROBLEMA. 1 (cont.) SOLUCIÓN Microinstrucciones Microórdenes Operaciones básicas Instrucciones PC ABUS salpc (ABUS) DBUS mem,rd DBUS CO ckco PC ++ PC reg1,ckpcl,ckpch 0 Fc quitfc Fflag PC ABUS salpc (ABUS) DBUS mem,rd DBUS DIRl ckdirl PC ++ PC reg1,ckpcl,ckpch F X ABUS salx ABUS+DIRl ABUS sumdir (ABUS) DBUS mem,rd A+DBUS A alu1,ckfl,ckfc,cka Ralu ADD A,(X+rel8) PC ABUS salpc (ABUS) DBUS mem,rd DBUS CO ckco PC ++ PC reg1,ckpcl,ckpch F B DBUS salb A-DBUS A alu3,alu1,alu0, cka,ckfl,ckfc Italu SBB A,B PC ABUS salpc (ABUS) DBUS mem,rd DBUS CO ckco PC ++ PC reg1,ckpcl,ckpch F PC ++ PC reg1,ckpcl,ckpch Iid16 Salto condicional en el que no se cumple la condición UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Fundamentos de Computadores (Prob.) CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 7 de junio de 2004. (Mañana) 2004 -6- PROBLEMA. 2 (2.5 Puntos) En una CPU Indalo.3 se están ejecutando las siguientes instrucciones: ORG 2000 MOV B, ( X+ 0F3H) INT 07 XOR A, A JNZ ETIQUETA Las condiciones iniciales del problema son las siguientes: • PC apunta a la dirección de la primera instrucción • SP = 0FF00 H • Fi = 1 • X = 1000 H Además se conoce el contenido de las siguientes posiciones de memoria: posición contenido 09 00 0A 21 H 0B 0AF H 0C 52 H 0D 24 H 0E 23 H 0F 10 H 10 00 11 01 ------------ ------------ 0FF3 32 H Se pide: a) Dirección de la rutina de atención de INT 07 así como los valores de SP, PC, X y contenido de la pila cuando se va a empezar a ejecutar la rutina de atención a la interrupción 07 b) Si cuando se está ejecutando la instrucción INT 07 se produce una interrupción con vector 05, repetir el apartado anterior pero al comenzar la rutina de atención a la interrupción 05 c) Rellenar un cuadro donde aparezcan reflejados, para cada instrucción del fragmento, los ciclos de máquina, tipo de cada ciclo, así como los contenidos de los buses durante ellos. En la tabla no debe tenerse en cuenta la situación planteada en el apartado b), ni la rutina de atención a la interrupción INT 07. UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Fundamentos de Computadores (Prob.) CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 7 de junio de 2004. (Mañana) 2004 -7- PROBLEMA. 2 (cont.) SOLUCIÓN a) La dirección la leemos de la tabla adjunta de la siguiente forma: v*2 = 14 = 0E H ⇒ ( 0E H ) = 23 H v*2 +1 = 15 = 0FH ⇒ ( 0F H ) = 10 H Estos dos contenidos forman la dirección 1023 H , y es en esta dirección donde empieza la rutina de atención a la interrupción. Cuando se ejecuta INT 07 se guarda la dirección de retorno en la pila, para lo cual se decrementa dos veces el puntero de pila con lo cual SP = 0FEFE H Se guarda en el PC la dirección donde empieza la rutina de atención a la interrupción PC = 1023 H La pila queda 04 0FEFE 20 0FEFF Se guarda la dirección de la siguiente instrucción, es decir , de la instrucción XOR A,A El registro X no se modifica por lo que se queda con X = 1000H b) Se termina de ejecutar la instrucción en curso que es INT 07. Valor del PC 05*2 = 10 = 0A H ⇒ (0A H) = 21H 05*2 +1 = 11 = 0B H ⇒ ( 0B H) = 0AF H PC = 0AF21 H El puntero de pila se decrementa dos veces SP= 0FEFC H X queda igual y la pila UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Fundamentos de Computadores (Prob.) CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 7 de junio de 2004. (Mañana) 2004 -8- PROBLEMA. 2 (cont.) 21 0FEFC AF 0FEFD 04 0FEFE 20 0FEFF c) Instruccion Abus Dbus Tipo ciclo Acción 2000 76 F Lectura CO 2001 F3 F Lectura rel8 MOVB,(X+0F3) 0FF3 32 Ralu (0FF3)→ A 2002 10 F Lectura CO 2003 07 F Lectura V FEFF 20 W FEFE 04 W Dir.de retorno a la pila 0E 23 R V*2 INT 07 0F 10 R V*2+1 Rutina de atención a la interrupción XOR A, A 2004 F9 F Lectura CO JNZ ETIQUETA 2005 17 F Lectura CO UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Fundamentos de Computadores (Prob.) CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 7 de junio de 2004. (Mañana) 2004 -9- PROBLEMA. 3 (2.5 Puntos) Se dispone de un programa en ensamblador para el INDALO 3.0 que busca el mayor de cuatro números sin signo almacenados en memoria, guardándolo en el registro B: ORG 1000H JMP Inicio Numeros: DB 1AH, 02H, 0F3H, 8DH Inicio: MOV X, Numeros MOV C, 4 MOV B, 0 Bucle: MOV A, (X) CMP A, B JC Continua MOV B, (X+1) Continua: INC X DEC C JNZ Bucle HLT a) Ensamblar el programa, indicando la dirección de memoria donde comienza a almacenarse cada línea del mismo (1,25 puntos) b) En el programa anterior hay una línea con un error (no sintáctico). Indicar cuál es dicha línea y en qué consiste el error. (0,5 puntos) c) Se desea cambiar el programa anterior, de forma que en lugar de tener inicialmente los cuatro datos en memoria, éstos se reciban desde el puerto 30H y se vayan guardando en esas mismas posiciones. Para ello se intercala en la línea con la etiqueta Inicio una llamada a una subrutina encargada de ese cometido. Redactar dicha subrutina en lenguaje ensamblador de Indalo 3.0. (0,75 puntos) UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Fundamentos de Computadores (Prob.) CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 7 de junio de 2004. (Mañana) 2004 -10- PROBLEMA. 3 (cont.) SOLUCIÓN a) POSICIÓN CONTENIDO 1000H 12H, 07H, 10H Numeros: 1003H 1AH, 02H, 0F3H, 8DH Inicio: 1007H 56H, 03H, 10H 100AH 7CH, 04H 100CH 74H, 00H Bucle: 100EH 6EH, 00H 1010H 82H 1011H 11H, 02H 1013H 76H, 01H Continua: 1015H 35H 1016H A3H 1017H 17H, 0F5H 1019H 0EH b) Deberíamos cambiar MOV B,(X+1) por MOV B,A pues en el caso de que el resultado de la comparación sea A > B, el último dato leído de memoria será el mayor de los manejados hasta el momento y habrá que almacenarlo en B. c) Teniendo en cuenta que el programa empieza en la posición 1000H y que la instrucción JMP Inicio ocupa 3 bytes, el primer dato habrá que emplazarlo en la posición 1003H, por lo que la subrutina pedida será: MOV X, 1003H ;Apunta a la primera celda MOV B, 4 ;Inicializa el contador del bucle MOV C, 30H ;Especifica el puerto Leer: IN A, C ;Lectura desde el puerto MOV (X), A ;Almacena el dato leído INC X ;Se pasa a la siguiente posición DEC B ;Decrementa el contador JNZ Leer ;Se repite hasta leer el cuarto nº RET UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Fundamentos de Computadores (Test) CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 7 de junio de 2004. (Mañana) 2004 -11- 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 ptos. Cada respuesta incorrecta descuenta 0,1 ptos. 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 hoja siguiente) 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. Suponga que la frecuencia de reloj de un equipo basado en el microprocesador Indalo 3.0 es de 100 (MHz), de forma que su periodo es de 10(ns). Suponga, además, que el tiempo de acceso (TA) de la memoria principal disponible es de 50 (ns). Entonces, la ejecución de una operación básica Ralu requerirá, al menos, de: (a) 1 ciclo de WAIT. (b) 2 ciclos de WAIT. (c) 3 ciclos de WAIT. (d) 4 ciclos de WAIT. 2. La memoria entrelazada y la memoria caché, son dos tipos de memoria cuya función es, fundamentalmente: (a) Aumentar la capacidad del subsistema de memoria. (b) Reducir los costes del subsistema de memoria. (c) Aumentar el rendimiento del subsistema de memoria, reduciendo el número de ciclos de WAIT en los accesos a memoria. (d) Ninguna de las anteriores es correcta. 3. Se sabe que, en un determinado momento de la ejecución de un programa del Indalo 3.0, el contenido del registro A es 9EH, y que FC=0. A continuación, el secuenciador de su unidad de control ejecuta la instrucción RCL A. Entonces, después de ejecutada la instrucción... (a) A=3CH, FC=1, FO=1, FS=0, FZ=1 y FP=1. (b) A=9EH, FC=1, FO=1, FS=1, FZ=0 y FP=1. (c) A=3CH, FC=1, FO=0, FS=0, FZ=0 y FP=1. (d) A=3CH, FC=1, FO=1, FS=0, FZ=0 y FP=1. UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Fundamentos de Computadores (Test) CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 7 de junio de 2004. (Mañana) 2004 -12- CONTINUACIÓN TEST 4. Se sabe que, en un determinado momento de la ejecución de un programa del Indalo 3.0, el contenido de los registros A y B de la unidad de proceso es, respectivamente, A=7FH y B=90H. A continuación, se ejecuta la instrucción CMP A, B. Sabiendo que el programa maneja los operandos A y B como enteros sin signo de 8 bits, ¿cómo quedarán los flags FZ y FC tras la ejecución de la instrucción? (a) FZ=1, FC=0, por lo que A=B. (b) FZ=0, FC=0, por lo que A>B. (c) FZ=0, FC=1, por lo que A<B. (d) Ninguna de las anteriores es correcta. 5. Suponga ahora que, tras ejecutar el secuenciador de la unidad de control del Indalo 3.0 la instrucción CMP A, B -en la que A y B representan enteros con signo-, el contenido de los flags es FZ=0, FO=1 y FS=0. Esto indica que... (a) A<B. (b) A=B. (c) A>B. (d) Lo que indiquen estos flags no es significativo, puesto que habría que conocer el valor de FC. 6. Examine el siguiente fragmento de código ensamblador del Indalo 3.0: ORG 9E4FH MOV A, 3FH MOV B, 20H MOV C, 00H BUCLE: SUB A, B JC FIN INC C JMP BUCLE FIN: HLT ... ¿Cuántas veces se ejecuta la instrucción JMP BUCLE? (a) 1 vez. (b) 2 veces. (c) 3 veces. (d) 4 veces. 7. Sigamos con el fragmento de código ensamblador del Indalo 3.0 anterior. ¿Qué valor asignará el programa ensamblador a la etiqueta Bucle? (a) 9E4FH. (b) 9E51H. (c) 9E53H. (d) 9E55H. UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Fundamentos de Computadores (Test) CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 7 de junio de 2004. (Mañana) 2004 -13- CONTINUACIÓN TEST 8. Observe la instrucción JC FIN, y su ubicación dentro del programa anterior. Una vez ensamblada, dicha instrucción ocupará dos bytes, uno para su código de operación – 11H- y otro para el valor de rel8, puesto que las instrucciones de salto condicional emplean como modo de direccionamiento el relativo al PC. ¿Qué valor calculará el programa ensamblador para rel8 en este caso? (a) 0FCH. (b) 0FBH. (c) 04H. (d) 05H. 9. La división en operaciones básicas de la instrucción JMP BUCLE del programa anterior es: (a) F, F, F, IT16. (b) F, F, F, IID16. (c) F, F, FNOINC, IID16. (d) F, F, FNOINC, IT16. 10. Una instrucción característica del Indalo 3.0, que no existe en el Indalo 2.0, es precisamente una instrucción de manejo de la pila o “stack”. Hablamos de la instrucción POP BC. ¿Cuántos ciclos de máquina se producen durante la lectura y posterior ejecución de dicha instrucción? (a) Uno. (b) Dos. (c) Tres. (d) Cuatro. UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Fundamentos de Computadores (Test) CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 7 de junio de 2004. (Mañana) 2004 -14- CONTINUACIÓN TEST 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 APELLIDOS Y NOMBRE: ASIGNATURA: Fundamentos de Computadores (Prob.) CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 7 de junio de 2004. (Tarde) 2004 -15- PROBLEMA. 1 (2.5 Puntos) En la tabla que aparece a continuación se representan las microinstrucciones y microórdenes correspondientes a la ejecución completa de una secuencia de instrucciones en un Indalo 3.0. Se pide: 1. Complete las columnas de microinstrucciones y microórdenes con los valores que correspondan (1 pto.). 2. Identifique a qué operaciones básicas corresponden cada conjunto de microinstrucciones. Agrúpelas y use para nombrarlas la simbología empleada en la asignatura (0,5 ptos.). 3. Complete las casillas en blanco de las columnas ABUS y DBUS (contenido de cada BUS en el instante correspondiente) (0,5 ptos.). 4. Indiqué cuál es la secuencia de instrucciones que se ha ejecutado (Debe especificar lo más posible cada instrucción y, si corresponde, comentar en qué condiciones se produce la ejecución de la misma) (0,5 ptos.). NOTA: El conjunto de los datos proporcionados corresponden a la ejecución completa de una o varias instrucciones. UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Fundamentos de Computadores (Prob.) CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 7 de junio de 2004. (Tarde) 2004 -16- PROBLEMA. 1 (cont) Instrucción µInstrucciones µÓrdenes Op. Básica ABUS DBUS PC → ABUS 21A0H (ABUS) → DBUS DBUS → CO PC++ 0 → FC BC → ABUS (ABUS) → DBUS 1234H AAH alu3, alu1, alu0, ckfl, ckfc PC → ABUS (ABUS) → DBUS 1BH DBUS → CO PC++ PC → ABUS (ABUS) → DBUS 5DH DBUS → DIRL PC++ PC → ABUS ABUS+DIRL → ABUS ABUS → PC PC → ABUS (ABUS) → DBUS DBUS → CO PC++ 0 → Fi PC → ABUS (ABUS) → DBUS DBUS → CO UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Fundamentos de Computadores (Prob.) CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 7 de junio de 2004. (Tarde) 2004 -17- PROBLEMA. 1 (cont) Instrucción µInstrucciones µÓrdenes Op. Básica ABUS DBUS PC → ABUS salpc 21A0H (ABUS) → DBUS mem,rd 85H DBUS → CO ckco PC++ reg1,ckpcl,ckpch 0 → FC quitfc Fflag BC → ABUS salbc (ABUS) → DBUS mem,rd 1234H AAH CMP A,(BC) A + Ca2(DBUS+FC) → act. flags alu3, alu1, alu0, ckfl, ckfc Ralu PC → ABUS salpc 21A1H (ABUS) → DBUS mem,rd 1BH DBUS → CO ckco PC++ reg1,ckpcl,ckpch F PC → ABUS salpc 21A2H (ABUS) → DBUS mem,rd 5DH DBUS → DIRL ckdirl PC++ reg1,ckpcl,ckpch F PC → ABUS salpc ABUS+DIRL → ABUS sumdir JZ 2200H ABUS → PC ckpcl,ckpch It16 PC → ABUS salpc 2200H (ABUS) → DBUS mem,rd 0AH DBUS → CO ckco PC++ reg1,ckpcl,ckpch CLI 0 → FI quitfi Fflag PC → ABUS salpc (ABUS) → DBUS mem,rd 2201H 0EH HLT DBUS → CO ckco Fnoinc UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Fundamentos de Computadores (Prob.) CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 7 de junio de 2004. (Tarde) 2004 -18- PROBLEMA. 2 (2.5 Puntos) Sea el siguiente fragmento de programa: MOV B,A SHL A JC sigue1 AND A,10000000B JMP sigue sigue1: OR A,01111111B AND A,01000000B sigue: MOV C,A MOV A,B SHL A SHL A AND A,11000000B XOR A,B Suponemos que inicialmente el registro A contiene cierto número a7a6a5a4a3a2a1a0 . a) Después de ejecutada la última instrucción (XOR A,B) el flag de cero se activa si se cumplen simultáneamente ciertas condiciones. Obtened dichas condiciones (1,5 ptos.). b) Obtenga, en función del valor de los bits de A, el tiempo de ejecución del fragmento (1 pto.). SOLUCION: a) Inicialmente A = a7 a6 a5 a4 a3 a2 a1 a0 MOV B,A ; B = a7 a6 a5 a4 a3 a2 a1 a0 SHL A ; A = a6 a5 a4 a3 a2 a1 a0 0 JC SIGUE1 ; Fc = a7 1) a7 = 1 2) a7 = 0 OR A,01111111B ; A = a61111111 AND A, 10000000B ; A = a60000000 AND A,01000000B ; A = 0 1 0 0 0 0 0 0 MOV C,A ; C = 0 1 0 0 0 0 0 0 MOV C;A C = a60000000 MOV A,B ; A = a7 a6 a5 a4 a3 a2 a1 a0 SHL A ; A = a6 a5 a4 a3 a2 a1 a0 0 SHL A ; A = a5 a4 a3 a2 a1 a0 0 0 AND A,11000000B ; A = a5 a4 0 0 0 0 0 0 Finalmente se efectúa la xor de A = a5 a4 0 0 0 0 0 0 con B = a7 a6 a5 a4 a3 a2 a1 a0. El resultado será cero si a7 = a5, a6 = a4, a5 =a4 =a3 =a2 =a1 =a0 = 0 UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Fundamentos de Computadores (Prob.) CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 7 de junio de 2004. (Tarde) 2004 -19- PROBLEMA. 2 (cont.) b) El tiempo que transcurre en uno y otro caso será : a7 = 1 a7 = 0 MOV B,A …..............(7 Pulsos) MOV B,A …..............(7 Pulsos) SHL A........................(7 Pulsos) SHL A........................(7 Pulsos) JC sigue1...................(12 Pulsos) JC sigue1........ ...........(7 Pulsos) OR A,01111111B…..(10 Pulsos) AND A,10000000B…(10 Pulsos) AND A,01000000B....(10 Pulsos) JMP sigue……………(15 Pulsos) MOV C,A..................(7 Pulsos) MOV C,A..................(7 Pulsos) MOV A,B..................(7 Pulsos) MOV A,B..................(7 Pulsos) SHL A.......................(7 Pulsos) SHL A.......................(7 Pulsos) SHL A.......................(7 Pulsos) SHL A.......................(7 Pulsos) AND A,11000000B..(10 Pulsos) AND A,11000000B..(10 Pulsos) XOR A,B..................(7 Pulsos) XOR A,B..................(7 Pulsos) TOTAL……… ….. 91 Pulsos TOTAL……… ….. 91 Pulsos UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Fundamentos de Computadores (Prob.) CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 7 de junio de 2004. (Tarde) 2004 -20- PROBLEMA. 3 (2.5 Puntos) En un determinado sistema gobernado por un INDALO 3.0 se pretende diseñar la interfaz hardware y software de una impresora Centronics con las siguientes características: • La señal de petición de interrupción hardware está conectada de forma que se activa tanto con la señal ACK (es decir, porque la impresora ya haya recogido el carácter anterior y esté pidiendo el siguiente), como por la señal PE (falta papel) o porque SELECT esté desactivada (impresora off line —fuera de línea—). • La rutina de interrupción, que se muestra más abajo, deberá leer el puerto de estado de la impresora, que tiene la dirección 10H, y comprobar si su bit 5 es 0 (significaría que hay papel) y su bit 7 es 1 (indicaría que está on line), y en ese caso llamar a la subrutina enviar, que se encargaría de enviar el nuevo carácter, mientras que si no se cumple la condición de bits, hay que llamar a la subrutina avisar, que visualizaría por pantalla un mensaje de error. int_imp: MOV C,10H IN A,C ..... ;Fragmento que debe comprobar ..... ;si el bit 5 de A es un 0 y ..... ;el bit 7 un 1, y en ese caso ..... ;tiene que saltar a la ..... ;etiqueta sigue. CALL avisar RET sigue: CALL enviar RET Se pide: A) Codificar en ensamblador el fragmento que falta en la rutina de atención a la interrupción. (No incluir las subrutinas avisar ni enviar; sólo el fragmento que analiza los bits). (0,7 ptos.) Dirección Contenido 0000 1AH 0001 2BH 0002 3CH 0003 4DH 0004 5EH 0005 6FH 0006 70H B) Si la interrupción de impresora es la de vector 02 y se conocen además los siguientes contenidos en memoria, ¿qué dirección le corresponderá a la etiqueta int_imp?. (0,5 ptos.) 0007 81H UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Fundamentos de Computadores (Prob.) CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 7 de junio de 2004. (Tarde) 2004 -21- PROBLEMA. 3 (cont.) C) Suponiendo que se produce una interrupción de impresora por falta de papel mientras que se está ejecutando la instrucción ADD A,B que está situada en la dirección 9F7CH (esta instrucción pertenece al programa interrumpido, que no se muestra en este enunciado), y que en ese momento SP=F708H, indicar el contenido del SP y los valores guardados en la tabla cuando se entra en la subrutina avisar, especificando también en que direcciones se guardan. (0,7 ptos.) NOTA: Si no se hubiera contestado a los apartados A o B, supóngase que la etiqueta int_imp se corresponde con la dirección 1000H y que el fragmento pedido en el apartado A ocupa 10H bytes, pero indíquese que se ha partido de esta suposición. D) Ensamblar (obtener su código máquina) la instrucción de salto condicional que se haya incluido en el fragmento del apartado A. Si no se hubiera contestado a ese apartado, suponer que la última instrucción del fragmento es un salto condicional (es indiferente qué condición se use, pero hay que indicarlo). (0,6 ptos.) SOLUCIÓN Apartado A AND A,0A0H XOR A,80H JZ sigue Apartado B 6F5EH Apartado C SP=F704H porque se han guardado dos direcciones de retorno que ocupan 2 words. DIRECCIÓN CONTENIDO COMENTARIOS F707H 9FH F706H 7DH Dirección de la instrucción siguiente a ADD A,B F705H 6FH F704H 6AH Dirección de la instrucción siguiente a CALL avisar1 2 1 El cálculo figura en la página siguiente. 2 Si se hubiera basado en la suposición indicada en el enunciado, el resultado hubiera sido: (F705H)=10H y (F706H)=16H UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Fundamentos de Computadores (Prob.) CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 7 de junio de 2004. (Tarde) 2004 -22- PROBLEMA. 3 (cont.) BYTES OCUPADOS DIRECCIÓN INICIAL int_imp: MOV C,10H 2 6F5EH IN A,C 1 6F60H AND A,0A0H 2 6F61H XOR A,80H 2 6F63H JZ sigue 2 6F65H CALL avisar 3 6F67H RET 1 6F6AH sigue: CALL enviar 6F6BH RET Apartado D El código de operación es 1BH y rel8=6F6BH-6F67H=04. Por lo tanto la instrucción desensamblada será: 1BH,043 3 Si se hubiera hecho la suposición del enunciado, el primer byte pudiera ser distinto (11H o de 13H a 1BH) dependiendo de la condición elegida, pero el segundo seguiría siendo 04. UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Fundamentos de Computadores (Test) CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 7 de junio de 2004. (Tarde) 2004 -23- 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 ptos. Cada respuesta incorrecta descuenta 0,1 ptos. 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 hoja siguiente) 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) Cuántos ciclos de máquina se necesitan para leer y ejecutar la instrucción CALL 4500H a) Tres (los tres de tipo F) b) Cuatro (tres de tipo F y un W) c) Cinco (tres de tipo F y dos W) d) Seis (tres de tipo F y otros tres W) 2) En el Indalo 3.0, indicar cuál de estas sentencias es correcta a) En una división por dos (desplazamiento a la derecha), el flag de carry es el resto. b) Hay vectores de interrupción de dos bytes. c) No hay instrucciones que ocupen tres bytes d) El flag de overflow indica desbordamiento en enteros sin signo.. 3) ¿Cuántos ciclos de máquina se precisan para leer la instrucción cuyo código fuente es JNO dirección, sabiendo que el FO = 0? a) Un ciclo de F y otro de Fnoinc b) Tres ciclos de F c) Dos ciclos de F d) Dos ciclos de F y uno de Fnoinc 4) El contador de programa del Indalo 3.0 es un registro que: a) Se incrementa siempre al final de cada ciclo de Falu b) Puede cambiarse discrecionalmente su contenido con una instrucción MOV c) No puede incrementarse. d) Se incrementa siempre al final de cada ciclo de Fnoinc. 5) Sabiendo que SP = 8000H, depués de efectuar estas dos instrucciones PUSH X y PUSH BC, el SP valdrá... a) El SP = 7FFEH b) EL SP = 8004H c) El SP = 7FFCH d) EL SP = 7996H UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Fundamentos de Computadores (Test) CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 7 de junio de 2004. (Tarde) 2004 -24- CONTINUACIÓN TEST 6) Se sabe que los registros SP= 8000H , BC= 0345H, F = 0FH, que en la dirección 2350H se encuentra la instrucción SUB A, A que acabamos de leer y estamos ejecutando, y en ese momento ocurre una interrupción HW cuyo vector de interrupción sabemos que vale 50H. ¿Qué ocurre a continuación: a) No se atiende la interrupción y se continúa con la instrucción contenida en 2352H b) Se atiende la interrupción y se salta a la rutina de servicio contenida en las direcciones 100H y 101H c) No se atiende la interrupción y se continúa con la instrucción contenida en 2351H d) No se atiende la interrupción y se continúa con la instrucción contenida en 8000H 7) ¿Cuántos operaciones básicas se precisan para leer y ejecutar la instrucción INT 45H? a) Dos de tipo F, dos de tipo W y tres de tipo Iid16 b) Dos de tipo F dos de tipo R , una de I2*DIRL y dos de tipo Iid16 c) Dos de tipo F, dos de tipo W, dos de tipo R y dos de tipo Iid16 d) Dos de tipo F, dos de tipo W, dos de tipo R, una de I2*DIRL y tres Iid16 8) Cuando se produce una interrupción Hardware, a) El µP pone en el ABUS la dirección del vector. b) El vector debe multiplicarse por 2 si el FI está activado c) La tabla de direcciones de las rutinas de atención a las interrupciones ocupa las posiciones de la 00H a la FFH d) Se atiende si el FI vale 0 9) La tabla de direcciones de las rutinas de servicio a las interrupciones (también llamada tabla de vectores de interrupción) tiene un tamaño máximo de: a) 256 bytes b) 512bytes c) 756 bytes d) 1024 bytes 10) En el direccionamiento de un puerto a) Se usa el valor del registro B para identificar el puerto b) Se utilizan los 8 bits de menos peso del ABUS c) Se utilizan los 8 bits del DBUS para identificar el puerto d) Se utilizan los 16 bits del registro X UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Fundamentos de Computadores (Test) CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 7 de junio de 2004. (Tarde) 2004 -25- CONTINUACIÓN TEST 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 APELLIDOS Y NOMBRE: ASIGNATURA: Fundamentos de Computadores (Prob.) CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 14 de septiembre de 2004 (Mañana) 2004 -26- PROBLEMA. 1 (2.5 Puntos) a) Para el fragmento de programa adjunto, indicar razonadamente qué condiciones deben cumplir los bits del operando A con respecto a los de B para que se ejecute el salto condicional de la última línea. AND A,4CH XOR A,24H SHL A MOV C,A MOV A,B AND A,C8H XOR A,C XOR A,80H JZ Etiqueta NOTA: Considérense A y B como números de 8 bits, A = (a7,... , a0) y B = (b7,... , b0), inicialmente almacenados en los registros de igual nombre. (1,25 puntos) SOLUCIÓN a) OPERANDO A OPERANDO B AND A, 4CH 0 0, ,a ,a 0, 0, ,a 0, 236 MOV A, B b7, b6, b5, b4, b3, b2, b1, b0 XOR A, 24H 0 0, ,a ,a 0, 1, ,a 0, 236 AND A, C8H b7, b6, 0, 0, b3, 0, 0, 0 SHL A 0 0, 0, ,a ,a0, 1, ,a 236 MOV C, A 0 0, 0, ,a ,a 0, 1, ,a 236 RESULTADO XOR A, C 0 0, 0, ),ba( ,a 0, ,b ),b(a 323676 ⊕⊕ XOR A, 80H 0 0, 0, ),ba( ,a 0, ,b ),ba( 323676 ⊕⊕ Para que se produzca el salto, debe activarse el flag FZ, por lo que las condiciones exigidas son: 323232 3 66 767676 baba0 )ba( 0a 1 b0 b ba1)ba(0)ba( ≠⇒=⇒=⊕ = =⇒= ≠⇒=⊕⇒=⊕ UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Fundamentos de Computadores (Prob.) CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 14 de septiembre de 2004 (Mañana) 2004 -27- PROBLEMA. 1 (cont.) b) Sean el programa y volcado de memoria siguientes: ORG 1000H 2000H 0A3H XOR A,A 2001H 4EH POP BC 2002H 09H Bucle: INC B 2003H 10H MOV A,B 2004H 0EH CMP A,C 2005H 0EFH JNZ Bucle 2006H 4CH HLT 2007H 57H Considerando que inicialmente SP = 2003H, rellenar la tabla adjunta indicando la evolución de los flags y los registros A, B y C (éstos últimos en notación hexadecimal) para cada una de las instrucciones del programa hasta llegar a HLT (inclúyanse todas y cada una de las ejecuciones del bucle). (1,25 puntos) FC FO FS FP FZ A B C INSTRUCCIÓN 00H 00H XOR A,A UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Fundamentos de Computadores (Prob.) CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 14 de septiembre de 2004 (Mañana) 2004 -28- PROBLEMA. 1 (cont.) SOLUCIÓN b) Puesto que SP = 2003H, lo que se guarda en BC al leer de la pila con la instrucción POP BC es 0E10H, ya que C=(2003H)=10H y B=(2004H)=0EH. El programa va incrementa B para a continuación compararlo con C, repitiendo el proceso hasta que, como resultado de esa comparación, se active el flag FZ, es decir, B=C. FC FO FS FP FZ A B C INSTRUCCIÓN 0 0 0 1 1 00H 00H 00H XOR A,A 0 0 0 1 1 00H 0EH 10H POP BC 0 0 0 1 0 00H 0FH 10H INC B 0 0 0 1 0 0FH 0FH 10H MOV A,B 1 0 1 1 0 0FH 0FH 10H CMP A,C 1 0 1 1 0 0FH 0FH 10H JNZ Bucle 1 0 0 0 0 0FH 10H 10H INC B 1 0 0 0 0 10H 10H 10H MOV A,B 0 0 0 1 1 10H 10H 10H CMP A,C 0 0 0 1 1 10H 10H 10H JNZ Final 0 0 0 1 1 10H 10H 10H HLT UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Fundamentos de Computadores (Prob.) CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 14 de septiembre de 2004 (Mañana) 2004 -29- PROBLEMA. 2 (2.5 Puntos) El siguiente fragmento de código corresponde a un programa en el ensamblador del microprocesador INDALO 3.0. ORG 7FFFH JMP comienzo dato: DB ? comienzo: MOV A, (dato) AND A, 0FH MOV B, A MOV A, (dato) AND A, 0F0H CMP A, B JNZ fin JMP seguir fin: HLT seguir: ... Se pide: (a) Código máquina del programa, incluyendo la equivalencia en hexadecimal de las etiquetas del mismo y el número total de bytes que ocupa. (1.25 puntos) (b) Suponiendo que el contenido de la dirección de memoria DATO es 12H, esto es, (DATO)=12H, y que la frecuencia de reloj del sistema es de 166 MHz. Obtenga, para cada instrucción, las operaciones básicas desarrolladas y el tiempo total (especifíquelo en ciclos y en unidades de segundo) de ejecución del fragmento. (1.75 puntos) UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Fundamentos de Computadores (Prob.) CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 14 de septiembre de 2004 (Mañana) 2004 -30- PROBLEMA. 2 (cont.) SOLUCIÓN (a) Construimos una tabla con las direcciones de memoria en su primera columna y el código máquina en la segunda, como se muestra a continuación: Dirección (Etiqueta) Código Máquina 7FFFH 12H, 03H, 80H 8002H=DATO ? 8003H=COMIENZO 68H, 02H, 80H 8006H 9CH, 0FH 8008H 71H 8009H 68H, 02H, 80H 800CH 9CH, 0F0H 800EH 82H 800FH 17H, 03H* 8011H 12H, 15H, 80H 8014H=FIN 0EH 8015H=SEGUIR ... Nº Total Bytes 22 * Es el valor de rel8 en la instrucción JNZ FIN, y se calculará como la diferencia entre la dirección a la que saltará la instrucción si se cumple la condición, esto es, FIN=8014H, y el valor del PC después de leer la instrucción, esto es, PC=8011H. Entonces, FIN= 8014H - PC= -8011H (Después de haber leído JNZ FIN) rel8= 0003H UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Fundamentos de Computadores (Prob.) CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 14 de septiembre de 2004 (Mañana) 2004 -31- PROBLEMA. 2 (cont.) SOLUCIÓN (b) Podemos hacer una tabla similar a la anterior en la que figure la instrucción en la primera columna, sus operaciones básicas en la segunda y el número de ciclos de cada operación en la tercera. Instrucción Operaciones Básicas Ciclos de CK Comentario JMP comienzo F, F, FNOINC, IT16 15 - MOV A,(dato) F, F, F, RALU 18 A=12H AND A,0FH F, FALU 10 A=02H MOV B, A F, ITALU 7 B=02H MOV A,(dato) F, F, F, RALU 18 A=12H AND A, 0F0H F, FALU 10 A=10H CMP A, B FFLAG, ITALU 7 FZ=0 JNZ fin F, F, IT16 12 Se efectúa el salto, porque Fz=0 JMP seguir - - No se ejecuta HLT FNOINC 3 - Nº Total Ciclos CK= 100 Entonces: fCK= 133(MHz)*106(Hz)/1(MHz)*1(ciclo/s)/1(Hz)=133*106(ciclos/s) De ahí que: 1(ciclo)=1/[133*106(s-1)]≈7.5*10-9(s) Finalmente, pues: Tiempo de ejecución=100(ciclos)* 7.5*10-9(s/ciclo)≈750*10-9(s)=750(ns)≈0.8(µs) UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Fundamentos de Computadores (Prob.) CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 14 de septiembre de 2004 (Mañana) 2004 -32- PROBLEMA. 3 (2.5 Puntos) Las instrucciones de un programa para el Indalo 3 comienzan a partir de la dirección 2000H. El código máquina es el que aparece en el siguiente volcado de memoria: Dirección Contenido 2000H 56H 90H 34H 6EH 00H 2005H 84H FFH 1BH 08H 9CH 200AH 03H 49H 00H 35H 12H 200FH 03H 20H 0EH Los datos se encuentran en las direcciones 3490H hasta la 34999H (ambas inclusive): Direcció n 3490 H 3491 H 3492 H 3493 H 3494 H 3495 H 3496 H 3497 H 3498 H 3499 H Conteni do 4FH 49H 6AH 75H 86H 0ABH 00H D8H 0FFH 46H Se pide: a) Desensamblar el programa (0,50 ptos.) b) ¿Cuál es el contenido de las direcciones 3490H hasta la 3499H, al finalizar el programa? ¿Cuáles son los valores finales de los registros A y X ? (0,75 ptos.) c) ¿Qué hace el programa?. Explicar la funcionalidad del programa en menos de 7 líneas. (0,75 ptos.) d) Calcular el tiempo que tarda en ejecutarse el programa sabiendo que la frecuencia de la CPU es de 1 GHz. Expresar la respuesta en nanosegundos (0,50 ptos.) Nota. Contestar cada apartado en el espacio reservado para tal fin. No se corregirá cualquier respuesta que no esté situada en el sitio indicado UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Fundamentos de Computadores (Prob.) CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 14 de septiembre de 2004 (Mañana) 2004 -33- PROBLEMA. 3 (cont.) SOLUCIÓN Código fuente: Dirección Instrucción (código fuente) 2000 H MOV X, 3490H 2003H MOV A, (X) 2005H CMP A, 0FFH 2007H JZ 2011H 2009H AND A, 03H 200BH MOV (X), A 200DH INC X 200EH JMP 2003H 2011H HLT a) ¿Cuál es el contenido de las direcciones 3490H hasta la 3499H, al finalizar el programa? Valor de los registros A y X al terminar el programa. Direcció n 3490 H 3491 H 3492 H 3493 H 3494 H 3495 H 3496 H 3497 H 3498 H 3499 H Conteni do 03H 01H 02H 01H 02H 03H 00H 00H 0FFH 46H A = 0FFH X = 3498H b) ¿Qué hace el programa?. Explicar la funcionalidad del programa en menos de 7 líneas El programa recorre mediante el registro X, que utiliza como puntero, una lista de números a los que procesa uno a uno, hasta encontrar el 0FFH , en cuyo caso el programa concluye. El proceso consiste en hacer un AND del número con la máscara 03. Es decir, deja pasar los dos últimos bits y anula los demás. (Ello equivale al resto de la división del número entre 4. Esto se denomina clase de equivalencia, módulo 4) El número obtenido, se sobreescribe sobre el dato original. UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Fundamentos de Computadores (Prob.) CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 14 de septiembre de 2004 (Mañana) 2004 -34- PROBLEMA. 3 (cont.) c) Calcular el tiempo que tarda en ejecutarse el programa sabiendo que la frecuencia de la CPU es de 1 GHz. Instrucción (código fuente) Ciclos de Reloj Numero de veces que se ejecuta Totales parciales MOV X, 3490H 15 1 15 MOV A, (X) 13 9 117 CMP A, 0FFH 10 9 90 JZ 2011H 7/12 8/1 68 AND A, 03H 10 8 80 MOV (X), A 13 8 104 INC X 7 8 56 JMP 2003H 15 8 120 HLT 3 1 3 TOTAL FINAL: 653 tiempo = 653 · Periodo = .653 101 1653 9 nsegseg =⋅ ⋅ − (nanosegundos) Tiempo de ejecución = .653 nseg UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Fundamentos de Computadores (Test) CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 14 de septiembre de 2004 (Mañana) 2004 -35- 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 ptos. Cada respuesta incorrecta descuenta 0,1 ptos. 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 hoja siguiente) 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).- Si partiendo de una situación inicial en la que los contenidos de los registros A y B son respectivamente 80H y 88H, se ejecuta la instrucción ADD A,B: 1a).- El contenido final del registro A será 108H. 1b).- El contenido final del registro A será forzosamente el mismo que si se hubiera ejecutado la instrucción ADC A,B. 1c).- El contenido final del registro A será forzosamente inferior al que se hubiera obtenido si se hubiera ejecutado la instrucción ADC A,B. 1d).- Ninguna de las respuestas anteriores es cierta. 2).- En los ciclos de escritura, se entiende por tiempo de acceso de una memoria al que transcurre: 2a).- Desde el momento en el que se selecciona con la señal CS, hasta que se realiza la transferencia del dato. 2b).- Desde el momento en el que está preparado todo (la dirección y el dato en los buses correspondientes, y además, las señales CS y WE activas), hasta que la memoria recoge el dato del bus. 2c).- Desde el momento en el que la dirección está en el bus, hasta que la memoria está preparada para capturar el dato. 2d).- Ninguna de las respuestas anteriores es correcta. 3).- Con relación a la instrucción INT vector del INDALO 3.0, puede decirse que... 3a).- ...se produce tanto en las interrupciones hardware como en las software. 3b).- ...sólo se ejecuta si el flag I es igual a 1. 3c).- ...al igual que en el caso de las interrupciones hardware, puede interrumpir al programa que se esté ejecutando en cualquier momento, y no es predecible en que instante se producirá. 3d).- ...se diferencia de CALL address únicamente en el modo de direccionamiento. UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Fundamentos de Computadores (Test) CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 14 de septiembre de 2004 (Mañana) 2004 -36- CONTINUACIÓN TEST 4).- La instrucción ADD A,(X)... 4a).- ... no existe como tal. Se simula por medio de 2 instrucciones: CLC y ADC A,(X). 4b).- ...para no sumar nada a X no activa durante su ejecución la microorden sumdir. 4c).- ...produce durante su ejecución la microorden quitfc. 4d).- ...se lee mediante un único ciclo de fetch. 5).- .El ADM o DMA... 5a).- ...puede enmascararse mediante un biestable interno del micro. 5b).- ...se produce cuando se ejecutan instrucciones que emplean direccionamiento directo para acceder a memoria. 5c).- ...fuerza al micro a guardar la dirección de retorno en la pila. 5d).- Ninguna de las anteriores es cierta. 6).- Con relación a las instrucciones de salto condicional del INDALO 3.0, puede decirse que... 6a).- ...si el valor del segundo byte es 0FEH, se produce un bucle infinito. 6b).- ...dan lugar siempre a 2 ciclos de fetch. 6c).- ...ocupan un solo byte si no se cumple la condición, y 2 si se cumple. 6d).- Ninguna de las anteriores es cierta. 7).- Si tras una instrucción CMP A,B se obtienen los valores de los flags: FC=1, FS=0, FO=1 y FZ=0, entonces: 7a).- A<B en enteros con signo. 7b).- A>B en enteros con signo. 7c).- A>B en enteros sin signo. 7d).- Ninguna de las anteriores es cierta. 8).- En la CPU INDALO 3.0 ... 8a).- ... la pila crece hacia posiciones de memoria decrecientes. 8b).- ... la pila crece si crece SP. 8c).- ... la pila se direcciona mediante direccionamiento absoluto. 8d).- ... el programa funciona más lento, cuanto menor sea la pila. UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Fundamentos de Computadores (Test) CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 14 de septiembre de 2004 (Mañana) 2004 -37- CONTINUACIÓN TEST 9).- Cuando se produce una interrupción Hardware 9a).- El µP pone en el ABUS la dirección del vector. 9b).- En el Indalo 3.0 el vector debe sufrir un desplazamiento o shift de 1 bit a la izquierda. 9c).- La tabla de direcciones de las rutinas de atención a las interrupciones ocupa las posiciones de la 00H a la FFH. 9d).- No hay diferencia entre una interrupción y una CALL addr. 10).- Si en un sistema basado en el INDALO 3.0 necesitamos conectar 25 puertos de entrada, 30 de salida y 16 de entrada/salida... 10a).- ...tiene que realizarse forzosamente una decodificación incompleta de las direcciones de los puertos. 10b).- ...la decodificación de las direcciones de los puerto puede ser incompleta de 6 bits. 10c).- ...la decodificación de las direcciones de los puerto debe ser forzosamente distribuida. 10d).- ...la decodificación de las direcciones de los puerto no puede ser incompleta. 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 APELLIDOS Y NOMBRE: ASIGNATURA: Fundamentos de Computadores (Prob.) CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 14 de septiembre de 2004 (Tarde) 2004 -38- PROBLEMA. 1 (2.5 Puntos) Dado el siguiente fragmento de programa..: MOV B, A ROR A AND A, 50H XOR A,B AND A, 5EH XOR A,12H JZ ETIQUETA Se pide: a) Especificar todas las condiciones que deben cumplir los bits del registro A para que se produzca el salto a la dirección ETIQUETA. (1 pto.) b) En el caso de que el valor inicial de A sea 0D2H, ¿se produciría el salto a la dirección ETIQUETA?. Especificar las condiciones que se cumplen o no. (0,3 ptos.). c) Contestar al apartado b) suponiendo que el valor inicial de A es 23H (0,3 ptos.). d) Contestar al apartado b) suponiendo que el valor inicial de A es 32H (0,3 ptos.). e) ¿Cuántos bytes ocupará este fragmento en código máquina? (no se pide ensasamblarlo, sólo el numero de bytes) (0,6 ptos.). Nota.- Denominar los bits del registro A como 01234567 aaaaaaaa Para contestar el apartado a) se sugiere el desarrollo del programa mediante lenguaje simbólico, analizando los valores binarios de A y B Contestar cada apartado en el espacio reservado para ello. SOLUCIÓN a) Leng. simbólico Leng. Ensambl. Valor de A Valor de B BA → MOV B, A 01234567 aaaaaaaa 01234567 aaaaaaaa ArA >→> ROR A 12345670 aaaaaaaa No varía AHA →∩ 50 AND A, 50H 00000 57 aa 0 No varía ABA →⊕ XOR A, B 0123455677 )()( aaaaaaaaaa ⊕⊕ No varía AEHA →∩ 5 AND A, 5EH 0)(0)(0 1234567 aaaaaaa ⊕⊕ No varía AHA →⊕12 XOR A, 12H 0)(0)(0 1234567 aaaaaaa ⊕⊕ No varía Salto condicional JZ ETIQUETA No varía No varía UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Fundamentos de Computadores (Prob.) CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 14 de septiembre de 2004 (Tarde) 2004 -39- PROBLEMA. 1 (cont) A la vista de lo anterior, las condiciones que deben cumplirse para que el Fz se active, y se produzca el salto a la dirección ETIQUETA, son : b) Si A = 0D2H, su valor binario es 01234567 aaaaaaaa : a7 a6 a5 a4 a3 a2 a1 a0 1 1 0 1 0 0 1 0 Se cumplen todas las condiciones señaladas en el apartado anterior y por tanto, se produce el salto a la dirección ETIQUETA c) Si A = 23H H, su valor binario es 01234567 aaaaaaaa : a7 a6 a5 a4 a3 a2 a1 a0 0 0 1 0 0 0 1 1 Se cumplen todas las condiciones señaladas en el apartado anterior y por tanto, se produce el salto a la dirección ETIQUETA d) Si A = 32H H, su valor binario es 01234567 aaaaaaaa : a7 a6 a5 a4 a3 a2 a1 a0 0 0 1 1 0 0 1 0 Se cumplen todas las condiciones, salvo la condición 45 aa ≠ y por tanto, NO se produce el salto a la dirección ETIQUETA e) Tamaño del fragmento en código máquina Instruccción Tamaño (bytes) MOV B, A 1 ROR A 1 AND A, 50H 2 XOR A,B 1 AND A, 5EH 2 XOR A,12H 2 JZ ETIQUETA 2 TOTAL 11 bytes 67 aa = , 45 aa ≠ , 10 123 === ayaa UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Fundamentos de Computadores (Prob.) CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 14 de septiembre de 2004 (Tarde) 2004 -40- PROBLEMA. 2 (2.5 Puntos) Dado el siguiente programa de un INDALO 3.0 que funciona a 5MHZ: ORG 1000H datos: DB 3,0,0 MOV X,datos MOV B,(X) bucle: CALL subrut1 DEC B JZ fin CALL subrut1 JMP bucle fin: HLT Se pide: A) Calcular el tiempo de ejecución sin incluir el que se tarda en la subrutina subrut1, y sabiendo que inicialmente PC=1003H y que la subrutina no modifica el contenido del registro B. (0,7 ptos.) B) Indicar cuantas veces se llama a esta subrutina. (0,3 ptos.) C) Desensamblar la subrutina subrut1, que en lenguaje máquina es la siguiente: 6EH, 01, 8AH, 49H, 01, 6EH, 02, 94H, 00, 49H, 02, 08. (0,7 ptos.) D) ¿Qué hace la subrutina, independientemente del programa principal?. (0,4 ptos.) E) ¿Qué quedará en datos después de ejecutar el programa completamente?. (0,4 ptos.) SOLUCIÓN Cálculos Ciclos de reloj Veces que se ejecuta Ciclos totales ORG 1000H datos: DB 3,0,0 MOV X,datos 15 1 15 MOV B,(X) 13 1 13 bucle: CALL subrut1 27 3 81 DEC B 7 3 21 JZ fin 7/12 2/1 26 CALL subrut1 27 2 54 JMP bucle 15 2 30 fin: HLT 3 1 3 UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Fundamentos de Computadores (Prob.) CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 14 de septiembre de 2004 (Tarde) 2004 -41- PROBLEMA. 2 (cont.) Solución apartado A: 15+13+81+21+26+54+30+3=243 ciclos de reloj. 243/5*106=48,6 µseg. Solución apartado B: 5 veces Solución apartado C: LENGUAJE MÁQUINA ENSAMBLADOR 6EH, 01 MOV A,(X+1) 8AH ADD A,B 49H, 01 MOV (X+1),A 6EH, 02 MOV A,(X+2) 94H, 00 ADC A,0 49H, 02 MOV (X+2),A 08 RET Solución apartado D: Suma el byte que ocupa la dirección (datos) a la word que ocupa las direcciones (datos+1) y (datos+2). Solución apartado E: datos DB 3,9,0 Ya que a la word que ocupa las direcciones (datos+1) y (datos+2) se le suman consecutivamente los valores 3, 2, 2, 1 y 1. De hecho, aunque esto obviamente no se pedía, el programa lo que hace es calcular el cuadrado del número que hay en la dirección (datos) usando el conocido algoritmo de sumar los “n” primeros números impares, y dejar el resultado en la word que ocupa las direcciones (datos+1) y (datos+2). UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Fundamentos de Computadores (Prob.) CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 14 de septiembre de 2004 (Tarde) 2004 -42- PROBLEMA. 3 (2.5 Puntos) Sea el siguiente programa en ensamblador: ORG 2FF0H MOV C,70H IN A,C SHL A JC sigue MOV C,71H IN A,C SHL A JC sigue1 JMP sigue2 sigue: OUT C,A JMP fin sigue1: OUT C,A MOV C,70H OR A,80H OUT C,A JMP fin sigue2: MOV A,0FFH fin: HLT 1) Ensambladlo (Obtened el mismo programa en código máquina) (1Pto) 2) Si la frecuencia del reloj del sistema es de 1GHz y los contenidos de los puertos 70H y 71 H son 80h y 90h respectivamente ,obtened el tiempo que tarda en ejecutarse el programa. 3) Si los contenidos de los puertos 70h y 71h son 60h y 35h respectivamente, obtened el valor final del registro A UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Fundamentos de Computadores (Prob.) CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 14 de septiembre de 2004 (Tarde) 2004 -43- PROBLEMA. 3 (cont.) SOLUCIÓN 1) A partir de las tablas de instrucciones se obtienen los siguientes valores: Dirección Código Máquina Nº de Ciclos ORG 2FF0H No genera código MOV C,70H 2FF0H 7C 70 10 IN A,C 2FF2H 0F 8 SHL A 2FF3H E0 7 JC sigue 2FF4H 11 09 7/12 MOV C,71H 2FF6H 7C 71 10 IN A,C 2FF8H 0F 8 SHL A 2FF9H E0 7 JC sigue1 2FFAH 11 07 7/12 JMP sigue2 2FFCH 12 0C 30 15 sigue: OUT C,A 2FFFH 20 8 JMP fin 3000H 12 0E 30 15 sigue1: OUT C,A 3003H 20 8 MOV C,70H 3004H 7C 70 10 OR A,80H 3006H C4 80 10 OUT C,A 3008H 20 8 JMP fin 3009H 12 0E 30 15 sigue2: MOV A,0FFH 300CH 6C FF 10 fin: HLT 300EH 0E 3 2) Siguiendo la ejecución del código, en función de los datos del enunciado, resulta: Instrucciones ejecutadas Resultado Ciclos MOV C,70H C=70H 10 IN A,C puerto70H=A=80H 8 SHL A A=00 ,, Fc=1 7 JC sigue salta a sigue 12 sigue: OUT C,A puerto70H=00 8 JMP fin salta a fin 15 fin: HLT parada 3 TOTAL= 63 Como la frecuencia es de 1GHz, el tiempo de ejecución será: tejecución= 63 ns UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Fundamentos de Computadores (Prob.) CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 14 de septiembre de 2004 (Tarde) 2004 -44- PROBLEMA. 3 (cont.) 3) Siguiendo la ejecución del código, en función de los datos del enunciado, resulta: Instrucciones ejecutadas Resultado MOV C,70H C=70H IN A,C Puerto70H=A=60H=01100000 SHL A A=11000000=C0H ,, Fc=0 JC sigue No salta MOV C,71H C=71H IN A,C Puerto71H=A=35H=00110101 SHL A A=01101010=6AH ,, Fc=0 JC sigue1 No salta JMP sigue2 Salta a sigue2 sigue2: MOV A,0FFH A=FFH HLT parada De modo que el valor resultante del acumulador es: A=FFH. UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Fundamentos de Computadores (Prob.) CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 7 de junio de 2004. (Tarde) 2004 -45- 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 ptos. Cada respuesta incorrecta descuenta 0,1 ptos. 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 hoja siguiente) 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.- Las señales int e inta afectan a: a) Las interrupciones software. b) Las interrupciones internas o excepciones. c) Las interrupciones hardware. d) Ningún tipo de interrupciones. 2.- ¿Qué instrucción incrementa el PC tras leerse su último byte de la memoria?: a) JMP. b) RET. c) HLT. d) CALL. 3.- La principal diferencia entre las instrucciones CALL e INT radica en que: a) CALL no incrementa el PC al ser leída. b) INT modifica el flag FI al ser ejecutada. c) INT se produce de forma asíncrona con el programa en ejecución. d) CALL no tiene que calcular la dirección de comienzo de la subrutina. 4.- Considerando que Dato1 es una etiqueta, ¿cuál de las siguientes instrucciones sería correcta?: a) MOV A, Dato1 b) MOV BC, (Dato1) c) MOV A, (Dato1) d) MOV X, (Dato1) 5.- En el Indalo 3.0, ¿dónde se guarda la dirección de retorno de una subrutina?: a) En el registro PC. b) En el registro SP. c) En el registro X. d) Ninguna de las respuestas anteriores es correcta. UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Fundamentos de Computadores (Prob.) CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 7 de junio de 2004. (Tarde) 2004 -46- CONTINUACIÓN TEST 6.- La señal CS (Chip Select) actúa sobre: a) El decodificador externo de la memoria. b) El decodificador interno de los circuitos integrados de memoria. c) Sobre el driver bidireccional de los circuitos integrados de memoria. d) Sobre el circuito que gestiona los ciclos de espera. 7.- En la ALU que utiliza la familia INDALO, se activa el flag ...: a) FC si, al restar, hay acarreo final. b) FO si, al desplazar, el bit que sale por un extremo es diferente al que entra por el otro. c) FO si, al desplazar, sale un bit a 1 por la derecha. d) FC si, al restar, el minuendo es menor que el sustraendo. 8.- En el INDALO 3.0, el vector de interrupción ...: a) Se almacena en la pila. b) Sólo puede ser suministrado por la instrucción INT. c) Se almacena en el registro DIRL. d) Se guarda en la tabla de vectores que comienza en la posición 0000H. 9.- En el INDALO 3.0, los puertos ...: a) Utilizan direcciones de 8 bits que viajan por el bus de datos (DBUS). b) Utilizan direcciones de 16 bits almacenadas en el registro C. c) Se direccionan a través del registro X. d) Trabajan con direcciones de 8 bits, pero que son enviadas por el bus de direcciones (ABUS). 10.- ¿Qué instrucción de salto utiliza para su lectura y ejecución la secuencia de operaciones F, F, Fnoinc, It16?: a) JMP 3F2FH. b) JNP 3F2FH. c) JMP BC. d) JNP BC. UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Departamento de Electrónica y Comunicaciones APELLIDOS Y NOMBRE: ASIGNATURA: Fundamentos de Computadores (Prob.) CURSO: 1º GRUPO: Nº DE EXPEDIENTE: CONVOCATORIA: 7 de junio de 2004. (Tarde) 2004 -47- CONTINUACIÓN TEST 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