Ассемблерная вставка в Паскале

Модераторы: Duncon, Naeel Maqsudov, Хыиуду, Игорь Акопян

Ответить
Raze
Сообщения: 10
Зарегистрирован: 14 фев 2007, 15:05

04 апр 2007, 18:35

Кто знает как реализовать подсчёт суммы элементов двумерного массива 3х3 как ассемблерную вставку в Паскале? Если в массиве попадается отрицательный элемент он должен быть преобразован в положительный. Заполнение массива и подсчёт суммы его элементов должны быть реализованы как ассемблерная вставка.
Аватара пользователя
somewhere
Сообщения: 1837
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

05 апр 2007, 08:55

Допустим, я знаю, как реализовать.
&quot писал(а):Заполнение массива
Заполнять-то как? ручками, из файла, произволом?
&quot писал(а):элементов двумерного массива
Массива из чего? каков тип элемента?
&quot писал(а):преобразован в положительный
преобразован по какому правилу? по модулю, четная степень или как?
It's a long way to the top if you wanna rock'n'roll
Raze
Сообщения: 10
Зарегистрирован: 14 фев 2007, 15:05

05 апр 2007, 16:07

Массив заполняется произвольно, массив целых чисел, по модулю.
Аватара пользователя
somewhere
Сообщения: 1837
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

06 апр 2007, 08:39

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

Uses crt;

var mtx : Array[1..3, 1..3] of Integer;
    summ: Integer;
    x,y : Integer;

Function GetRandom(i:Integer):Integer;
begin
GetRandom := Random(i);
end;

begin
ClrScr;
Randomize;
asm
mov di, offset mtx
mov cx, 9
  @Generate:
push cx
push 200
call GetRandom
sub ax, 100
mov [di], ax
add di, 2
pop cx
loop @Generate
end;
Writeln('Original matrix:');
For X:=1 to 3 do
  begin
  For Y:=1 to 3 do Write(mtx[x,y]:5);
  Writeln;
  end;
asm
mov summ, 0
mov si, offset mtx
mov cx, 9
  @Absolute:
mov ax, [si]
test ax, ax
jns @Positive
not ax
inc ax
mov [si], ax
    @Positive:
add summ, ax
add si, 2
loop @Absolute
end;
Writeln('Processed matrix:');
For X:=1 to 3 do
  begin
  For Y:=1 to 3 do Write(mtx[x,y]:5);
  Writeln;
  end;
Writeln('Summ = ', summ:6);
end.
It's a long way to the top if you wanna rock'n'roll
Raze
Сообщения: 10
Зарегистрирован: 14 фев 2007, 15:05

06 апр 2007, 13:20

Спасибо, что помог.
Ответить