Использование 2-х мерного массива при немонотонном изменении индекса
Пусть задана разреженная матрица, содержащая очень много нулей.
Для упрощения задания определяются только ненулевые элементы матрицы в виде:
x, y, value,
где x, y - координаты ненулевого значения. Составить программу для заполнения матрицы заданными значениями.
Для решения этой задачи потребуется задать адрес элемента массива matr[x][y], который вычисляется по формуле:
& matr[x][y] = & matr[0][0] + x * Hx + y * Hy
; Задание матриц
PackMatr dd 1, 3, 10
dd 2, 7, 20
dd 4, 4, 30
count dd 3
UnpackMatr dd 5 dup (5 dup 0)
hi dd 5*4
; Заполнение матрицы UnpackMatr:
mov ecx, [count]
mov ebx, offset PackMatr
for1:
mov eax, [ebx] ;x
mul [hi] ; x * hi
mov edx, [ebx+4] ;y
mov esi, [ebx+8] ;value
mov [UnpackMatr+eax+edx*4], esi
add ebx, 12
loop for1