Переписать из массива А в массив В, те элементы массива А, индексы которых совпадают со значениями - 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.
Объяснение кода листинга программы
- Объявляются константа
N
и массивыA
иB
типаbyte
и переменныеi
иLenB
типаinteger
. - Генерируется случайное значение для каждого элемента массива
A
. - Выводятся элементы массива
A
. - Переменная
LenB
устанавливается в 0. - В блоке ассемблерного кода происходит копирование элементов из массива
A
в массивB
, при этом увеличивается значение переменнойLenB
. - Выводятся элементы массива
B
, содержащие скопированные значения из массиваA
. Код копирует элементы из массиваA
в массивB
, те элементы, индексы которых совпадают со значениями.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д