Logo Passei Direto

Fundamentos de Computadores_ Ingeniería Informática UPSAM

User badge image
Diego Pereira

en

Herramientas de estudio

Material

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