Está en la página 1de 3

ARQUITECTURA DE COMPUTADORES

Prctica 1
Ejercicio 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 nmeros
73
82
@
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 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 absolutos


03
1 FFFE
@
5
@
CRA
ADD 0
CSR E
STA 3
CRA
ADD 1
CSR E
ADD 3
STA 4
HALT
ROL_F_ACC
SFZ
JMP 15
ROR_F_ACC
JMP 18
ROR_F_ACC
CTA
ITA
STA 2
JMPI 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 tabla
01
13
24
38
45
5 FFFB
@
8
@
CRA
ADD 5
ROL_F_ACC
SFZ
JMP E
JMP 1A
ROR_F_ACC
ADD 4
STA 6
CRA
ADD 5
ITA
STA 5
CRA
ADD 7
ADDI 6
STA 7
JMP 8
ROR_F_ACC
CRA
ADD 7
HALT
@

También podría gustarte