Hola tengo una duda acerca del problema 1. La propueta pide impllementar en assembler el sig programa:
int pesosMatrices[CANT_MATRICES];
Matriz matrices [CANT_MATRICES ];
void sumaMatrices(){
for(int* i = 0; i < CANT_MATRICES; i++){
pesosMatrices[i] = calcularPesoMatriz(matrices[i]);
}
}
La solución propone:
1- proc sumaMatrices
2- xor DX, DX // DX = 0
3- inicioForArreglo:
4- cmp DX, CANT_MATRICES
5- je fin
6- xor AX, AX // AX = 0, AX acumulador
7- xor CX, CX // CX = 0, CX contador
8- mov BX, DX
9- shl BX, 5
10- add BX, MATRICES
11- inicioForMatriz:
12- cmp CX, 16
13- je finForMatriz
14- mov SI, CX
15- shl SI, 1
16- add AX, ES:[BX+SI]
17- inc CX
18- jmp inicioForMatriz
19- finForMatriz:
20- mov BX, PESOS_MATRICES
21- mov SI, DX
22- shl SI, 1
23- mov [BX+SI], AX
24- inc DX
25- jmp inicioForArreglo
26- fin:
27- ret
Mis dudas son:
*En ves de hacer lo que hace en las lineas 8, 9 y 10 no seria mejor poner MOV BX, MATRICES? o directamente trabajar con MATRICES?
*Porque en la linea 15 se hace un shl SI, 1 y no un INC SI?