Práctica 1 - Arquitectura de Computadores

4
ARQUITECTURA DE COMPUTADORES Práctica 1 Ejercicio 1: Realizar un programa que calcule la resta de dos números almacenados en memoria. Implementar la resta como suma del complemento a dos del substraendo al minuendo. Almacenar el resultado en una posición de memoria. Solución: Suma los números almacenados en las posiciones de memoria 7 y 8, almacenando el resultado en la posición de memoria 9. En este caso los números a sumar son 3 y 2. #Ejercicio 1: Resta de dos números 7 3 8 2 @ 0 @ CRA ADD 8 CTA ITA ADD 7 STA 9 HALT @ Ejercicio 2: Realizar un programa que calcule la suma de los valores absolutos de dos números almacenados en memoria. El resultado de la suma debe quedar, asimismo, almacenado en una posición de memoria. Solución: Suma los valores absolutos de 3 y -2, siendo este último almacenado como FFFE, su equivalente en hexadecimal. En este caso se llama a una subrutina porque

description

Práctica 1 de Arquitectura de Computadores por la Universidad de Córdoba

Transcript of Práctica 1 - Arquitectura de Computadores

ARQUITECTURA DE COMPUTADORES Prctica 1Ejercicio 1:Realizar un programa que calcule la resta de dos nmeros almacenados en memoria. Implementar la resta como suma del complemento a dos del substraendo al minuendo. Almacenar el resultado en una posicin de memoria. Solucin:

Suma los nmeros almacenados en las posiciones de memoria 7 y 8, almacenando el resultado en la posicin de memoria 9. En este caso los nmeros a sumar son 3 y 2.

#Ejercicio 1: Resta de dos nmeros7 38 2@0@CRAADD 8CTA ITAADD 7STA 9HALT@

Ejercicio 2:

Realizar un programa que calcule la suma de los valores absolutos de dos nmeros almacenados en memoria. El resultado de la suma debe quedar, asimismo, almacenado en una posicin de memoria.

Solucin:

Suma los valores absolutos de 3 y -2, siendo este ltimo almacenado como FFFE, su equivalente en hexadecimal. En este caso se llama a una subrutina porque hay que hacer dos veces lo mismo: comprobar si el nmero es negativo o no, y si lo es, convertirlo en positivo complementndolo y sumndole uno. La comprobacin se hace mediante el comando SFZ despus de mover una posicin a la izquierda el acumulador, haciendo que su bit ms significativo se almacene en F. SFZ comprueba el valor de F, si es 0 (positivo) se salta una instruccin, si es 1 (negativo) no se salta ninguna instruccin. Poniendo un JMP (salto) en esa instruccin hacia sus respectivas operaciones se consigue el efecto deseado.

#Ejercicio 2: Suma de valores absolutos0 31 FFFE@5@CRA ADD 0CSR ESTA 3CRAADD 1CSR EADD 3STA 4HALTROL_F_ACCSFZJMP 15ROR_F_ACCJMP 18ROR_F_ACCCTAITASTA 2JMPI E@

Ejercicio 3:

Realizar un programa que calcule la suma de todos los nmeros almacenados en una tabla de memoria. El tamao de la tabla debe ser conocido de antemano e indicado en una posicin de memoria. El resultado debe quedar en el acumulador.

Solucin:

En este cdigo se usan las 5 primeras posiciones de memoria para almacenar los datos a sumar y la cantidad de datos en negativo. En este caso son 5 datos a sumar y en la posicin 5 est FFFB, el equivalente en hexadecimal de -5. Se dejan las posiciones 6 y 7 vacas pues se utilizarn a lo largo del programa.La suma de estos 5 datos se consigue mediante un bucle que va comprobando si lo que est almacenado en la posicin 5 es negativo o no. Cada vuelta del bucle comprueba si es negativo o no, si lo es le suma 5 y lo almacena en 6, este resultado es la posicin de memoria del dato que se va a sumar, luego incrementa 1 lo que est almacenado en 5 (ITA) y finalmente realiza la suma sumando lo que hay en la posicin 7 (la suma hasta entonces) y lo que hay almacenado en la direccin de memoria almacenada en 6. Para concluir el bucle hace un salto al principio de programa y para comenzar de nuevo. Cuando pasen 5 vueltas (para este caso), contando la inicial, lo que est almacenado ser un 0 y cuando llegue al SFZ se saltar una instruccin e introducir el resultado final en el acumulador, finalizando el programa.

#Ejercicio 3: suma de los valores de una tabla0 11 32 43 84 55 FFFB@8@CRAADD 5ROL_F_ACCSFZJMP EJMP 1AROR_F_ACCADD 4STA 6CRA ADD 5ITASTA 5CRAADD 7ADDI 6STA 7JMP 8ROR_F_ACCCRAADD 7HALT@