Test de evaluación resuelto

Anuncio
TEMA 1: Conceptos generales
1.- Representa los primeros 16 números decimales (del 0 al 15) usando codificación binaria y
hexadecimal.
010 = 0 0 0 02 = $0
410 = 0 1 0 02 = $4
810 = 1 0 0 02 = $6
1210 = 1 1 0 02 = $C
110 = 0 0 0 12 = $1
510 = 0 1 0 12 = $5
910 = 1 0 0 12 = $9
1310 = 1 1 0 12 = $D
210 = 0 0 1 02 = $2
610 = 0 1 1 02 = $6
1010 = 1 0 1 02 = $A
1410 = 1 1 1 02 = $E
310 = 0 0 1 12 = $3
710 = 0 1 1 12 = $7
1110 = 1 0 1 12 = $B
1510 = 1 1 1 12 = $F
2.- Representa en hexadecimal los siguientes números binarios:
a) 1110 0001 1100 1010 0000 0011 0001 = $E1CA031
b) 11 1111 0000 1100 1000 = $3F0C8
3.- Representa en binario los siguientes números hexadeciamales
a) $212F04 = 10 0001 0010 1111 0000 0100
b) $CAFE = 1100 1010 1111 1110
4.- Calcula el Ca1 (Complemento a 1) y el Ca2 (complemento a 2) de los siguientes números:
a) $3FA
b) 1101112
El Ca1 de un número binario se obtiene fácilmente invirtiendo cada uno de los bits en los que
consta dicho número. Por tanto Ca1($3FA) = Ca1(11 1111 1010) = 00 0000 0101. El Ca1
(110111) = 001000
Para calcular el Ca2 se aplica la siguiente regla: comenzando por el bit menos significativo,
todos los bits se dejan tal cual hasta el primer 1 inclusive, a partir de este, los bits se invierten.
El Ca2($3FA) = Ca1(11 1111 1010) = 00 0000 0110. El Ca2(110111) = 001001.
Para números enteros, el Ca2 de un número es igual a Ca1 del mismo número más 1.
5.- La notación más utilizada por los computadores modernos para la representación de números
enteros con signo es la notación Ca2. Represente las siguientes cantidades usando dicha notación y
asumiendo que los números tienen 8 bits.
a) +5
b)-48
c)-128
d) 0
La notación en Ca2 exige que, para cantidades positivas, se añada un 0 (bit de signo) en la
posición más significativa que continua a los bits de magnitud. Para cantidades negativas,
primero, se obtiene el número positivo correspondiente y, después, se le aplica el operador
Ca2, el resultado obtenido es el número negativo. Obsérvese que los números negativos
tendrán un 1 en la posición más significativa.
El enunciado exige que los números deben tener 8 bits, de los cuales, 7, representan la
magnitud y el que falta, el signo.
a) La magnitud 5 expresada con 7 bits es igual a 000 0101, si a esto se le añade el bit de signo,
1
03/10/05
el número +5 quedaría como 0000 0101
b) La magnitud 48 es igual a 011 0000, si se le añade el bit de signo, 0011 0000 y se le aplica
el operador Ca2, se obtiene Ca2(0011 0000)= 1101 0000, que representa el -48.
c) Si disponemos de n bits para representación en Ca2, el rango de números positivos y
negativos permitidos van desde 2^(n-1)-1 hasta -2^(n-1). En 8 bits dicho rango sería desde
+127 hasta -128. El número -2^(n-1) siempre se representa como un 1 en la posición del bit
de signo, y el resto de los bits a cero. Por tanto, -128 es igual a 1000 0000.
d)0000 0000
6.- Complete cada una de las tablas siguientes
XY
AND
XY
OR
XY
EXOR
X
NOT
00
0
00
0
00
0
0
1
01
0
01
1
01
1
1
0
10
0
10
1
10
1
11
1
11
1
11
0
7.- Si X= 1001 1111 e Y= 1010 0011, obtenga la operación OR,AND, EXOR de ambas palabras y
la NOT de X.
Las operaciones lógicas con palabras se llevan a cabo operando bit a bit con ambos números.
OR
AND
EXOR
NOT
1011 1111
1000 0011
0011 1100
0110 0000
8.- Obtenga la suma aritmética de X e Y del apartado anterior e interprete el resultado suponiendo:
a) X e Y son números con signo en Ca2.
b) X e Y son números sin signo.
La suma aritmética binaria se lleva a cabo de forma similar a la suma decimal. Tan sólo ha
que tener en cuenta que se llevan acarreos cuando el resultado parcial supera la unidad (en
binario sólo se representa el 0 y el 1). Por consiguiente X + Y =1 0100 0010. En un
microprocesador las operaciones aritméticas y lógicas se realizan en una ALU, y el tamaño de
la misma limita el número de bits del resultado. Por ejemplo, una ALU de 8 bits, admite
operandos de 8 bits y genera un resultado de 8 bits. En el caso que nos ocupa, la ALU
generaría como resultado, sólo la cantidad 0100 0010, el bit más significativo aparecería como
un acarreo, C=1.
a) Si X e Y representan números con signo en Ca2, las cantidades simbolizadas serían -97 y
-93 respectivamente. El resultado obtenido por la ALU, interpretado igualmente en Ca2, sería
de +66, en lugar del esperado -190, que sería el correcto. Téngase en cuenta que la cantidad
correcta no se puede expresar en 8 bits.
b)Si X e Y representan números sin signo, entonces las cantidades asociadas serían 159 y 163.
El resultado correcto de la suma sería 322, en cambio la ALU genera 66 y un acarreo.
Téngase en cuenta nuevamente que el mayor valor sin signo que puede dar la ALU es 255.
En cualquiera de los dos casos anteriores, si se considerase el bit de acarreo como parte del
resultado de 9 bits, se obtendría la representación correcta.
2
03/10/05
9.-¿ Cómo se detecta el overflow?
El overflow se produce siempre que el resultado que genere la unidad aritmética no pueda
almacenarse con el número de bits de salida de la unidad o del registro destino. Si se están
operando con números sin signo, el overflow se detecta si el acarreo, C, toma el valor 1.
Si se están operando con números con signo, un overflow se detecta cuando al sumar dos
números del mismo signo, se obtiene un resultado de distinto signo o cuando al restas dos
números A y B se signo opuesto (A-B), el signo del resultado es diferente al del operando A.
Las ALUs integradas en los microprocesadores disponen de una salida V que se activa cuando
inciden estas condiciones.
10.- Los microprocesadores disponen de un registro de estado que contiene “flags” o banderines
que informan del resultado de ciertas operaciones lógicas y aritméticas. Determine el significado de
los siguientes bits:
a) C: Bit de salida de acarreo.
b) N: Bit de signo. Es igual al bit más significativo del resultado
c) Z: Bit de cero. Se activa, cuando el resultado es cero, se pone a 0 para cualquier otro
resultado.
d) V: Bit de overflow. Cuando se activa informa de posibles desbordamientos en
operaciones en Ca2.
11.- Sea X= 1100 0001 un número binario de 8 bits. Especifique en qué consiste el desplazamiento
lógico (derecha o izquierda), el desplazamiento aritmético (derEcha/izquierda) y la rotación
(derecha/izquierda). Obtenga el resultado de realizar dichas operaciones con el número X e
interprete el resultado, cuando sea posible, según X se considere como un número con signo o como
un número sin signo.
Asumimos que X tiene N bits (el más significativo es el de la izquierda o bit N-1). Si X es un
número sin signo, X=193, si X es un número con signo, entonces, X=-63.
•
Desplazamiento lógico a la derecha. X[n]=X[n+1], y X[N-1]=0. Para el ejemplo concreto
de X quedaría como 0110 0000. X= 96 sin signo y X= +96 con signo.
•
Desplazamiento lógico a la izquierda. X[n]=X[n-1], y X[0]=0. Para el ejemplo concreto de
X quedaría como 1000 0010. X= 130 sin signo y X=-126.
•
Rotación a la derecha. X[n]=X[n+1], y X[N-1]=X[0]. Para el ejemplo concreto de X
quedaría como 1110 0000
• Rotación a la izquierda. X[n]=X[n-1], y X[0]=X[N-1]. Para el ejemplo concreto de X
quedaría como 1000 0011.
12.- En qué consiste un ciclo de Fetch y un ciclo de Execute.
Todo microprocesador genera una secuencia cíclica en la que se alternan los ciclos de Fetch y
de Execute. Un ciclo de Fetch representa la fase de búsqueda de la instrucción (ciclo de
lectura en memoria), mientras que un ciclo de execute representa la fase de ejecución de la
instrucción que previamente ha sido traída desde la memoria.
13.- ¿Qué son los modos de direccionamiento?. Describa algunos de ellos.
La forma con la que un microprocesador obtiene el “lugar” donde se encuentra
operandos con los que tiene que trabajar la instrucción.
los
Los tipos más importantes son los que se listan a continuación:
•
Modo inmediato: El dato se encuentra incorporado en la propia instrucción. Se
3
03/10/05
utiliza este modo cuando se inicializan o cargan valores constantes en registros de
datos o memoria. El programador incluye estas constantes junto con la instrucción
que la utiliza y, el compilador, las almacena conjuntamente con el código de
operación de la instrucción.
•
Modo directo (o absoluto para otros fabricantes): Junto al código de operación de
la instrucción se incluye la dirección de la posición de memoria donde se encuentra
el dato. Suele ser uno de los más usados. Las variables locales y globales suelen ser
ejemplos de usos de modo directo cuando son usadas en diferentes puntos del
programa.
•
Modo registro directo. El dato se encuentra en un registro de datos. El código de
operación de la instrucción contiene la referencia al registro de datos.
•
Modo indirecto: El código de operación de la instrucción especifica un registro de
dirección que contiene la dirección de memoria donde se encuentra el dato.
(Variables puntero)
•
Modo indirecto con postincremento: igual que el indirecto, pero incluye el
incremento del contenido del registro de dirección. Este modo es muy útil para
recorrer el contenido de un vector o matriz.
•
Modo indirecto con predecremento: igual que el indirecto, pero que, antes de
acceder al dato, el registro de dirección se decrementa en una unidad.
•
Modo indirecto con desplazamiento (o relativo). El dato se encuentra en la posición
de memoria que se obtiene del resultado de sumar el contenido de un registro de
direcciones con un desplazamiento. Por tanto, la instrucción, contiene el
desplazamiento y la referencia del registro de dirección. Este modo de
direccionamiento suele emplearse para acceder a un elemento de una vector o
matriz, en el que la dirección del primer elemento de la matriz se encuentra en el
registro de dirección y el desplazamiento sumado a la dirección base seleccionan el
elemento deseado.
•
Modo indirecto indexado (o simplemente indexado): El dato se encuentra en la
posición de memoria que se obtiene del resultado de sumar el contenido de un
registro de direcciones con el contenido de otro registro (normalmente de datos ),
denominado índice. Este modo es una generalización del anterior y su uso es el
mismo, aunque mejorado. Si el registro de dirección contiene la dirección base de la
matriz de datos, con el registro índice y con este modo de direccionamiento, se
podrá acceder a cualquier elemento i de la matriz siempre que, i, sea el contenido
del registro índice.
•
Modo indirecto indexado con desplazamiento ( indexado relativo). El dato se
encuentra en una posición de memoria resultado de la suma del contenido de un
registro de dirección, el registro índice y un desplazamiento.
14.- ¿Qué funciones tiene el contador de programa, PC, de un microprocesador?
El contador de programa es un registro que contiene la dirección de memoria donde se
encuentra la siguiente instrucción que el microprocesador debe ejecutar. Automáticamente se
incrementa a medida que las instrucciones van siendo ejecutadas.
4
03/10/05
15.- ¿Qué funciones tiene un registro de datos?
Fundamentalmente contener datos que vayan a ser procesados o hayan sido procesados.
16.- ¿Qué funciones tiene un registro de direcciones?
Contener direcciones de memoria. Se utilizan en apoyo a los diferentes modos de
direccionamiento.
17.- Existe un registro de direcciones especial denominado Stack Pointer (puntero de pila- SP-) que
se inicializa con el valor de la dirección de memoria dónde se almacena la PILA. Indique alguna de
las funciones principales de la PILA y especifique cuál es el procedimiento seguido para introducir
datos en PILA y para extraerlos. Indique también algunas de las instrucciones más destacadas de un
microprocesador que permiten el acceso a la PILA.
La PILA es una porción de la memoria RAM donde se almacenan datos (argumentos usados
por las subrutinas, estado del microprocesador, etc.) y direcciones de retorno de las
subrutinas. Las operaciones de lectura y escritura en PILA se realizan mediante el registro SP
o Stack Pointer, que se encuentra en el propio microprocesador. El contenido de dicho
registro se inicializa con la dirección de la CIMA de la PILA. Una operación de ESCRITURA
(PUSH) provoca: a) el decremento del SP y b) escritura en RAM en la dirección indicada por
SP. Una operación de LECTURA(POP) provoca: a) la lectura en RAM en la dirección
indicada por SP y b) el incremento del SP.
Los microprocesadores disponen de instrucciones especiales que permiten la escritura o
lectura de datos en la pila (instrucciones PUSH y POP) y de instrucciones de llamada y
regreso de subrutina (JSR y RTS) que, automáticamente, provocan el almacenamiento del
contenido del registro PC (dirección de la siguiente instrucción a ejecutar) en PILA y la
lectura de la PILA para restaurar el registro PC, respectivamente. Las interrupciones
(excepciones) también utilizan la PILA (recuérdese que una subrutina de interrupción es un
caso particular de subrutina que se invoca mediante algún evento).
18.- ¿Qué funciones tiene el bus de direcciones y datos de un microprocesador?
Por el bus de direcciones (AB) el microprocesador muestra la dirección de memoria a la que
quiera acceder, bien para realizar un ciclo de Fetch, bien para leer o escribir algún operando
como consecuencia de la ejecución de una instrucción.
El bus de datos (DB) porta los datos que se transfiere entre la memoria(o periféricos) y el
microprocesador.
19.- Si un microprocesador dispone de:
a) 16
b) 20
c) 24
d) 32
líneas en su bus de direcciones, ¿cuántas direcciones físicas distintas puede generar?
El número de direcciones físicas está relacionado con el tamaño (nº bits) del AB. Si AB tiene n
líneas o n bits, el número, N, de direcciones es N=2^n. Por tanto:
a) N = 2^16 = 65536 = 64K
b) N= 2^20 = 1048576 = 1 M
5
03/10/05
c) N= 2^24 = 2^20 x 2^4 = 1 M x 16 = 16 M
ci) d) N = 2^32 = 2^30 x 2^2 = 1G x 4 = 4G
20.- Representa el esquema de una RAM de 32Kx8 y una ROM de 16Kx8.
Tanto la RAM como la ROM, disponen de un bus de direcciones, bus de datos y terminales de
control. La RAM es una memoria de lectura y escritura, por consiguiente, dispone de un
terminal R/W que identifica el sentido de la transferencia; a su vez, su capacidad es de 32Kx8,
esto implica que el bus de datos es bidireccional y de 8 bits mientras que su bus de direcciones
tiene 15 líneas (2 15 = 32K). La ROM es una memoria de sólo lectura, por lo que su bus de
datos es unidireccional en funcionamiento normal; su bus de direcciones dispone de 14 líneas
(2 14 = 16K). Ambos chips disponen de terminales de control de acceso (CS: Chip Select).
21.- Utilizando los dispositivos de memoria del apartado anterior, diseña el sistema de
decodificación necesario para ubicar la RAM en las primeras posiciones y la ROM en las últimas
posiciones del espacio de direccionamiento de un microprocesador con 16 líneas en el bus de
direcciones y 8 en el bus de datos. Repita el ejemplo si el microprocesador tiene 20 líneas en el bus
de direcciones y usando decodificación parcial.
a) Microprocesador con 16 líneas en el bus de direcciones
CSRAM = A15'
CSROM = A15A14
6
03/10/05
7
03/10/05
$0000
A12 =0
A13 =0
A12 =1
A14=0
A12 =0
A13 =1
A12 =1
A15=0
A12 =0
RAM 32Kx8
A13 =0
A12 =1
A14=1
A12 =0
A13 =1
A12 =1
A12 =0
A13 =0
A12 =1
A14=0
A12 =0
A13 =1
A12 =1
A15=1
A12 =0
A13 =0
A12 =1
A14=1
ROM 16Kx8
A12 =0
A13 =1
A12 =1
$FFFF
8
03/10/05
b) Microprocesador con 20 líneas en el bus de direcciones y usando decodificación parcial. En
este caso se podrían utilizar las mismas expresiones que para el apartado anterior. Los bits
A19:16 del bus de direcciones no se utilizan. En la decodificación total, todos los bits MSB del
bus de direcciones, en alguna medida, entran a formar parte de la decodificación de los chips
de memoria. En la decodificación parcial esto no ocurre. Desde el punto de vista del mapa de
memoria, un dispositivo de cierta capacidad ocupa, en decodificación total, exclusivamente el
rango de direcciones de memoria que cubren dicha capacidad, en cambio, en la decodificación
parcial, el rango de direcciones de memoria es mucho mayor, por lo que dicho dispositivo va a
ser visto como si tuviese una capacidad mayor a la real, aunque en realidad, lo que ocurre, es
que varias direcciones del bus accederán a la misma posición interna del dispositivo. A
continuación del esquemático, se muestra el mapa de memoria que se extrae de él.
CSRAM = A15'
CSROM = A15A14
9
03/10/05
Descargar