Вы находитесь на странице: 1из 4

Introduccio als Ordinadors

Alumno: Marcut Laurentiu



1

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

Вам также может понравиться