Суммирование положительных членов массива - Assembler
Формулировка задачи:
Нужно просуммировать все положительные элементы массива длиной N
Решение задачи: «Суммирование положительных членов массива»
textual
Листинг программы
lea si,arr xor bx,bx mov cx,n sum: lodsb test al,80h jnz skip add bl,al skip: loop sum
Объяснение кода листинга программы
si- переменная, содержащая адрес начала массиваarrbx- переменная, инициализированная нулём, для хранения суммы положительных элементов массиваcx- переменная, содержащая количество элементов в массивеarr- Цикл
sum, который будет выполнять следующие действия для каждого элемента массива до тех пор, покаcxне станет равным нулю:- Используется команда
lodsbдля загрузки байта данных, на который указываетsi, в регистрal - Проверка, является ли значение в регистре
alположительным:- Если да, то переход к метке
skip, иначе выполнение следующего шага
- Если да, то переход к метке
- Прибавление значения
alк региструbl(переменная для хранения суммы положительных элементов) - Метка
skipдля пропуска выполнения следующего шага в случае отрицательного элемента - Уменьшение
cxна единицу для перехода к следующему элементу массива.
- Используется команда