Hola, tenemos la duda de si la solución que hicimos es correcto, ya que es considerablemente diferente a la planteada.
La pongo aca:
proc PesoMatriz
xor CX,CX // Contador de lugares de memoria
mov DX,CANT_MATRICES
shl DX,5 // DX tendra la cantidad de lugares de memoria que habrá que recorrer
xor BX,BX // Recorredor del arreglo con PESO_MEMORIA
xor AX, AX // Registro donde se calculara el peso de la mtriz
FOR: // For que recorre todos los lugares de memoria utilizados por las matrices
cmp DX,CX
jz FIN
cmp CX,0 // Caso de la primera posición de la primer matriz
jz CasoNormal // Caso General
push CX // Se guarda CX para hacerle un modulo 32
and CX, 0x1F // Se le hace el modulo 32
cmp CX,0 // Vemos si es multiplo de 32
pop CX // Recuperamos
jz Casomodulo
jmp CasoNormal
CasoNormal:
ADD AX, ES:[MATRICES + CX] // Le sumamos a AX el valor de la posición actual de la matriz
INC CX // avanzamos de posición
jmp FOR
CasoModulo:
MOV DS:[PESO_MATRICES + BX],AX // Guardamos el peso de la matriz ya calculado en el lugar que corresponda
xor AX,AX // Dejamos AX en 0 para empezar a calcular el peso de la nueva matriz
inc BX // Avanzamos en el contador de peso
jmp CasoNormal
FIN:
ret
Esperamos respuesta,
Saludos!