⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 setprbor.asm

📁 数学运算库源码
💻 ASM
字号:
;; Borland assembler header;; Microsoft MASM subroutines for setting coprocessor precision;.286.287PREC_TEXT	SEGMENT  BYTE PUBLIC 'CODE'PREC_TEXT	ENDSDGROUP	group	_DATA,_BSS	assume	cs:PREC_TEXT,ds:DGROUP_DATA	segment word public 'DATA'd@	label	byted@w	label	word_DATA	ends_BSS	segment word public 'BSS'b@	label	byteb@w	label	word_BSS	ends; exception masks (1 = masked);   1  invalid operation;   2  denormalized operand;   4  zero divide;   8  overflow;  10  underflow;  20  precision_DATA SEGMENT; double precision setting;;ctlwrd dw 01230h ; note this traps on denormal operands!;;ctld dw 0133fh   ; this doesn't trapctld dw 01230h; single precisionctls dw 01030h; long double precisionctlld dw 01320h_DATA ENDSPREC_TEXT	segment byte public 'CODE'	assume	cs:PREC_TEXT,ds:DGROUP; Set coprocessor to single precision float	PUBLIC	_sprec_sprec	PROC FAR	fclex	fwait	finit	fwait	fldcw word ptr ctls	fwait	ret_sprec ENDP; set coprocessor to long double precision	PUBLIC	_ldprec_ldprec PROC far	fclex	fwait	finit	fwait	fldcw word ptr ctlld	fwait	ret_ldprec ENDP; set coprocessor to double precision	PUBLIC	_dprec_dprec PROC far	fclex	fwait	finit	fwait	fldcw word ptr ctld	fwait	ret_dprec ENDP; get a double promoted to long double size; getld( &doub, &ldoub );	PUBLIC	_getld_getld	PROC far	push bp	mov bp,sp	push bx	mov bx, word ptr [bp+4];	fld st(0)	fld qword ptr [bx]	mov bx, word ptr [bp+6]	fstp tbyte ptr [bx]	mov bx, word ptr [bp+4]	fld qword ptr [bx]	mov bx, word ptr [bp+8]	fstp qword ptr [bx]	pop bx	pop bp	ret_getld	ENDP	PUBLIC	_getprec_getprec	PROC far	push bp	mov bp,sp	sub sp,4	fstcw [bp-4]	fwait	mov ax,[bp-4]	add sp,4	pop bp	ret_getprec	ENDP	PUBLIC	_fpclear_fpclear	PROC far	push bp	mov bp,sp	fnclex	fwait	pop bp	ret_fpclear	ENDP	PUBLIC	_noexcept_noexcept	PROC far	push bp	mov bp,sp	push ax	sub sp,4	fnclex	fwait	fstcw [bp-4]	fwait	mov ax,[bp-4]	and ax,0FFC0h	or ax,003fh	mov [bp-4],ax	fldcw [bp-4]	add sp,4	pop ax	pop bp	ret_noexcept	ENDP; single precision square root; assumes coprocessor precision already set up; return value in static __fac	PUBLIC	_sqrtf_sqrtf	PROC FAR	push bp	mov bp,sp	fld	DWORD PTR [bp+6]	fsqrt	fwait		mov	sp,bp	pop bp	ret_sqrtf	ENDP; double precision square root; assumes coprocessor precision already set up; return value in static __fac	PUBLIC	_sqrt_sqrt	PROC FAR	push bp	mov bp,sp	fld	QWORD PTR [bp+6]	fsqrt	fwait		mov	sp,bp	pop bp	ret_sqrt	ENDP; long double precision square root; assumes coprocessor precision already set up; return value in fp register	PUBLIC	_sqrtl_sqrtl	PROC FAR	push bp	mov bp,sp	fld tbyte ptr [bp+6]	fsqrt	fwait		mov	sp,bp	pop bp	ret_sqrtl	ENDPPREC_TEXT	ends_DATA	segment word public 'DATA's@	label	byte_DATA	endsPREC_TEXT	segment byte public 'CODE'PREC_TEXT	ends_s@	equ	s@	public _sprec	public _dprec	public _ldprec	end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -