Сборник по задачам и примерам Assembler



Транспонирование прямоугольной матрицы - часть 2


mul si предполагаем, что результат в рамках ах

add ax.di : n*i+j

mov bx.ax

mov al ,mas[bx]

movtemp.al локализуем место-приемник в jnasij по формуле: _masij=masji=m*i+j

mov ax.m

mul di предполагаем, что результат в рамках ах

add ax,si

mov al .temp

mov _mas[bx].al

incdi :j:=j+l

loop rn2

inc si

pop ex восстанавливаем счетчик внешнего цикла

loop ml

Отметим, что для транспонирования прямоугольной матрицы необязательно ее моделировать так, как это сделано в предыдущей программе. Кнут приводит соотношение, которое позволяет транспонировать матрицу в линейном порядке, зная только значения тип. Для этого используется соотношение, при котором значение из ячейки i (для 0<i<N = mn-1) исходной матрицы переводится в ячейку m*x (mod N) транспонированной матрицы.

 




Содержание  Назад  Вперед