Assembler_dvumer_massive

Низкоуровневое программирование портов, микроконтроллеров и т.д.

Модератор: Andy

Ответить
skorpi
Сообщения: 7
Зарегистрирован: 31 окт 2009, 17:39

Каким образом произвести перестановку столбцов в двумерном массиве (после их предварительной обработки, в частности - после нахождения сумм этих столбцов).

Суммы двух столбцов я нашел, отдельные их элементы переставить смогу, а как полностью переставить столбцы, сам
принцип?

program sort;
uses crt;
const n=4;
var
A:array [1..n,1..n]of integer;
p,k,i,j:integer;
begin
clrscr; randomize;
for i:=1 to n do begin
for j:=1 to n do
begin a[i,j]:=random(10); write(a[i,j]:3); end;
writeln;
end;
asm
lea bx,a
mov cx,n
mov si,2*n
mov p,0
@1: mov ax,[bx]
add p,ax
add bx,si
loop @1

lea bx,a
mov cx,n
mov si,2*n
mov k,0
@2: mov ax,[bx+2]
add k,ax
add bx,si
loop @2
mov dx,k
...............
airyashov
Сообщения: 441
Зарегистрирован: 02 ноя 2007, 10:31

как-то так

Код: Выделить всё

asm
lea bx,a
mov cx,n
mov p,0
mov k,0
@1:

mov ax,[bx]
add p,ax {сумма 1}

mov ax,[bx+2]
add k,ax {сумма 2}

xchg ax,[bx] {обмен}
mov [bx+2],ax

add bx,2*n
loop @1
mov dx,k
icq:3(один)7748666
mail:airyashov( а)inbox.ru
skorpi
Сообщения: 7
Зарегистрирован: 31 окт 2009, 17:39

Спасибо, принцип понял!
Ответить