Среднее арифметическое значение элементов массива - Assembler
Формулировка задачи:
В заданном массиве A(N) необходимо вычислить среднее арифметическое значение элемента массива.
Решение задачи: «Среднее арифметическое значение элементов массива»
textual
Листинг программы
LOCALS .model small .stack 100h .data N equ 15 A dw 12, 150, 456, 4545, 121, 789, 687, 44, 89, 457, 987, 454, 1212, 654, 789 .code main proc mov ax, @data mov ds, ax lea si, [A] mov cx, N mov ax, 0 ;(dx:ax) - сумма mov dx, 0 @@For: add ax, [si] adc dx, 0 add si, 2 loop @@For mov bx, N div bx mov ax, 4C00h int 21h main endp end main
Объяснение кода листинга программы
- Объявляем имя переменной
N
с помощью директивыequ
и присваиваем ей значение 15. - Объявляем массив
A
с помощью директивыdw
и инициализируем его следующими значениями: 12, 150, 456, 4545, 121, 789, 687, 44, 89, 457, 987, 454, 1212, 654, 789. - Объявляем начало процедуры
main
. - Загружаем значение сегмента данных (отмеченного меткой
@data
) в регистрax
с помощью командыmov
. - Загружаем регистр данных (отмеченного меткой
@data
) в регистрds
с помощью командыmov
. - Загружаем адрес начала массива
A
в регистрsi
с помощью командыlea
. - Загружаем значение переменной
N
в регистрcx
с помощью командыmov
. - Инициализируем регистры
ax
иdx
нулевыми значениями:mov ax, 0
иmov dx, 0
. Эти регистры будут использоваться для хранения суммы элементов массива. - Переходим к метке
@@For
, которая будет использоваться в цикле. - Добавляем значение, хранящееся по адресу, на который указывает регистр
si
, в регистрax
с помощью командыadd
. - Добавляем нулевое значение в регистр
dx
с помощью командыadc
. - Увеличиваем регистр
si
на размер элемента массива (2 байта) с помощью командыadd
. - Уменьшаем значение в регистре
cx
на 1 с помощью командыloop
, чтобы продолжить цикл до тех пор, пока не достигнуто значение 0. - Делим сумму элементов массива, хранящуюся в регистрах
dx:ax
, на значение переменнойN
с помощью командыdiv bx
. Результат будет храниться в регистреax
. - Устанавливаем значение 4C00h (код завершения программы) в регистр
ax
с помощью командыmov
. - Вызываем прерывание 21h для завершения программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д