Переписать из массива А в массив В, те элементы массива А, индексы которых совпадают со значениями - Assembler

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

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

Здравствуйте, помогите написать программу на pascale с assembler вставкой. Задание такое: Переписать из массива А в массив В, те элементы массива А, индексы которых совпадают со значениями.

Решение задачи: «Переписать из массива А в массив В, те элементы массива А, индексы которых совпадают со значениями»

textual
Листинг программы
program Pascal;
 
const
  N = 15;
var
  A, B: array [0..N - 1] of byte;
  i: integer;
  LenB: integer;
begin
  randomize;
  Write('i: ');
  for i := 0 to N - 1 do
    Write(i: 3);
  writeln;
  {заполнение массива A случайными числами}
  for i := low(A) to High(A) do
    A[i] := random(High(A) + 1);
  Write('A: ');
  for i := low(A) to High(A) do
    Write(A[i]: 3);
  writeln;
  {количество элементов в массиве B пока равно 0}
  LenB := 0;
  asm
    MOV CX, N
    MOV AL, 0
    LEA SI, A
    LEA DI, B
  @@For:
    CMP AL, [SI]
    JNE @@Next
    MOV [DI], AL
    ADD DI, 1
    INC LenB
  @@Next:
    INC AL
    ADD SI, 1
    LOOP @@For
  end;
  Write('B: ');
  for i := 1 to LenB do
    Write(B[i - 1]: 3);
  writeln;
end.

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

  1. Объявляются константа N и массивы A и B типа byte и переменные i и LenB типа integer.
  2. Генерируется случайное значение для каждого элемента массива A.
  3. Выводятся элементы массива A.
  4. Переменная LenB устанавливается в 0.
  5. В блоке ассемблерного кода происходит копирование элементов из массива A в массив B, при этом увеличивается значение переменной LenB.
  6. Выводятся элементы массива B, содержащие скопированные значения из массива A. Код копирует элементы из массива A в массив B, те элементы, индексы которых совпадают со значениями.

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

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