Помощь - Поиск - Пользователи - Календарь
Полная версия: Массив.
Форум «Всё о Паскале» > Delphi, Assembler и другие языки. > Assembler
Янычар
Мне нужно сделать данную задачу как ассемблерную вставку в паскаль.Вот и сама задача: В массиве заменить каждый из элементов суммой соседей, кроме крайних. То есть например если есть такой массив 2,3,5,8,6, то после замены должно получиться: 2,7,11,11,6.Помогите пожалуйста а то ассемблер вобще не знаю совершенно.
xds
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.
Янычар
Спасибо огромное!Но пожалуйста если не трудно можно написать что что здесь означает?!А то чего то я ничего не пойму)))
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.