; ; Microsoft MASM subroutine for long double square root ; .286 .287 _TEXT SEGMENT BYTE PUBLIC 'CODE' _TEXT ENDS CONST SEGMENT WORD PUBLIC 'CONST' CONST ENDS _BSS SEGMENT WORD PUBLIC 'BSS' _BSS ENDS _DATA SEGMENT WORD PUBLIC 'DATA' _DATA ENDS DGROUP GROUP CONST, _BSS, _DATA ASSUME CS: _TEXT, DS: DGROUP, SS: DGROUP, ES: DGROUP EXTRN __fac:QWORD _BSS SEGMENT EXTRN __fltused:NEAR _BSS ENDS ASSUME CS: _TEXT _TEXT SEGMENT ; single precision square root ; assumes coprocessor precision already set up ; return value in static __fac PUBLIC _sqrtf _sqrtf PROC NEAR push bp mov bp,sp fld DWORD PTR [bp+4] fsqrt fwait fstp DWORD PTR __fac mov ax,OFFSET __fac mov sp,bp pop bp ret _sqrtf ENDP _TEXT ENDS END