Среднее арифметическое значение элементов массива - 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 для завершения программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д