Значит так: есть прога на паскале которая сортирует введенный randomom массив- в с троках элементы по возрастанию, а в столбцах по возрастанию сумм элементов. Проблема с ассемблером- надо сделать маленькую вставку которая будет складывать элементы строк. Сроки поджимают, а как сделать не знаю!!! Вот текст проги:
Код: Uses U20071;
Var
A0, A1 : byte;
Begin
WriteLn;
Randomize;
For A0:= 1 to N do
Begin
For A1:= 1 to N do
Data[ A0, A1 ]:= Random100;
Ind[ A0 ]:= A0
End;
Assign( F, 'f20071-1.txt' );
ReWrite( F );
WriteData;
Close( F );
Sortirowka;
Assign( F, '' );
ReWrite( F );
WriteData;
Close( F );
Assign( F, 'f20071-2.txt' );
ReWrite( F );
WriteData;
Close( F );
WriteLn;
WriteLn;
readln;
End.
это основная прога. а вот модуль:
Код: Unit U20071;
Interface
Const
N=8; { <=10 }
Var
Data : array[ 1..N, 1..N ] of integer;
Sum : array[ 1..N ] of longint;
Ind : array[ 1..N ] of byte;
F : text;
Procedure WriteData;
Procedure Sortirowka;
Implementation
Procedure WriteData;
Var
A0, A1 : byte;
Begin
For A0:= 1 to N do
Begin
For A1:= 1 to N do
Begin
Write( F, Data[ Ind[ A0 ], A1 ] );
If A1<N Then Write( F, #9 )
End;
If A0<N Then WriteLn( F )
End
End;
Procedure Sortirowka;
Var
A0, A1, A2 : byte;
I0 : integer;
Begin
For A0:= 1 to N do
For A1:= 1 to N - 1 do For A2:= 1 to N - 1 do
If Data[ A0, A2 ]>Data[ A0, A2 + 1 ] Then
Begin
I0:= Data[ A0, A2 + 1 ];
Data[ A0, A2 + 1 ]:= Data[ A0, A2 ];
Data[ A0, A2 ]:= I0
End;
{Sum}
For A0:= 1 to N do
Begin
Sum[ A0 ]:= 0;
For A1:= 1 to N do Sum[ A0 ]:= Sum[ A0 ] + Data[ A0, A1 ]
End;
{Sum}
For A0:= 1 to N - 1 do
For A1:= 1 to N - 1 do
If Sum[ Ind[ A1 ] ]>Sum[ Ind[ A1 + 1 ] ] Then
Begin
I0:= Ind[ A1 + 1 ];
Ind[ A1 + 1 ]:= Ind[ A1 ];
Ind[ A1 ]:= I0
End
End;
End.
тот кусок который надо оформить в ассемблере отмечен {Sum} сверху и снизу. Если нельзя прям в тексте то сделайте хоть отдельно складывание элементов. Заранее спасибо))) Человек.
|