Эти функции выполняют округление вещественного числа, находящегося на вершине стека математического сопроцессора (ST(0)), в соответствии с указанным режимом округления:
RoundFloor: Округление вниз (к меньшему целому).
RoundCeil: Округление вверх (к большему целому).
RoundNearest: Округление к ближайшему целому.
Параметры:- ST(0): Вещественное число на вершине стека математического сопроцессора.
Возвращаемое значение:- Результат округления сохраняется в ST(0).
Состояние флагов:- Функция не изменяет состояние флагов.
Особенности:- Функции используют команды математического сопроцессора для выполнения округления.
- RoundFloor использует команду FRNDINT с режимом округления вниз (устанавливается через FSTCW и FLDCW).
- RoundCeil использует команду FRNDINT с режимом округления вверх (устанавливается через FSTCW и FLDCW).
- RoundNearest использует команду FRNDINT с режимом округления к ближайшему целому (режим по умолчанию).
- Функции не изменяют значения регистров, кроме ST(0).
- title Автор: Довгополов Евгений Сергеевич
- .model small
- .stack 100h
- data segment public
- ____fmtstr _db "Результат: %d\0"
- ____number1 dq 45.3
- ____number2 dq 213.3
- ____result _dw ?
- data ends
- code segment public
- ____assume _ds:data, cs:code
- ____include Handyfar.inc
- ____main proc
- ________call____SetDataSegment
- ________fld_____qword ptr[number1]
- ________fadd____qword ptr[number2]
- ________call____RoundFloor
- ________fistp___word ptr[result]
- ________push____result
- ________lea_____ax, ds:[fmtstr]
- ________call____PrintFormatString
- ________add_____sp, 2
- ________xor_____al, al
- ________call____ExitProcess
- ____main endp
- code ends
- end main