Найти сумму всех элементов - 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.
Объяснение кода листинга программы
В этом коде выполняется следующая последовательность действий:
- Ввод количества элементов массива.
- Инициализация переменной
sum
равной 0. - Создание цикла, который будет выполняться столько раз, сколько введено элементов массива.
- В каждой итерации цикла происходит вывод номера текущего элемента массива и его значения, а затем чтение значения для переменной
c
. - Если значение
c
больше текущего элемента массива, то происходит переход к следующей итерации цикла. - В противном случае, значение текущего элемента массива добавляется к переменной
sum
. - После окончания цикла выводится сообщение с итоговой суммой.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д