ХАНДЫФАР

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

Параметры:

  1. Первое число.
  2. Второе число.

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

  • AX: Наибольшее из двух значений.

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

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

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

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

  1. title Автор: Довгополов Евгений Сергеевич
  2. .286C
  3. .model small
  4. .stack 100h
  5. data segment public
  6. ____fmtout db "Максимальное значение "
  7. ___________db "между %d и %d = %d.\0"
  8. data ends
  9. code segment public
  10. ____assume _ds:data, cs:code
  11. ____include Handyfar.inc
  12. ____include Handymac.inc
  13. ____main proc
  14. ________call____SetDataSegment
  15. ________push____13
  16. ________push____15
  17. ________call____GetMaximumEx
  18. ________push____ax
  19. ________push____13
  20. ________push____15
  21. ________leaax___ds:[fmtout]
  22. ________call____PrintFormatString
  23. ________add_____sp, 6
  24. ________push____0
  25. ________call____ExitProcessEx
  26. ____main endp
  27. code ends
  28. end main
Функция GetMaximumEx возвращает наибольшее из двух заданных значений. Функция GetMaximumEx автоматически выравнивает стек на 4 байта.

Параметры:

  1. Первое число.
  2. Второе число.

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

  • AX: Наибольшее из двух значений.

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

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

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

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

  1. title Автор: Довгополов Евгений Сергеевич
  2. .286C
  3. .model small
  4. .stack 100h
  5. data segment public
  6. ____fmtout db "Максимальное значение между %d и %d = %d.\0"
  7. data ends
  8. code segment public
  9. ____assume _ds:data, cs:code
  10. ____include Handyfar.inc___________; Подключаем файл с функциями
  11. ____include Handymac.inc___________; Подключаем файл с макросами
  12. ____main proc
  13. ________call____SetDataSegment_____; Вызываем процедуру SetDataSegment
  14. ________push____13_________________; 2-й: Ложим на вершину стека число 13
  15. ________push____15_________________; 1-й: Ложим на вершину стека число 15
  16. ________call____GetMaximumEx_______; Вызываем процедуру GetMaximumEx(15, 13) := AX
  17. ________push____ax_________________; 4-й: Ложим на вершину стека возвращаемое значение из GetMaximumEx
  18. ________push____13_________________; 3-й: Ложим на вершину стека число 13
  19. ________push____15_________________; 2-й: Ложим на вершину стека число 15
  20. ________leaax___ds:[fmtout]________; 1-й: Загружаем адрес строки формата fmtout в регистр ds:ax
  21. ________call____PrintFormatString__; Вызываем процедуру PrintFormatString(ax:fmtout, 15, 13, ax)
  22. ________add_____sp, 6______________; Выравниваем стек
  23. ________push____0__________________; Ложим на вершину стека байтовое значение кода возврата
  24. ________call____ExitProcessEx______; Вызываем процедуру ExitProcess(0)
  25. ____main endp
  26. code ends
  27. end main
Made on
Tilda