EJERCICIO DE FORMATO DE INSTRUCCION

Anuncio
Organización del Computador I
Nombre:
1er. Parcial
5-Octubre-2006
L.U.:
Justifique cada una de sus respuestas. Especifique, en caso de ser necesario, todos los cálculos intermedios utilizados.
El examen debe ser entregado en tinta.
En el parcial puede tener la cartilla de instrucciones Assembler pero no se puede compartir.
Para aprobar el parcial, son necesarios 6(seis) puntos. Para promocionar, 8 (ocho) puntos
1) (2.5p) Se tiene un computador con direcciones y palabras de 16 bits, dotado un banco de 32 registros de 16 bits que
ejecuta exclusivamente el siguiente juego de instrucciones: MOVE fuente, destino, condición; instrucciones: CODOP
operando1, operando2, destino (donde CODOP puede ser ADD, SUB, MUL, DIV, AND, OR, XOR) y una instrucción
SHIFT fuente, destino, tipo, contador
Este juego de instrucciones soporta los siguientes modos de direccionamiento: Inmediato, Registro, Indirecto a Registro para
los accesos a posiciones de memoria. Por otra parte, las condiciones a evaluar en la instrucción MOVE son acarreo (C) y cero
(Z), y sus contrarias; no acarreo (NC) y no cero (NZ). Finalmente, las operaciones de cálculo se pueden realizar sobre datos
en alguna de las siguientes representaciones: Entero sin signo, Entero en complemento a 2, Reales en punto flotante
Diseñar el formato de instrucción para este juego de instrucciones. ¿Se puede pensar en un diseño ortogonal?
Solución: Se puede hacer un formato de instrucción ortogonal
Como lo pienso ortogonal directamente, entonces el código de operación no debe contener información alguna sobre el modo
de direccionamiento de los operandos, ni sobre el formato de representación de los mismos.
Bits necesarios
4
2
2
5
2
Distingue entre
9 instrucciones diferentes (CO)
3 modos de direccionamiento distintos (MD)
3 sistemas de representación diferentes (SR)
32 registros
4 condiciones (COND)
MOVE
fuente,
destino,
condición
CO SR MD1 MD2 COND NoUsado dato dato dato dato
(4) (2) (2) (2) (2)
(4)
(16) (16) (16) (16)
CODOP
operando1,
operando2,
CO SR MD1 MD2 MD3 NoUsado
dato
(4) (2) (2) (2) (2)
(4)
(16)
Shift
fuente,
CO SR MD1 MD2 TIPO
(4) (2) (2) (2) (2)
destino
dato
dato
(16)
(16)
destino,
tipo,
CONT dato dato
(4)
(16) (16)
contador
En el tipo, considero 4 tipos de shifts diferentes, simplemente porque si no me sobrarían dos bits (opción también válida)
Aunque todos los datos ocupan 16 bits, su formato interno dependerá de su modo de direccionamiento
Inmediato los 16 bits estarán en uno de los posibles sistemas de representación: entero sin signo, complemento a dos o coma
flotante
Directo a registro
Registro
No usado
(5)
(11)
Relativo el campo Desplazamiento no se usará en el modo directo a registro
Registro Desplazamiento
(5)
(11)
2) (1p) a) Probar si estos dos circuitos son o no equivalentes
Organización del Computador I
Nombre:
1er. Parcial
5-Octubre-2006
L.U.:
Respuesta: Los circuitos son equivalentes.
Para el primer circuito se tiene:
┐
(
┐
(
A
B
)
┐
(
┐
(
┐
C
B
)
)
)
=
┐
(
┐
(
A
B
)
┐
┐
(
┐
C
B
)
+
┐
D
)
=
┐
(
┐
(AB) (
┐
C
B
+
┐
D
)
)
=
┐
(
┐
(AB) (
B
┐
C
+
┐
D
)
)
Para el segundo circuito se tiene:
┐
┐
(
A
B
+
┐
B
D
+
C
D
)
=
┐
(
┐
(
A
B
)
┐
(
┐
B
D
)
┐
(
C
D
)
)
=
┐
(
┐
(
A
B
)
┐
(
(
┐
B
D
)
+
(
C
D
)
)
)
=
┐
(
┐
(
A
B
)
┐
(
(
┐
B
+
C
)
D
)
=
┐
(
┐
(
A
B
)
(
┐
(
┐
B
+
C
)
+
┐
D
)
=
┐
(
┐
(
A
B
)
(
B┐
C
+
┐
D
)
)
Como se ve, se llegó a la misma fórmula en ambos casos, lo que demuestra que son circuitos equivalentes. Otra forma
más simple pero más larga, hubiera sido a través de las tablas de verdad de cada circuito
(1.5p) 
b) Diagrame un temporizador de 4 salidas que corresponda a la siguiente tabla:
salida 1 s. 2 s. 3 s. 4 s. 5 s. 6 s. 7 s. 8 s.
S0
0
1
1
1
0
1
1
1...
S1
0
0
0
1
0
0
0
1...
S2
0
0
1
1
0
0
1
1...
S3
0
0
1
1
0
0
1
1...
Se cuenta con osciladores de frecuencia fija (2^15 Hz), contadores binarios de 8 bits, y compuertas lógicas individuales.
Solución:
Osc
(clock)
Contador de 8
Bits
Contador de 8
Bits
S7
S7
S0
S0
e1 e2
Deco
s0 s1 s2
s0 s1 s2 s3
que serían la salida del
circuito
Organización del Computador I
Nombre:
1er. Parcial
5-Octubre-2006
L.U.:
3) (1p) a) Dado el número A4B23C05 en hexadecimal ¿Que número decimal representa si se supone que está en notación
IEEE?
Respuesta:
A
4
B
2
3
C
0
5
1010
0100
1011
0010
0011
1100
0000
0101
Se trata de IEEE simple precisión, dado que son 32 bits
Bit de signo=1 por lo tanto es un número negativo
Exponente = 01001001= 73 –
127 = -54 (recordar que se representa en notación exceso 127)
Mantisa = 01100100011110000000101 = 2-2 + 2-3 + 2-6 + 2-10 + 2-11 + 2-12 + 2-13 +2-21 +2-23 =
0,39245665073394775390625. A este número hay que sumarle 1 por el bit implícito, lo que queda
1,39245665073394775390625 * 10 -54
(1p) b) Sea un número binario X de 6 bits expresado en un sistema (p, k). Se sabe que la representación de numero es
X+15=000010, X-3=110000, 2*X =100110, todas ellas expresadas en el mismo sistema de representación (p, k). ¿Cuál o
cuáles de las variantes del sistema (p, k) se utilizó para su representación? ¿Cuál es el valor de X expresado en decimal?
Sistema (p,k) sin signo: Según la primer ecuación, 000010 representa un 2. Por lo que X+15=2 y despejando, X=-13.
Como se trataría de un número negativo, no se puede representar en ese sistema
Sistema (p,k) con signo: X+15=2 entonces X=-13
X-3 = -16 (110000 es -16) entonces X=-13
2*X = -6 (100110 es -6) entonces X= -3
Por lo tanto no puede ser en notación con signo
Sistema (p,k) C2: X+15=2 entonces X=-13
X-3 = -16 (110000 es -16) entonces X=-13
2*X = -26 (100110 es -6) entonces X= -13
Por lo tanto, en sistema (p,k) complemento a 2 se puede representar y el valor de X es -13
4) (1p) Decida si las siguientes afirmaciones son verdaderas o falsas. Justificar
a) ¿Durante el ciclo de ejecución de una instrucción, el PC se incrementa siempre de la misma forma? F. Por ejemplo en
el JMP el PC no se incrementa
b) ¿El nivel de lenguaje de máquina representa como se acceden y almacenan los datos? V
5) (2p) Se tienen dos vectores de dimensión N almacenados en memoria a partir de las direcciones identificadas por VEC1
y VEC2. VEC1 está compuesto por números en notación complemento a 2 de 16 bits y cada uno de ellos indica una
posición dentro de VEC2. Se pide realizar un algoritmo en Assembler de ORGA1, que como resultado de su ejecución,
reemplace el contenido de cada posición del vector 1 con el valor del vector 2 apuntado por dicho elemento. Esto es, si
VEC1[J]=K, entonces se ejecutará: VEC1[J]=VEC2[K]. En caso de que algún elemento de VEC1 se encuentre fuera de
los límites de VEC2
,
l
a
p
o
s
i
c
i
ó
n
d
e
b
e
l
l
e
n
a
r
s
e
c
o
n
e
l
v
a
l
o
r
e
s
p
e
c
i
a
l
“
-1
”
.
Resolución:
MOV R0, VEC1
; R0 puntero del vector 1
MOV R3, 1
; R3 contador
CMP [N], 0
; Verifico si hay elementos en vector 1
JE
FIN
CICLO: MOV R1, VEC2
; R1 puntero del vector 2
CMP [R0], 0000h
; Verifico si se va de rango por negativo
JL
F_de_R
CMP [R0], [M]
; Verifico si se va de rango por se mayor que M
JG
F_de_R
ADD R1, [R0] ; Si esta en rango, me posiciono en el vector 2
MOV [R0], [R1]
; Reemplazo el valor de vector 1 con el de vector 2
JMP
AVANZAR
F_de_R: MOV [R0], FFFFh
; Si se va de rango, reemplazo con FFFFh
AVANZAR:
ADD R0, 1
; Me muevo al siguiente elemento del vector 1
ADD R3, 1
; Verifico si terminé con todos los elementos de vector 1
Organización del Computador I
Nombre:
FIN:
CMP
JG
JMP
RET
R3, [N]
FIN
CICLO
1er. Parcial
5-Octubre-2006
L.U.:
Descargar