Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Ассемблер _ Массив.

Автор: Янычар 20.05.2007 15:39

Мне нужно сделать данную задачу как ассемблерную вставку в паскаль.Вот и сама задача: В массиве заменить каждый из элементов суммой соседей, кроме крайних. То есть например если есть такой массив 2,3,5,8,6, то после замены должно получиться: 2,7,11,11,6.Помогите пожалуйста а то ассемблер вобще не знаю совершенно.

Автор: xds 20.05.2007 22:55

program ArrayAsm;

const
n = 10;

var
a: array[1..n] of Integer;
i: Integer;

begin
Randomize;
for i := 1 to n do
begin
a[i] := Random(20);
Write(a[i]:3);
end;
Writeln;

asm
cld
push ds
pop es
lea si,a
lea di,a+2
lodsw
mov dx,ax
mov cx,n-2
@@:
lodsw
xchg dx,ax
add ax,[si]
stosw
loop @@
end;

for i := 1 to n do
Write(a[i]:3);
Writeln;
end.

Автор: Янычар 21.05.2007 0:13

Спасибо огромное!Но пожалуйста если не трудно можно написать что что здесь означает?!А то чего то я ничего не пойму)))