Найти сумму всех элементов - Assembler

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

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

Здравствуйте,помогите разобраться, пожалуйста. Дана задача: с помощью ассемблерных вставок найти сумму всех элементов массива, не превышающих заданного числа. Вот код программы:
Данная программа в результате выводит всю сумму элементов, а не сумму меньшую заданному числу. В чем ошибка?

Решение задачи: «Найти сумму всех элементов»

textual
Листинг программы
uses crt;
 var i,n,sum, elem,c:integer;
 var a: array[1..100] of word;

 begin
 write('Vvedite kolichestvo elementov mas.: ');
 readln(n);
 sum:=0;
 i:=1;
 while i <= n do begin
 write('a[',i,'] = ');
 readln(a[i]);
 i:=i+1;
 end;

 write('Vvedite chislo: ');
 readln(c);


 i:=0;
 while i<=n do begin
 i:=i+1;
 elem:=a[i];
 asm
 mov dx,c
 mov ax,elem
 cmp dx,ax
 ja @cont1 ;перейти если с > elem
 add sum,ax ;иначе добавить к сумме
@cont1:
 end;
 end;
 write('Summa = ', sum);
 readln
 end.

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

В этом коде выполняется следующая последовательность действий:

  1. Ввод количества элементов массива.
  2. Инициализация переменной sum равной 0.
  3. Создание цикла, который будет выполняться столько раз, сколько введено элементов массива.
  4. В каждой итерации цикла происходит вывод номера текущего элемента массива и его значения, а затем чтение значения для переменной c.
  5. Если значение c больше текущего элемента массива, то происходит переход к следующей итерации цикла.
  6. В противном случае, значение текущего элемента массива добавляется к переменной sum.
  7. После окончания цикла выводится сообщение с итоговой суммой.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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