Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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 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