Найти сумму положительных четных элементов массива - 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

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

  1. В данных (.data) объявлена переменная sum типа dw (слово, двойное слово), которая инициализирована нулем.
  2. В коде (.code) происходит следующее:
    • Переменная si получает смещение массива (предположительно, это смещение первого элемента).
    • Переменная cx получает количество элементов в массиве.
    • Переменная ah инициализируется нулем.
    • Затем выполняется цикл, который начинается с метки @0 и продолжается до @1.
    • Внутри цикла происходит следующее:
      • Переменная al загружается байтом из памяти по смещению mas (это первый элемент массива).
      • Затем выполняется операция or ax,ax, которая проверяет, является ли значение в al четным.
      • Если значение в al нечетное, то происходит переход к следующей итерации цикла.
      • Если значение в al четное, то оно добавляется к переменной sum.
    • После выполнения цикла, переменная sum содержит сумму положительных четных элементов массива.

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


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

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

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