UNIVERSIDAD NACIONAL DE INGENIERIA FACULTAD DE ELECTROTECNIA Y COMPUTACION Departamento de Arquitectura y Sistemas Arquitectura de Máquinas Computadoras II GUIA CLASE PRÁCTICA No 3 Diseño del Conjunto de Instrucciones A. 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 operandos y 4 sin operandos. a) ¿Caben las instrucciones en formato de bloque fijo? b) ¿Caben en formato de bloque extendido? c) ¿Cuántas más de 2 operandos pudieran caber? d) ¿Cuántas más de 1 operando pudieran caber? e) ¿Cuántas más de 0 operando pudieran caber? B. 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 2 operandos y 4 sin operandos. ¿Cuántas de 1 operando caben si se emplea: a) Codificación de Bloque fijo b) Codificación Extendida C. 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 1. Para tal conjunto de instrucción realice lo que se solicita: a) Calcule la longitud del CO (L (CO)) empleando técnica de bloque fijo b) Cada uno de los CO empleando codificación Huffman c) Calcule la longitud media del CO (L (CO)med o LA) tanto para codificación de bloque fijo como para la de Huffman: 𝑛 𝐿(𝐶𝑂)𝑚𝑒𝑑 = 𝐿𝐴 = ∑ 𝑙𝑖 ∗ 𝑓𝑖 𝑖=1 d) Determine la longitud óptima del CO (L (CO)opt o LO): 𝑛 𝐿(𝐶𝑂)𝑜𝑝𝑡 = 𝐿𝑂 = ∑ 𝑓𝑖 ∗ 𝑙𝑜𝑔2 (𝑓𝑖 ) 𝑖=1 e) Determine el grado de desperdicio de bits o redundancia R con cada sistema de codificación: 𝑅= 𝐿𝐴 − 𝐿𝑂 𝐿𝐴 Página 1 UNIVERSIDAD NACIONAL DE INGENIERIA FACULTAD DE ELECTROTECNIA Y COMPUTACION Departamento de Arquitectura y Sistemas Arquitectura de Máquinas Computadoras II Tabla 1. Conjunto de instrucciones con su frecuencia relativa mnemónicos MOV ADD SUB AND JMP INT CALL NOT CO f 0.25 0.25 0.125 0.125 0.0625 0.0625 0.0625 0.0625 D. 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 1. La máquina tiene 8 registros enumerados de R0 a R7. a) Asigne código a las operaciones siguientes: ADD, SUB, JNZ y MOV b) Codifique en binario las instrucciones siguientes: ADD (R4)+, 1000H(R6) SUB (R3), (-(R7)) JNZ R5 MOV (R4)+, (1000H(R6)) Tabla 1.: Modos de Direccionamiento Modo Registro Directo Indirecto Autoincremento Directo Indirecto Autodecremento Directo Indirecto Indice Directo Indirecto Operando Fuente Código de operación (CO) 15 14 13 Código 000 001 010 011 100 101 110 111 Mf 12 11 10 Operando Destino Rf 9 8 7 Md 6 Formato de la Instrucción Página 2 5 4 Rd 3 2 1 0 UNIVERSIDAD NACIONAL DE INGENIERIA FACULTAD DE ELECTROTECNIA Y COMPUTACION Departamento de Arquitectura y Sistemas Arquitectura de Máquinas Computadoras II E. Llene la matriz de comparación de los modos de direccionamiento y arquitecturas poniendo palomilla () o tacha () en dependencia si el modo aplica o no para esa arquitectura. Posteriormente, analice cuál arquitectura soporta más modos y cuál menos. Con base en los conocimientos adquiridos en clase, justifique el porqué de sus hallazgos. Acumulador Pila Registros 2 dir. Registros 3 dir. Inmediato Registro Absoluto Indirecto de Registro Autoincremento Autodecremento Indice Relativo al PC F. Escriba una rutina en código en ensamblador de 2 direcciones de la arquitectura estudiada en clase, para cada una de las tareas descritas en la lista a continuación, tratando de aplicar lo más posible los modos de direccionamiento estudiados: 1. Multiplicación de dos enteros por sumas sucesivas. Considere que los factores deben estar en los registros R1 y R2 y el resultado debe quedar en R3. 2. División de dos enteros por restas sucesivas. Considere que el dividendo debe estar en el registro R1 y el divisor en R2. El cociente debe quedar en R3 y el residuo en R1. 3. Determinar si un arreglo de caracteres es palíndromo. Considere que el arreglo de caracteres se almacena en una variable de memoria con nombre “cadena”. El resultado debe quedar en R1: 1 si es palíndromo y 0 si no lo es. 4. Invertir una cadena. Considere que la cadena reside en un arreglo de caracteres en una variable de memoria con nombre “cadena”. 5. Dados dos arreglos A y B, los sume y guarde el resultado en uno de ellos. 6. Genere los primeros “n” valores de la serie Fibonacci en un arreglo de enteros almacenado en la variable de memoria “Fibonacci”. Considere que el valor de n está almacenado en R1. Página 3 UNIVERSIDAD NACIONAL DE INGENIERIA FACULTAD DE ELECTROTECNIA Y COMPUTACION Departamento de Arquitectura y Sistemas Arquitectura de Máquinas Computadoras II G. 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 qué hace la rutina. Notas: 1) 2) 3) 4) LEA R3, A carga la dirección de la variable A en el registro R3. INC R2 incrementa en 1 el contenido del registro R2 DEC R1 decrementa en 1 el contenido del registro R1 JNZ LOOP modifica el PC para que apunte a la dirección 100FH o :LOOP si el resultado de la operación anterior no fue 0. Tabla de Símbolos :RUTINA R3, R4, R1, R2, A B D 0 A 2010H B 2020H C 2030H D 2040H R5 (R3)+ (R4)+ R5 2030H(R2), R5 R2 R1 LOOP Memoria ... 100FH 1011H 1015H 1017H 1019H 101BH 101DH LEA LEA MOV MOV :LOOP MOV ADD MOV INC DEC JNZ RETURN 0 1 2 2010 1 2 3 2020 10 20 30 2030 2040 3 2050 ... 1000H 1004H 1008H 100CH Página 4 3 4 5 ... F UNIVERSIDAD NACIONAL DE INGENIERIA FACULTAD DE ELECTROTECNIA Y COMPUTACION Departamento de Arquitectura y Sistemas Arquitectura de Máquinas Computadoras II Registros 1 R0 R1 R2 R3 R4 2 3 4 5 6 7 2010H 2020H Página 5 8 9 10 11 12