Arquitectura de Máquinas
-
Upload
laoska-benyasca -
Category
Documents
-
view
521 -
download
1
description
Transcript of Arquitectura de Máquinas
Arquitectura de Máquinas II Sistemático 3
Integrantes:
Durán, Enyel
Guadamuz, Laoska
Medrano, Raúl
Paniagua, Yahosca
Vallecillo, Cristhian
4T1
Grupo 2
4T1
Guía Clase Práctica Nº 3
Diseño del Conjunto de Instrucciones
1. Se tiene que codificar un conjunto de instrucciones en un formato de 16 bits con campos de dirección
de 6 bits. En este conjunto se han considerado 15 instrucciones de 2 operandos, 63 de 1 operando y 4
sin operandos.
a. ¿Caben las instrucciones en formato de bloque fijo? No
b. ¿Caben en formato de bloque extendido? SI
c. ¿Cuántas más de 2 operandos pudieran caber? Ninguna
d. ¿Cuántas más de 1 operando pudieran caber? Ninguna
e. ¿Cuántas más de 0 operando pudieran caber? 60 instrucciones más
CO Operando 1 Operando 2
0000 xxxxxx xxxxxx
… … …
1110 xxxxxx xxxxxx
1111 000000 xxxxxx
… … …
1111 111110 xxxxxx
1111 111111 000000
… … …
1111 111111 000011
… … …
1111 111111 111111
2. Se tiene que codificar un conjunto de instrucciones en un formato de 16 bits con campos de dirección
de 4 bits. En este conjunto se han considerado 13 instrucciones de 3 operandos, 32 de 1 operando y 4
sin operando. ¿Cuántas de 1 operando caben si se emplea:?
a. Codificación de Bloque Fijo: No se puede.
b. Codificación Extendida: 255 Instrucciones de 1 operando.
CO Operando 1 Operando 2 Operando 3
0000 xxxx xxxx xxxx
… … …
1100 xxxx xxxx xxxx
1101 0000 xxxx xxxx
… … … …
1101 1111 xxxx xxxx
1110 0000 xxxx xxxx
… … … …
1110 1111 xxxx xxxx
1111 0000 0000 xxxx
… … … …
1111 1111 1110 xxxx
1111 1111 1111 0000
… … … …
1111 111111 111111 0011
15 instrucciones de 2 operandos
63 instrucciones de 1 operando
4 instrucciones de 0 operando
60 instrucciones adicionales
de 0 operando
13 instrucciones de 3 operandos
32 instrucciones de 2 operando
255 instrucciones adicionales
de 1 operando
4 instrucciones de 0 operando
3. Se tiene que codificar un conjunto de instrucciones, el cual consta de las operaciones cuyos
mnemónicos y frecuencias relativas se definen en la tabla mostrada a continuación. Determine:
a. Longitud del CO empleando técnica de bloque fijo
( )
b. Cada uno de los CO empleando codificación Huffman
mnemónicos CO L (CO) f
MOV 11 2 0.25
ADD 10 2 0.25
SUB 011 3 0.125
AND 010 3 0.125
JMP 0011 4 0.0625
INT 0010 4 0.0625
CALL 0001 4 0.0625
NOT 0000 4 0.0625
c. Calcule la longitud media del CO tanto para codificación de bloque fijo como la Huffman
( ) ∑
(
) (
) (
)
d. Determine la longitud óptima del CO:
( ) ∑ ( )
e. Determine el grado de desperdicio de bits o redundancia con cada sistema de codificación:
4. Suponga que tiene una máquina con un formato de 2 direcciones de 6 bits cada uno y el CO está en
bloque fijo de 4 bits. Su conjunto de instrucciones tiene 14 instrucciones y los modos se codifican
según la tabla. La máquina tiene 8 Registros enumerados de R0 a R7.
a. Asigne código a las instrucciones siguientes ADD, SUB, JNZ, MOV
ADD 0001
SUB 0010
JNZ 0100
MOV 1000
b. Codifique en binario las instrucciones siguientes:
ADD (R4)+, 1000H(R6)
0001 011|100 110|110
MOV (R3), (-(R7))
1000 001|011 101|111
JNZ R5
0100 000|101 000|000
MOV (R4)+, (1000H(R6))
1000 010|100 111|110
5. Llene la matriz de comparación de los modos de direccionamiento y arquitecturas poniendo palomilla
[√] o tacha [x] en dependencia si el modo aplica o no para esa arquitectura. Posteriormente, analice
cuál arquitectura soporta más modos y cual menos. Con base en los conocimientos adquiridos en clase,
justifique el porqué de sus hallazgos.
Acumulador Pila Registro 2 dir. Registro 3 dir.
Inmediato √ √ √ √
Registro X X √ √
Memoria √ √ √ √
Indirecto de Reg. X X √ X
Autoincremento X X √ X
Autodecremento X X √ X
Indice X x √ √
Relativo al PC √ √ √ √
6. Escriba trozos de código en ensamblador que realicen las tareas descritas en la lista a continuación,
tratando de aplicar lo más posible los modos de direccionamiento estudiados en clase:
a. Multiplicación de dos enteros por sumas sucesivas.
b. División de dos enteros por restas sucesivas.
c. Determinar si una cadena es palíndrome ; ciclo para checar si la palabra es palindroma
mov cl,n
mov si,0
;limpiando contenido de ax
xor ax,ax
;moviendo registro n a al
mov al,n
mov di,ax
rr:
dec di
mov al,p[si]
mov dl,p1[di]
inc si
cmp al,dl
jnz imp
loop rr
d. Invertir una cadena
0001 0000 0000 0000
0001 0000 0000 0000
;Inicio de la función
push ebp
mov ebp, esp
;Cargamos el puntero pasado como parámetro en eax
mov eax, [ebp+8]
;Introducimos el carácter de fin de cadena en la pila
push word 0
cadena_en_pila:
;Vamos a apilar cada carácter de la cadena
;Recuperación del carácter actual
mov bl, byte [eax]
;¿Es el fin de la cadena? (bl = 0 ?)
test bl, bl
;Si es sí pasamos a la etapa siguiente
jz fin_cadena_en_pila
;Si no apilamos el siguiente carácter
push bx
;Incrementamos el puntero en 1 para procesar el siguiente carácter
inc eax
;Pasamos al siguiente carácter
jmp cadena_en_pila
fin_cadena_en_pila:
;Volvemos a cargar el puntero de la cadena para desapilar uno a uno cada carácter
mov eax, [ebp + 8]
invertir:
;Desapilamos el carácter actual
pop bx
;Lo cargamos en el puntero de cadena
mov byte [eax], bl
;Incrementamos la dirección
inc eax
;¿Era el fin de la cadena? (¿el 0 que hemos apilado al inicio?)
test bl, bl
;No entonces continuamos
jnz invertir
;Es el fin de la cadena, indicamos el fin de la función
leave
ret
e. Dados dos arreglos A y B, los sume y guarde el resultado en uno de ellos
f. Genere los primeros n valores de la serie Fibonacci MOV AX,00
MOV BX,01
MOV CX,10 ;para el numero de veces
MOV DX,00
CICLO:
ADD AX,BX; en AX se guarda el numero
MOV BX,DX
MOV DX,AX
LOOP CICLO
7. La serie de instrucciones descritas abajo, corresponden a una rutina. Esta rutina accede a variables de
memoria cuya dirección se muestran en la tabla de símbolos. Al momento de su llamado, la memoria
y los registros tenían el estado mostrado. Ejecute la rutina a mano y muestre en cada paso los
cambios de los valores en memoria y los registros. Explique que hace la rutina.
:Rutina
Tabla de Símbolos
A 2010H
B 2020H
1000H LEA R3, A
1004H LEA R4, B
1008H MOVE R1, D
100CH MOVE R2, 0
:LOOP
100FH MOVE R5, (R3)+
1011H ADD (R4)+, R5
1015H MOVE 2030H(R2), R5
1017H INC R2
1019H DEC R1
101BH JNZ LOOP
101DH RETURN
Memoria
0 1 2 3 4
2010 1 2 3
2020 10 20 30
2030 11 22 33
2040 3
2050
Registros
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
R0
R1 3 2 1 0
R2 0 1 2 3
R3 2011 2012 2013
R4 2010H 2021 2022 2023
R5 2020H 1 11 2 22 3 33
[Suma A + B y los resultados se guardan en C]
Guía Clase Práctica Nº 4
Unidad de Ejecución
1. Represente en números enteros de 4 bits en las 4 técnicas estudiadas los siguientes
Número Signo Magnitud C-1 C-2 Exc. A M
0 0000 1000
0000 0000 1000
1 0001 0001 0001 1001
-1 1001 1110 1111 0111
2 0010 0010 0010 1010
-2 1010 1101 1110 0110
5 0101 0101 0101 1101
-5 1101 1010 1011 0011
C 2030H
D 2040H
6 0110 0110 0110 1110
-6 1110 1001 1010 0010
2. Diseñe una ALU que realice las siguientes operaciones aritméticas: Suma, Resta, y lógicas: AND y
OR. Las operaciones aritméticas diséñelas basadas en un CLA. Para implementar la resta emplee
negadores para el sustraendo y la línea de selección de resta en 1 páselo al Cin. Escriba la tabla de
funciones de la ALU resultante
S1 S0 Z
0 0 +
0 1 -
1 0 AND
1 1 OR