[2012][Febrero][Problema 1]

[2012][Febrero][Problema 1]

de Andres Bello Ureta -
Número de respuestas: 0

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?