PRACTICA 2: Ejercicios con la Maquina SIMR -informe-
Introduccin: El objetivo de esta prctica es el aprendizaje de las instrucciones de la Maquina SIMR, el funcionamiento del simulador y el direccionamiento de la memoria.
Expliqueu-ne la feina realitzada en aquesta prctica:
A l'exercici 1: Carrega el segent programa en el simulador SIMR.
Al ejercicio 1 hemos cambiado la etiqueta inci en inici para poder compilar el programa. Luego hemos cargado el programa en la Maquina SIMR y hemos comprobado su funcionamiento. El programa se encuentra en el ANEXO 1.
i) Un cop acabat el programa quant val el contingut de R5? El registro R5 va a contener el valor 0009h.
ii) Un cop acabat el programa quant val el contingut de R6? El registro R6 va a contener el valor 0008h.
iii) Un cop acabat el programa quant val el contingut de R3? El registro R3 va a contener el valor 0000h porque el salto se ejecuta mientras R3 es positivo. Por tanto, cuando llegara al 0, el programa acaba.
A l'exercici 2: Feu un programa similar al de lexercici 1. Carregueu al registre 1 el valor 0000110000001011b. Carregueu al registre 2 el valor 0000000000010001b. Feu loperaci R7<= R7+R1 y decrementeu el valor de R2. Feu aix en un bucle fins que el valor contingut en R2 sigui 0.
El programa se encuentra explicado en el ANEXO 2.
i) Quant val el contingut de R7 quan acaba el programa? El registro R7 va a contener el valor CCBBh.
ii) Quantes vegades sexecuta el codi? El bucle se ejecuta 17 veces porque el valor del registro R2 es 17 y en cada ejecucin se decremento con 1. Cuando llega a 0 el programa acaba.
Introduccio als Ordinadors Alumno: Marcut Laurentiu
2
iii) Al final del programa, just abans del .end, poseu la instrcci STORE R7, 0(R2). En quina posicin de memria es guarda el resultat? El resultado del registro R7 se guarda en la posicin 0 de memoria porque 0 + R2 = 0.
A l'exercici 3: Ens demanen calcular un algoritme que ens faci el segent: Donades dues entrades enmagatzemades en les posicions de memoria A i B, fer la comparaci. Si A>B calculem la suma. Si B>A fem la diferncia (B-A) i si sn iguals que finalitzi lalgoritme.
El programa esta explicado en el ANEXO 3.
i) Expliqueu el funcionament del programa Primero de todo asignamos 2 valores a las primeras posiciones de memoria. Inicializamos los registros que los vamos a utilizar. Guardamos en los primeros 2 registros los valores de la memoria. Hacemos una diferencia entre estos dos valores y guardamos el resultado en R3. Si es positivo saltamos a la etiqueta suma y si es negativo saltamos a la etiqueta diferencia. Despus de hacer la suma es importante hacer otro salto al final del programa para no hacer y la diferencia.
ii) Feu que el resultat es guardi a la posici de memria 22h Utilizamos la funcin STORE R4,34(R0), que guarda el resultado del registro R4 en la posicin de memoria 22h que es 34 en decimal.
Introduccio als Ordinadors Alumno: Marcut Laurentiu
3
ANEXO 1
Dades: .dw 4,5,6,7 ; Guardamos los datos en las primeras 4 posiciones de memoria
.begin inici inici: ; El error era de cambiar el inci en inici SUB R7,R7,R7 ; Inicializamos el R7 LOAD Dades(R0),R1 ; Cargamos en R1 los datos de la posicion 0 de memoria ADDI R7,#1,R7 ; Sumamos 1 al R7 y asi hasta cuando cargamos todos los datos de memoria LOAD 0(R7),R2 ADDI R7,#1,R7 LOAD 0(R7),R3 ADDI R7,#1,R7 LOAD 0(R7),R4 loop: ADD R1,R2,R5 ; Sumamos R1 con R2 y guardamos en R5 ADD R3,R4,R6 ; Sumamos R3 y R4 y guardamos en R6 SUBI R3,#1,R3 ; Restamos 1 al registro R3 BG loop ; Repetimos este bucle hasta que el R3 llega a 0 .end
ANEXO 2
; Assignamos valores a las dos primeras posiciones de memoria valor_registros: .dw 3083,17
.begin inici inici: ; Inicializamos los 3 registros que los vamos a usar ADD R0,R0,R1 ADD R0,R0,R2 ADD R0,R0,R7 ; Cargamos los dos valores de la memoria en los registros R1 y R2 LOAD 0(R0),R1 LOAD 1(R0),R2 loop: ; Sumamos R7 y R1 y lo guardamos en R7 Introduccio als Ordinadors Alumno: Marcut Laurentiu
4
ADD R7,R1,R7 ; Decrementamos el R2 con 1 SUBI R2,#1,R2 ; Repetimos las ultimas dos operaciones hasta que R2 llega a 0 BG loop ; Guardamos el contenido del R7 a la posicion 0 de memoria STORE R7, 0(R2) .end
ANEXO 3
; Assignamos valores a las dos primeras posiciones de memoria valor: .dw 19,17
.begin inici inici: ; Inicializamos los 4 registros que los vamos a usar ADD R0,R0,R1 ADD R0,R0,R2 ADD R0,R0,R3 ADD R0,R0,R4 ; Guardamos los dos valores de la memoria a los registros R1, R2 LOAD 0(R0),R1 LOAD 1(R0),R2 ; Verificamos cuales de los valores de R1 y R2 es mayor haciendo una diferencia SUB R1,R2,R3 ; Si el resultado es positivo, R1 > R2 BG suma ; Si el resultado es negativo, R2 > R1 BL resta suma: ADD R1,R2,R4 ; Saltamos al final del programa BR guarda resta: SUB R2,R1,R4 guarda: ; Guardamos el resultado del R4 en la posicion 22h de memoria STORE R4,34(R0) .end