Найти сумму положительных четных элементов массива - Assembler
Формулировка задачи:
Помогите, в универе задали написать программу: Найти сумму положительных четных элементов массива.
Все хорошо, ошибок не выводит, но и правильно не высчитывает.
Тело цикла:
Помогите найти проблему, заранее спасибо!
start: cmp mas[di],0 jle met cbw idiv two cmp ah,0 jne met add al, mas[di] met: inc di loop start mov sum, al
Решение задачи: «Найти сумму положительных четных элементов массива»
textual
Листинг программы
.data .... sum dw 0 .... .code .... mov si,offset mas mov cx,число_элементов массива mov ah,0 @0: lodsb or ax,ax js @1;если значение в AL <0 -- переходим test al,1 jnz @1;если значение в AL нечетное -- переходим add sum,ax @1: loop @0
Объяснение кода листинга программы
- В данных (
.data
) объявлена переменнаяsum
типаdw
(слово, двойное слово), которая инициализирована нулем. - В коде (
.code
) происходит следующее:- Переменная
si
получает смещение массива (предположительно, это смещение первого элемента). - Переменная
cx
получает количество элементов в массиве. - Переменная
ah
инициализируется нулем. - Затем выполняется цикл, который начинается с метки
@0
и продолжается до@1
. - Внутри цикла происходит следующее:
- Переменная
al
загружается байтом из памяти по смещениюmas
(это первый элемент массива). - Затем выполняется операция
or ax,ax
, которая проверяет, является ли значение вal
четным. - Если значение в
al
нечетное, то происходит переход к следующей итерации цикла. - Если значение в
al
четное, то оно добавляется к переменнойsum
.
- Переменная
- После выполнения цикла, переменная
sum
содержит сумму положительных четных элементов массива.
- Переменная
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д