Среднее арифметическое значение элементов массива - Assembler

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

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

В заданном массиве A(N) необходимо вычислить среднее арифметическое значение элемента массива.

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

textual
Листинг программы
  1. LOCALS
  2.  
  3. .model small
  4.  
  5. .stack 100h
  6.  
  7. .data
  8.         N       equ     15
  9.         A       dw      12, 150, 456, 4545, 121, 789, 687, 44, 89, 457, 987, 454, 1212, 654, 789
  10. .code
  11.  
  12. main    proc
  13.         mov     ax,     @data
  14.         mov     ds,     ax
  15.  
  16.         lea     si,     [A]
  17.         mov     cx,     N
  18.         mov     ax,     0       ;(dx:ax) - сумма
  19.         mov     dx,     0
  20. @@For:
  21.         add     ax,     [si]
  22.         adc     dx,     0
  23.         add     si,     2
  24.         loop    @@For
  25.  
  26.         mov     bx,     N
  27.         div     bx
  28.  
  29.         mov     ax,     4C00h
  30.         int     21h
  31. main    endp
  32.  
  33. end     main

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

  1. Объявляем имя переменной N с помощью директивы equ и присваиваем ей значение 15.
  2. Объявляем массив A с помощью директивы dw и инициализируем его следующими значениями: 12, 150, 456, 4545, 121, 789, 687, 44, 89, 457, 987, 454, 1212, 654, 789.
  3. Объявляем начало процедуры main.
  4. Загружаем значение сегмента данных (отмеченного меткой @data) в регистр ax с помощью команды mov.
  5. Загружаем регистр данных (отмеченного меткой @data) в регистр ds с помощью команды mov.
  6. Загружаем адрес начала массива A в регистр si с помощью команды lea.
  7. Загружаем значение переменной N в регистр cx с помощью команды mov.
  8. Инициализируем регистры ax и dx нулевыми значениями: mov ax, 0 и mov dx, 0. Эти регистры будут использоваться для хранения суммы элементов массива.
  9. Переходим к метке @@For, которая будет использоваться в цикле.
  10. Добавляем значение, хранящееся по адресу, на который указывает регистр si, в регистр ax с помощью команды add.
  11. Добавляем нулевое значение в регистр dx с помощью команды adc.
  12. Увеличиваем регистр si на размер элемента массива (2 байта) с помощью команды add.
  13. Уменьшаем значение в регистре cx на 1 с помощью команды loop, чтобы продолжить цикл до тех пор, пока не достигнуто значение 0.
  14. Делим сумму элементов массива, хранящуюся в регистрах dx:ax, на значение переменной N с помощью команды div bx. Результат будет храниться в регистре ax.
  15. Устанавливаем значение 4C00h (код завершения программы) в регистр ax с помощью команды mov.
  16. Вызываем прерывание 21h для завершения программы.

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


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

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

9   голосов , оценка 4.444 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы