Вычислите среднее арифметическое ненулевых элементов массива - Assembler

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

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

Задан одномерный массив, состоящий из 10 чисел. Вычислите среднее арифметическое ненулевых элементов массива. (Нулевой элемент не должен суммироваться).

Решение задачи: «Вычислите среднее арифметическое ненулевых элементов массива»

textual
Листинг программы
.model small
 
.data
arr db 0,1,2,3,4,5,6,7,8,9
 
.stack 100h
 
.code
start:
    mov ax,@data
    mov ds,ax
    
    lea si,arr
    mov bx,0
    mov cx,10
    sum:
        lodsb
        
        cmp al,0
        je skip
        
        inc bh
        add bl,al
        
        skip:
    loop sum
    
    cmp bh,0
    je exit
 
    mov al,bl
    cbw
    div bh
    
    mov ah,2
    mov dl,al
    or dl,48
    int 21h
    
    exit:
    mov ah,4Ch
    mov al,00h
    int 21h
end start

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

  1. Установка начального значения регистрам AX и DS — они будут использоваться как индексы для обращения к элементам массива.
  2. Задаётся начальный адрес массива в регистре SI.
  3. В регистре BX устанавливается начальное значение суммы (равное нулю).
  4. В регистре CX задаётся количество элементов массива (в данном случае — 10).
  5. Создаётся цикл, который будет выполнять следующие действия:
    • Загрузка байта из массива в регистр AL.
    • Проверка на равенство этого байта нулю (если это так, то переход к следующей итерации цикла).
    • Увеличение значения регистра BH (для корректного вычисления суммы).
    • Добавление значения регистра AL к значению регистра BL (сумма элементов массива).
  6. После окончания цикла проверяется значение регистра BH (если равно нулю, то цикл выполнен полностью).
  7. Значение регистра AL приводится к типу числа с плавающей точкой и вычисляется среднее арифметическое (переменная DL используется как временная).
  8. Вывод результата на экран.
  9. Завершение работы программы.

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

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