ХАНДЫФАР

Функция GetMinimum возвращает наименьшее из двух заданных значений.

Параметры:

  • AX: Первое число.
  • BX: Второе число.

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

  • DX: Наименьшее из двух значений.

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

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

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

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

  1. title Автор: Довгополов Евгений Сергеевич
  2. .model small
  3. .stack 100h
  4. data segment public
  5. ____fmtout db "Минимальное значение между "
  6. ___________db "%d и %d = %d.\0"
  7. data ends
  8. code segment public
  9. ____assume _ds:data, cs:code
  10. ____include Handyfar.inc
  11. ____main proc
  12. ________call____SetDataSegment
  13. ________mov_____bx, 13
  14. ________mov_____ax, 15
  15. ________call____GetMinimum
  16. ________push____dx
  17. ________push____bx
  18. ________push____ax
  19. ________lea_____ax, ds:[fmtout]
  20. ________call____PrintFormatString
  21. ________add_____sp, 6
  22. ________xor_____al, al
  23. ________call____ExitProcess
  24. ____main endp
  25. code ends
  26. end main
Функция GetMinimum возвращает наименьшее из двух заданных значений.

Параметры:

  • AX: Первое число.
  • BX: Второе число.

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

  • DX: Наименьшее из двух значений.

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

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

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

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

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