Определить количество элементов, больших среднего арифметического - Assembler
Формулировка задачи:
Дан массив размерностью 10 элементов типа dw.
Определить количество элементов, больших среднего арифметического.
Решение задачи: «Определить количество элементов, больших среднего арифметического»
textual
Листинг программы
LOCALS .model small .stack 100h .data A dw 100, 123, 234, 456, 567, 678, 789, 890, 901, 999 N dw 10 Count dw 0 CrLf db 0Dh, 0Ah, '$' .code main proc mov ax, @data mov ds, ax ;вычисление среднего арифметического lea si, [A] mov cx, N mov ax, 0 ;(dx:ax) - сумма элементов массива mov dx, 0 @@Average: add ax, [si] adc dx, 0 add si, 2 loop @@Average idiv N ;т.к. нужно искать больше среднего, то ;придётся учесть случай наличия отстатка ;если остатка нет, то нужно искать числа на 1 больше частного, ;а если остаток есть - то достаточно искать больше частного cmp dx, 0 jnz @@PresentRemainder inc ax @@PresentRemainder: ;подсчёт количества элементов массива, больших среднего арифметического lea si, [A] mov cx, N mov bx, 0 ;количество элементов массива, больших среднего @@Count: cmp ax, [si] adc bx, 0 add si, 2 loop @@Count mov Count, bx mov ax, 4C00h int 21h main endp end main
Объяснение кода листинга программы
- Объявление и инициализация переменных:
A
- массив слов (2-байтовые целые числа) со значениями 100, 123, 234, 456, 567, 678, 789, 890, 901, 999N
- количество элементов массива (значение 10)Count
- количество элементов массива, больших среднего арифметического (значение в начале равно 0)CrLf
- массив байтов для новой строки (символ перевода строки)
- Вычисление среднего арифметического:
- Используется цикл, в котором вычисляется сумма элементов массива
A
- Сумма сохраняется в регистрах
ax
иdx
- Среднее арифметическое вычисляется с помощью операции деления
idiv
на значениеN
- Особенностью является учет возможного остатка от деления, который влияет на условие поиска строкой
cmp dx, 0
и последующие инструкции
- Используется цикл, в котором вычисляется сумма элементов массива
- Подсчет количества элементов массива, больших среднего арифметического:
- Используется цикл сравнения каждого элемента массива
A
со средним арифметическим - При нахождении элемента большего, чем среднее арифметическое, увеличивается значение
Count
на 1 - Результат сохраняется в переменной
Count
- Используется цикл сравнения каждого элемента массива
- Завершение программы:
- Устанавливается код завершения (4C00h)
- Вызывается прерывание 21h для завершения программы
Общий результат - программа вычисляет среднее арифметическое элементов массива
A
и определяет количество элементов массива, которые превышают это значение, сохраняя результат в переменнойCount
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д