[push | push #1 | #+1]
[cinvoke | push #L>2 | call #1
#If #N>1
add esp, ((#N - 1) * 4)
#EndIf]
[Prompt: B$"Введите _: ", 0]
[Format: B$"%lf", 0]
[ResultD: B$0A, "D = %g", 0D, 0A, "E = ", 0]
[ResultE: B$"%g%", 0]
[Error: B$"Деление на ноль", 0]
[WaitMsg: B$0D, 0A, 0A, "Для завершения работы нажмите любую клавишу... ", 0]
[A: R$?]
[B: R$?]
[C: R$?]
[D: R$?]
[E: R$?]
Begin:
mov B$Prompt + 8, "A"
cinvoke "msvcrt.printf", Prompt
cinvoke "msvcrt.scanf", Format, A
inc B$Prompt + 8
cinvoke "msvcrt.printf", Prompt
cinvoke "msvcrt.scanf", Format, B
inc B$Prompt + 8
cinvoke "msvcrt.printf", Prompt
cinvoke "msvcrt.scanf", Format, C
finit
fld R$A
fld R$B
fmul st0, st0
fmul
fstp R$D
cinvoke "msvcrt.printf", ResultD, D$D, D$D + 4
fld R$B
fldz
fcomip st0 st1
fstp st0
je ZeroDiv
fld R$A
fsub R$B
fld R$C
fsub R$A
fmul
fdiv R$B
fstp R$E
cinvoke "msvcrt.printf", ResultE, D$E, D$E + 4
jmp Quit
ZeroDiv:
cinvoke "msvcrt.printf", Error
Quit:
cinvoke "msvcrt.printf", WaitMsg
call "msvcrt._getch"
cinvoke "msvcrt._exit", 0
