ХАНДЫФАР

Функция ArrayGetAverage вычисляет среднее значение чисел в заданном массиве.

Параметры:

  • AX: Указатель на массив.
  • BX: Длина массива (количество элементов). Если BX = 0, функция завершает работу.

Возвращаемое значение:

  • AX: Среднее значение чисел в массиве.

Состояние флагов:

  • Функция не изменяет состояние флагов.

Особенности:

  • Функция не изменяет значения регистров, кроме AX.

  1. title Автор: Довгополов Евгений Сергеевич
  2. .model small
  3. .stack 100h
  4. data segment public
  5. ____array__dw__6, 11, 7
  6. ____arrlen equ ($-array) / 2
  7. ____fmtout_db__"Среднее число: %d\0"
  8. data ends
  9. code segment public
  10. ____assume _ds:data, cs:code
  11. ____include Handyfar.inc
  12. ____main proc
  13. ________call____SetDataSegment
  14. ________mov_____bx, arrlen
  15. ________lea_____ax, ds:[array]
  16. ________call____ArrayGetAverage
  17. ________push____ax
  18. ________lea_____ax, ds:[fmtout]
  19. ________call____PrintFormatString
  20. ________add_____sp, 2
  21. ________xor_____al, al
  22. ________call____ExitProcess
  23. ____main endp
  24. code ends
  25. end main
Функция ArrayGetAverage вычисляет среднее значение чисел в заданном массиве.

Параметры:

  • AX: Указатель на массив.
  • BX:_Длина массива (количество элементов). Если BX = 0, функция завершает работу.

Возвращаемое значение:

  • AX: Среднее значение чисел в массиве.

Состояние флагов:

  • Функция не изменяет состояние флагов.

Особенности:

  • Функция не изменяет значения регистров, кроме AX.

  1. title Автор: Довгополов Евгений Сергеевич
  2. .model small
  3. .stack 100h
  4. data segment public
  5. ____array__dw__6, 11, 7
  6. ____arrlen equ ($-array) / 2
  7. ____fmtout_db__"Среднее число: %d\0"
  8. data ends
  9. code segment public _______________; Начало сегмента кода
  10. ____assume _ds:data, cs:code
  11. ____include Handyfar.inc___________; Подключаем файл с функциями
  12. ____main proc _____________________; Начало процедуры main
  13. ________call____SetDataSegment_____; Вызываем процедуру SetDataSegment
  14. ________mov_____bx, arrlen_________; Копируем длину массива в регистр bx
  15. ________lea_____ax, ds:[array]_____; Загружаем адрес переменной array в регистр ds:ax
  16. ________call____ArrayGetAverage____; Вызываем процедуру ArrayGetAverage(ds:ax, bx) := AX
  17. ________push____ax_________________; 2-й: Сохраняем значение регистра ax в стеке
  18. ________lea_____ax, ds:[fmtout]____; 1-й: Загружаем адрес строки формата fmtout в регистр ds:ax
  19. ________call____PrintFormatString__; Вызываем процедуру PrintFormatString(ax:fmtout, ax)
  20. ________add_____sp, 2______________; Выравниваем стек
  21. ________xor_____al, al_____________; Обнуляем регистр al
  22. ________call____ExitProcess________; Вызываем процедуру ExitProcess
  23. ____main endp _____________________; Конец процедуры main
  24. code ends _________________________; Конец сегмента кода
  25. end main __________________________; Конец файла. Точкой входа указывается процедура main
Made on
Tilda