Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm для начинающих > Матрица_Т


Автор: Leshiy1 3.1.2011, 00:56
Здравствуйте всем.

Задача такая: В матрице переставить столбцы по возрастанию сумм столбцов матрицы 

Program Matrix;
 Uses Crt;
 label a1;
 const n=2; m=3;
 var a:array[1..n, 1..m] of byte;
     i,j,s,matr:integer;
 begin randomize; clrscr;
     textcolor(14);
     for i:=1 to n do begin
     writeln;
      for j:=1 to m do
      begin
        a[i,j]:=5+random(5);
        write(a[i,j]:5);
      end; writeln; end;
      writeln; textcolor(9);
      writeln('   Summa stolbcov');
      writeln;

 for i:=0 to m-1 do begin
 asm
 mov di,i {nomer stolbca}
 mov cx,n {kolichestvo strok}
 mov bx,0 {mesto dlya podcheta summu}
 mov ah,0
 a1: mov al,byte[a+di]
     add bx,ax {summa elementov stolbca}
     add di,j
     loop a1
     mov s,bx

 mov cx,m {perestavlennaya matrica}
 cmp di,i
 mov ax,di
 mov matr,ax

 end;
 textcolor(10);
 write(' ',s:4); end;
 writeln; writeln; textcolor(11);  writeln('   Perestanovka');
 writeln; textcolor(12);
 write('   ',matr);
 Readkey;
 End.

Считает только сумму столбцов матрицы. Как переставить столбцы, помогите?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)