ХАНДЫФАР

Функция ArrayGetMinimum находит минимальное значение в заданном массиве чисел.

Параметры:

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

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

  • AX: Минимальное значение в массиве.

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

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

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

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

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

Параметры:

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

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

  • AX: Минимальное значение в массиве.

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

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

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

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

  1. title Автор: Довгополов Евгений Сергеевич
  2. .model small
  3. .stack 100h
  4. data segment public
  5. ____array__dw__4, 7, 3, 67, 5, 22, 5, 66, 8, 5
  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____ArrayGetMinimum____; Вызываем процедуру ArrayGetMinimum(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