Arquitectura de Computadores UTN - FRBA DISI Práctico Nº 7: Modelo de Ejecución Campus/Medrano TP No 7: Modelo de Ejecución a. Responder: 1. Explicar, para todos los registros asociados a datos de la computadora X, cuál será su tamaño. Idem para los registros asociados a direcciones. 2. Se explicó que la memoria de la Computadora “X” tiene una capacidad de 4 KB Palabras de 16 bits cada una. (Es decir 4096 palabras de 16 bits cada una) a. Indicar cuál sería el tamaño de las direcciones de la computadora “X” si la memoria tuviera una capacidad de 64 KB palabras de 16 bits cada una. 64= 26 K = 210 (6 + 10) = 16 bits para direccionar una memoria de 64 KB 3. b. Cuál sería el rango de direcciones de “X” (especificar en hexadecimal y en decimal) 0000h – FFFFh Dec: 0 – 65535 Tengo 65536 direcciones posibles c. Cómo quedaría el formato de las instrucciones de “X” con este nuevo rango de direcciones de memoria COP = 4 bits Data = 16 bits Para las DATA a. b. c. d. e. siguientes instrucciones de la computadora “X”, indicar los bits correspondientes al COP y a la parte 000 LDA A10 001 ANA A11 002 CMA 003 STA A12 004 HLT 1 5 8 3 0 A10 A11 xxx A12 xxx b. Resolver: 4. Para las instrucciones del ejercicio anterior, asumir que se trata de un programa a ejecutar y además que: A10 = A35E; A11 = A3A1. Explicar que hace este programa y cuál será el valor final del registro Acumulador, el MDR, la dirección de memoria A12, y del registro IP AC: A35E AC <- A35E AND MDR:A3A1 AC: A300 AC: ^AC AC: 5CFF A12: 5CFF MDR: 5CFF IP: 005 Arquitectura de Computadores UTN - FRBA DISI 5. Campus/Medrano Escribir un programa en Assembler de la computadora X que permita: sumar 2 números que se encuentran en las direcciones de memoria AA1 y AA2. Luego este programa debe sacar el promedio de estos dos valores y almacenar el resultado obtenido en la dirección de memoria AA3 y mostrar dicho resultado por pantalla. a. Escribir dicho programa en su forma taquigráfica hexadecimal LDA AA1 ADA AA2 SHR STA AA3 OUT HLT 6. Práctico Nº 7: Modelo de Ejecución 1AA1 (forma taquigráfica hexadecimal) 2AA2 AXXX 3AA3 FXXX 0XXX Escribir un programa en Assembler de la computadora X que permita: leer un dato ingresado por el usuario desde el teclado, sumarlo a un valor almacenado en la dirección de memoria A10 y multiplicarlo por 5. Finalmente se debe almacenar el resultado final en la dirección A11 Respuesta: Se pide hacer básicamente (Número ingresado por usuario + Número en memoria)= suma; y luego hay que hacer (suma x 5). Voy a necesitar guardar el resultado de la suma porque para poder multiplicar por 5 tengo que hacer [(Suma x2)x2]+ suma (Ver temas vistos en clases sobre cómo hacer multiplicaciones) INP (Permite el ingreso de un dato por parte del usuario y lo carga en el acumulador) ADA A10 (suma al acumulador el dato que está en A10) STA A11 (guarda el resultado de la suma en A11) SHL (Divide por 2 el resultado de la suma) SHL (vuelve a dividir por 2) ADA A11 (suma el número guardado en A11 para lograr hacer la multiplicación por 5) STA A11 HLT 7. Escribir un programa en Assembler de la computadora X que permita: Comparar dos números que están almacenados en memoria en las direcciones A10 y A11. a. Se deben asignar direcciones de memoria a las instrucciones, teniendo en cuenta que el programa principal empieza en la dirección 000 y la dirección a la que debe saltar el primer salto condicional será 00A b. Si ambos números son iguales el programa debe saltar a un código que ejecute un AND entre el valor almacenado en A12 y el valor resultante de la resta y almacene el valor final en la dirección A14 c. Si el valor almacenado en A11 es mayor entonces el programa debe saltar a un código que realice la suma entre el valor de A10 y otro valor almacenado en A13 y almacene el resultado en A14 d. Si el valor almacenado en A10 es mayor entonces el programa debe saltar a un código que almacene el resultado obtenido en A14 y lo muestre en pantalla 000 001 002 003 004 005 006 LDA A11 CMA INC ADA A10 SZA 00A (Si el flag Z se activó ambos operandos son iguales entonces saltar a 00A) SNA 00D (Si el signo es negativo, el sustraendo, dato en A11 es mayor, saltar a 00D) JMP 012 (Si no entró por las condiciones anteriores entonces el dato en A11 es menor) Arquitectura de Computadores UTN - FRBA DISI 00A ANA A12 00B STA A14 00C HLT 00D 00E 00F 011 LDA A10 ADA A13 STA A14 HLT 012 STA A14 013 OUT 014 HLT Práctico Nº 7: Modelo de Ejecución ( Si ambos operandos son iguales ejecutar este código) (Ejecutar si Sustraendo > Minuendo) (Ejecutar si Sustraendo < Minuendo) Campus/Medrano