Está en la página 1de 2

TP-Wombat.

md 11/26/2021

5. Agregar a la arquitectura Wombat 1, el direccionamiento inmediato. Proponer un programa que utilice


dicha instrucción.

Lo primero que hicimos fue agregar la nueva instruccion a la Wombat1, pero utilizando un nuevo
formato creado por nosotros, op inm.

+ OP = 4 bits para la operación a realizar


- INM = 12 bits que vamos a utilizar para recibir el valor que se quiere asignar.
(No usamos addr por que este formato se referia a una dirección de memoria.)

Y en esta instruccion utilizamos una microinstruccion tambien creada por nosotros, que lo que hace es
guardar los 12 bits de operndo del ir en el acc, pero salteando los primeros 4 bits, ya que el acc tiene
16 bits, y solo queremos guardar 12.

ir(4-15)-> acc
End

Entonces, lo que hace esta instrucción es traer el operando del ir (que no es una dirección de
memoria, sino un valor) y guardarlo en el acc.

6. Agregar a Wombat 1, la instrucción loop. Proponer un programa ejemplo que utilice dicha instrucción.

Lo primero que hicimos fue agregar la nueva instruccion a la Wombat1, utilzando como formato op
addr.

+ OP = 4 bits para la operación a realizar


- ADDR = 12 bits con la dirección de memoria del operando.

Decidimos usar el registro acc para saber cuantas veces se va a realizar el loop (simulando el registro
ecx.)

if(acc<=1)skip-3
ir(4-15)->mar
mar->pc
Dec1-acc
End

1/2
TP-Wombat.md 11/26/2021

Creamos dos nuevas microinstrucciones:

if(acc<=1)skip-3 = Lee 16 bits del acc, usando comparasion LE, con el valor 1 y omitiendo 3
microinstrucciones.

Dec1-acc = Decrementa en 1 el acc.

Entonces, lo que hace esta instrucción es, primero chequear que el acc no sea menor o igual a 1
(Debido a que el loop se utiliza al final del ciclo, de esta forma nos aseguramos que realice las
instrucciones hasta acc = 1).

Luego guarda la direccion de memoria del operando en el mar (Es decir, la direccion de la etiqueta), y
la guarda en el program counter, haciendo que la próxima instrucción a ejecutar sea esa etiqueta.

Y por ultimo decrementa en 1 el acc (ya que el loop cicla en base al acc, y de otra forma sería un bucle
infinito).

2/2

También podría gustarte