Произведение положительных элементов в одномерном массиве - Assembler
Формулировка задачи:
Help me!
Нужно написать программу расчета произведения положительных
элементов в одномерном массиве.(ассемблер)
Решение задачи: «Произведение положительных элементов в одномерном массиве»
textual
Листинг программы
- var
- t, n: integer;
- a: array[1..100] of integer;
- i: integer;
- begin
- Write('enter n: ');
- readln(n);
- for i := 1 to n do
- begin
- Write('a[', i, ']=');
- readln(a[i]);
- end;
- asm
- lea si, a
- mov cx, n
- mov t, 1
- @@For:
- lodsw
- or ax, ax
- js @@Skip
- mul t
- mov t, ax
- @@Skip:
- loop @@For
- end;
- writeln(t);
- end.
Объяснение кода листинга программы
- Объявление переменных:
t
- целое число (integer), для сохранения результата произведения положительных элементов;n
- целое число (integer), для хранения размера массива;a
- одномерный массив целых чисел (array) с размером до 100 элементов;i
- целое число (integer), для итерации по массиву.
- Ввод значения переменной
n
:- Пользователю выводится запрос на ввод значения переменной
n
; - Введенное значение сохраняется в переменной
n
.
- Пользователю выводится запрос на ввод значения переменной
- Заполнение массива
a
:- Цикл
for
выполняется от 1 доn
; - В каждой итерации запрашивается ввод значения элемента массива
a
и сохраняется в соответствующей ячейке.
- Цикл
- Вычисление произведения положительных элементов в массиве с использованием ассемблерной вставки:
- Ассемблерная вставка начинается с ключевого слова
asm
; - Адрес начала массива
a
загружается в регистрsi
с помощью командыlea si, a
; - Размер массива сохраняется в регистр
cx
с помощью командыmov cx, n
; - Переменная
t
инициализируется значением 1 с помощью командыmov t, 1
; - Цикл
@@For
выполняетсяn
раз:- Команда
lodsw
загружает слово (16 бит) из памяти по адресу, на который указывает регистрsi
, в регистрax
; - Проверяется знак числа (положительное или отрицательное) командой
or ax, ax
; - В случае положительного числа происходит умножение содержимого регистра
ax
на переменнуюt
командойmul t
, результат сохраняется вax
, затем значениеt
обновляется значением переменнойax
с помощью командыmov t, ax
; - Происходит итерация цикла с использованием команды
loop @@For
.
- Команда
- Ассемблерная вставка завершается командой
end;
.
- Ассемблерная вставка начинается с ключевого слова
- Вывод результата:
- Выводится значение переменной
t
(результата произведения положительных элементов массива).
- Выводится значение переменной
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д