Alguien sabria explicarme este ejercicio? Gracias de anteabraso!
En el código de alto nivel M es una variable de tipo vector de dos dimensiones (matriz) de 10 por 10 elementos. Cada elemento de la matriz es un entero de 32 bits. En el programa ensamblador la matriz se encuentra almacenada a partir de la dirección simbólica M, por filas y en posiciones consecutivas (M [0] [0], en la dirección simbólica M, el siguiente, M [0] [1] , en la dirección M + 4, ..., M [1] [0] en la dirección M + 40, M [1] [1] en la dirección M + 44, etc.).
El programa en cada fila, actualiza los valores de manera que cada posición de columna J contendrá la suma de los elementos J + 1 a N-1 (N en este caso sería 10).
En el programa ensamblador, R1 se utiliza para hacer referencia al índice I, y R2 para hacer referencia al índice J, y R4 para dirigir la varaible AUX.
I:= 0;
J:= 0;
WHILE I<10 {
J:= 8;
WHILE J>=0 {
AUX:= M[I][J+1];
M[I][J]:= M[I][J]+AUX;
J:= J-1;
}
I:= I+1;
}
Rellenar espacios:
MOV R1, 0
MOV R2, 0
WI: CMP R1, 400
JGE ENDWI
MOV R2, ___
WJ: CMP ___, 0
___ ENDWJ
MOV R3, R1
___ R3, R2
ADD R3, ___
MOV R4, ___
___ R3, 4
ADD [M+R3], ___
SUB R2, 4
___ WJ
ENDWJ: ADD R1, 40
JMP WI
ENDWI: