Произвести попарные перестановки элементов одномерного массива (вставки в Pascal) - Assembler

Узнай цену своей работы

Формулировка задачи:

Произвести попарные перестановки элементов одномерного массива: первый элемент поменять местами с последним, второй элемент – с предпоследним и т.д.

Решение задачи: «Произвести попарные перестановки элементов одномерного массива (вставки в Pascal)»

textual
Листинг программы
const
  n=7;
type
  ta=array[0..n]of integer;
var
  a:ta;
  i:integer;
procedure Sort(var z:ta);
  begin
    asm
      lds  si,z
      mov  di,si
      add  di,2*(n+1)
@@01: mov  ax,[si]
      xchg ax,[di]
      mov  [si],ax
      add  si,2
      sub  di,2
      cmp  di,si
      jg   @@01
    end;
  end;
begin
  writeln;
  for i:=1 to n do
    begin
      a[i]:=random(100);
      write(a[i]:4);
    end;
  writeln;
  Sort(a);
  for i:=1 to n do
    write(a[i]:4);
end.

Объяснение кода листинга программы

  1. Объявляется константа n и тип ta - одномерный массив размерности n.
  2. Объявляются переменные: a - одномерный массив типа ta, i - целое число.
  3. Создается процедура Sort, которая принимает на вход массив z и сортирует его элементы попарными перестановками с использованием inline-ассемблерного кода.
  4. В основной программе инициализируется массив a случайными числами и выводится на экран.
  5. Вызывается процедура Sort, которая сортирует массив a попарными перестановками.
  6. Отсортированный массив a выводится на экран.

Оцени полезность:

6   голосов , оценка 3.5 из 5
Похожие ответы