亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? fppfnc4.s43

?? MSP430浮點庫
?? S43
?? 第 1 頁 / 共 2 頁
字號:
;============================================================================
;  MSP430 Floating Point Package   Version 4.10  IAR
;
;  Trigonometric and other Functions
;  Texas Instruments Deutschland
;  Date:    March  9   2000    4.07.1           IAR Version
;  Version: 4.02  12.3.97 LB   Sin X, Sinh X
;  Version: 4.03  18.3.97 LB   Cos X, Cosh X, FLT_RNG added
;  Version: 4.04  27.3.97 LB   Tan X, Cot X
;  Version: 4.05   7.8.97 LB   Ln X,  Exp X, A^B       tested
;  Version: 4.06 12.10.97 LB   X^0.5		   tested
;  Version: 4.07 14.10.97 LB   X^1/3	    tested
;  Version: 4.07.1 7.3.00 LB   Fehler: FLT1 enabled
;  Version: 4.10  23.7.02 LB   Error: square root
;==============================================================================
;  BEGIN OF THE TRIGONOMETRIC FUNCTIONS
;
; Sin, Cosine, Hyperbolic Sine, Hyperbolic Cosine of X (radians)
;
; Call: MOV   #addressX,RPARG	; RPARG points to the address of X
;	CALL  #FLT_xxx		; Call the function
;	...			; RPARG, RPRES and SP point to result
;
; Range: -2xPi < X < +2xPi	for larger numbers FAST loss of accuracy
;
;   Initialization for the trigonometric functions
;  +--------------+-------+-------+--------+--------+
;  | INIT	  | sin X | cos X | sinh X | cosh X |
;  +--------------+-------+-------+--------+--------+
;  | Sign Mask	  | 080h  |  080h | 000h   |  000h  |
;  | n		  | 1.0   |  0.0  | 1.0    |  0.0   |
;  | Serial Term  |   X   |  0.0  |   X    |  0.0   |
;  | Result Area  |   X   |  0.0  |   X    |  0.0   |
;  +--------------+-------+-------+--------+--------+
;
FPL      EQU    (ML/8)+1        ; Length of FPP numbers (bytes)
;
; Floating Point Sine Function: Result on TOS = SIN(@RPARG)
; Prepare the stack with the initial constants
;
FLT_SIN PUSH	#80h		; Sign mask (toggle)
	JMP	SINc
;
; Hyperbolic Sine Function: Result on TOS = SINH(@RPARG)
;
FLT_SINH PUSH	#00h		; Sign mask (always pos.)
SINc	PUSH	#0		; n: 1
     IF DOUBLE=1
	PUSH	#0
     ENDIF
	PUSH	#08000h 	; .FLOAT 1.0
;
     IF DOUBLE=1
        PUSH    4(R5)        ; Series term: X
     ENDIF
        PUSH    2(R5)
        PUSH    @R5          ;
;
	JMP	TRIGCOM 	; To common part
;
; Floating Point Cosine Function: Result on TOS = COS(@RPARG)
; Prepare the stack with the initial constants
;
FLT_COS PUSH	#80h		; Sign mask (toggle)
	JMP	COSc
;
; Hyperbolic Cosine Function: Result on TOS = COSH(@RPARG)
;
FLT_COSH PUSH	#00h		; Sign mask (always pos.)
COSc	PUSH	#0		; n: 0
     IF DOUBLE=1
	PUSH	#0
     ENDIF
	PUSH	#00h		; .FLOAT 0.0
;
     IF DOUBLE=1
	PUSH	#0		; Series term: 1.0
     ENDIF
	PUSH	#0
	PUSH	#08000h 	; .FLOAT 1.0
;
; Common part for sin X, cos X, sinh X and cosh X
;
TRIGCOM  EQU    $
     IF DOUBLE=1
        PUSH    4(R5)        ; Push X onto stack (gets X^2)
     ENDIF
        PUSH    2(R5)        ;
        PUSH    @R5          ;
;
	MOV	RPARG,RPRES	; Both pointers to X
	CALL	#FLT_MUL	; X^2 to actual stack
;
	ADD	#FPL,RPARG	; Copy serial term to result space
        MOV     @R5+,3*FPL+4(SP)   ; is X or 1.0
        MOV     @R5+,3*FPL+6(SP)
     IF DOUBLE=1
        MOV     @R5+,3*FPL+8(SP)
     ENDIF
	SUB	#FPL,SP 	; Working area for calculations
	MOV	SP,RPRES
;
TRIGLOP MOV	#FLT2,RPARG	; Address of .FLOAT 2.0
	ADD	#3*FPL,RPRES	; Address n
	CALL	#FLT_ADD	; n + 2
        MOV     @R5+,3*FPL(SP)  ; (n+2) -> n
        MOV     @R5+,3*FPL+2(SP)
     IF DOUBLE=1
        MOV     @R5+,3*FPL+4(SP)
     ENDIF
;
; Build (n+1)x(n+2) for next term. (n+2)^2 - (n+2) = (n-1)x(n+2)
;
	MOV	RPRES,RPARG	; Both point to (n+2)
	CALL	#FLT_MUL	; (n+2)^2
	ADD	#3*FPL,RPARG	; Point to old n
	CALL	#FLT_SUB	; (n+2)^2 -(n+2) = (n+1)x(n+2)
;
; The serial term is divided by (n+1)x(n+2)
;
	ADD	#2*FPL,RPRES	; Point to serial term
	CALL	#FLT_DIV	; Serial term/(n+1)x(n+2)
	ADD	#FPL,RPARG	; Point to x^2
	CALL	#FLT_MUL	; ST x X^2/(n+1)x(n+2)
	JN	TRIGERR 	; Error, status in SR and HELP
	XOR	4*FPL(SP),0(SP) ; Modify sign of new serial term
        MOV     @R5+,2*FPL(SP)        ; save new serial term
        MOV     @R5+,2*FPL+2(SP)
      IF DOUBLE=1
        MOV     @R5+,2*FPL+4(SP)
      ENDIF
	ADD	#3*FPL+4,RPARG		; Point to result area
	CALL	#FLT_ADD		; Old sum + new serial term
        MOV     @R5+,4*FPL+4(SP)     ; New result to result area
        MOV     @R5+,4*FPL+6(SP)
     IF DOUBLE=1
        MOV     @R5+,4*FPL+8(SP)
     ENDIF
;
; Check if enough iterations are made
;
	CMP	Nmax,3*FPL(SP)	; Compare with nmax (2 x iterations)
	JLO	TRIGLOP
;
TRIGERR ADD	#4*FPL+2,SP	; Housekeeping: free stack
	BR	#FLT_END	; To completion part. Error in HELP
;
     IF DOUBLE=1
FLT2    DW      08100h,00000h,00000h ; .double 2.0
     ELSE
FLT2    DW      08100h,00000h   ; .float 2.0
     ENDIF
Nmax    DW      08470h,00000h   ; .FLOAT 30.0 (Iterations x 2)
;
;-----------------------------------------------------------------------
; Subroutine FLT_RNG moves angle X into the range -Pi < X < +Pi
;
; Call: MOV   #addressX,RPARG	; RPARG points to the address of X
;	CALL  #FLT_RNG		; Call the function
;	...			; RPARG, RPRES and SP point to result on TOS
;
; Range: -100xPI < X < +100xPI	loss of accuracy increases with X
;
FLT_RNG PUSH    @R5          ; Save sign of X on stack
	AND	#080h,0(SP)	; Only sign remains
	SUB	#FPL,SP 	; Reserve space for 2^n x Pi
     IF DOUBLE=1
        PUSH    4(R5)        ; X on stack
     ENDIF
        PUSH    2(R5)
        PUSH    @R5
	BIC	#080h,0(SP)	; |X| remains
FR1	MOV	FLT2PI,FPL(SP)	; 2xPi to stack
	MOV	FLT2PI+2,FPL+2(SP)
     IF DOUBLE=1
	MOV	FLT2PI+4,FPL+4(SP)
     ENDIF
	CMP	@SP,FLTPI	; Pi - |X|
	JHS	FR2		; Pi > |X|: range process done
;
; Successive approximation by subtracting 2^n x2Pi
;
FR3	INC.B	FPL+1(SP)	; 2Pi x 2
	CMP	@SP,FPL(SP)	; 2^n x 2Pi - |X|
	JLO	FR3		; 2^n x 2Pi < |X|
	DEC.B	FPL+1(SP)	; 2^n x 2Pi > |X| divide by 2
	MOV	SP,RPRES	; Address |X|
	MOV	SP,RPARG
	ADD	#FPL,RPARG	; Address 2^n x 2Pi
	CALL	#FLT_SUB	; |X| - 2^n x 2Pi
	JMP	FR1		; Check if in range now
;
; Move X (now between -Pi and +Pi) to old working area
;
FR2	XOR	2*FPL(SP),0(SP) ; Correct sign of X
	MOV	@SP+,2*FPL+2(SP) ; Result to old WA
	MOV	@SP+,2*FPL+2(SP)
     IF DOUBLE=1
	MOV	@SP+,2*FPL+2(SP)
     ENDIF
	ADD	#FPL+2,SP	; To return address of FLT_RNG
	BR	#FLT_END	; To completion part
;
     IF DOUBLE=1
FLTPI   DW      08149h,0FDAh,0A221h ; .DOUBLE 3.141592653589793 Pi
FLT2PI  DW      08249h,0FDAh,0A221h ; .DOUBLE 3.141592653589793*2 2xPi
     ELSE
FLTPI   DW      08149h,0FDBh    ; .FLOAT  3.141592653589793 Pi
FLT2PI  DW      08249h,0FDBh    ; .FLOAT  3.141592653589793*2 2xPi
     ENDIF
;--------------------------------------------------------------------------
; Tangens of X (radians)
;
; Call: MOV   #addressX,RPARG	; RPARG points to the address of X
;	CALL  #FLT_TAN		; Call the tangens function
;	...			; RPARG, RPRES and SP point to result
;
; Range: -2xPi < X < +2xPi	for larger numbers FAST loss of accuracy
;--------------------------------------------------------------------------
FLT_TAN CLR	R4		; Offset for tan X
	JMP	TRI_COM1	; Go to common handler
;
; Cotangens of X (radians)
;
; Call: MOV   #addressX,RPARG	; RPARG points to the address of X
;	CALL  #FLT_COT		; Call the cotangens function
;	...			; RPARG, RPRES and SP point to result
;
; Range: -2xPi < X < +2xPi	for larger numbers FAST loss of accuracy
;--------------------------------------------------------------------------
FLT_COT MOV	#2,R4		; Offset for cot X
	JMP	TRI_COM1	; Go to common handler
;
; Hyperbolic Tangens of X (radians)
;
; Call: MOV   #addressX,RPARG	; RPARG points to the address of X
;	CALL  #FLT_TANH 	; Call the hyperbolic tangens function
;	...			; RPARG, RPRES and SP point to result
;
; Range: -2xPi < X < +2xPi	for larger numbers FAST loss of accuracy
;--------------------------------------------------------------------------
FLT_TANH MOV	 #4,R4		 ; Offset for tanh X
	JMP	TRI_COM1	; Go to common handler
;
; Hyperbolic Cotangens of X (radians)
;
; Call: MOV   #addressX,RPARG	; RPARG points to the address of X
;	CALL  #FLT_COTH 	; Call the hyperbolic cotangens function
;	...			; RPARG, RPRES and SP point to result
;
; Range: -2xPi < X < +2xPi	for larger numbers FAST loss of accuracy
;--------------------------------------------------------------------------
FLT_COTH MOV	 #6,R4		 ; Offset forcoth X
;
; Common Handler for tan, cot, tanh, coth and exponent function
;
TRI_COM1  EQU $                 ;
        MOV     @R5+,2(SP)   ; Copy X to result space
        MOV     @R5+,4(SP)
         IF     DOUBLE=1
        MOV     @R5,6(SP)
         ENDIF
	SUB	#FPL,SP 	; Allocate new result space
	SUB	#4,RPARG	; Point to X again
	CALL	FT1(R4) 	; Calculate 1st function
	JN	TERR2		; Error: error code in HELP
	SUB	#FPL,SP 	; Allocate cosine working area
	ADD	#FPL+2,RPARG	; Point to X
	CALL	FT2(R4) 	; Calculate 2nd function
	ADD	#FPL,RPRES	; Point to result of 1st function
	CALL	#FLT_DIV	; 1st result/2nd result
	MOV	@SP+,2*FPL(SP)	; Final result to working area
	MOV	@SP+,2*FPL(SP)
         IF     DOUBLE=1
	MOV	@SP+,2*FPL(SP)
         ENDIF
TERR2	ADD	#FPL,SP 	; Skip 1st result
	BR	#FLT_END
;
FT1     DW      FLT_SIN         ; tan = sin/cos    1st function
        DW      FLT_COS         ; cot = cos/sin
        DW      FLT_SINH        ; tanh = sinh/cosh
        DW      FLT_COSH        ; coth = cosh/sinh
;
FT2     DW      FLT_COS         ; tan = sin/cos    2nd function
        DW      FLT_SIN         ; cot = cos/sin
        DW      FLT_COSH        ; tanh = sinh/cosh
        DW      FLT_SINH        ; coth = cosh/sinh
;
;---------------------------------------------------------------------------
;  BEGIN OF OTHER FUNCTIONS
; Natural Logaritm Function:	Result on TOS = LN(@RPARG)
;
; Call: MOV   #addressX,RPARG	; RPARG points to the address of X
;	CALL  #FLT_LN		; Call the function
;	...			; RPARG, RPRES and SP point to result lnX
;
; Range: +2.9x10^-38 < X < +3.4x10^38
;
; Errors: X = 0:  N = 1, C = 1, Z = 0	Result: -3.4E38
;	  X < 0:  N = 1, C = 1, Z = 0	Result: -3.4E38
;
; Stack: 3 x FPL + 6
;
FLT_LN   EQU   $
	PUSH	#0		; N binary (divisor, power)
     IF DOUBLE=1
        PUSH    4(R5)        ; Push X onto stack
     ENDIF
        PUSH    2(R5)        ;
        PUSH    @R5          ;
;
; Check for the legal range of X: 0 < X
;
	MOV	#FLT0,RPRES	 ; Check valid range: 0 < X
	CALL	#FLT_CMP
	JHS	LNNEG		; X is negative
;
; If X = 1.0 the result is 0.0
;
 	MOV	#FLT1,RPRES	 ; Check if X= 1
	CALL	#FLT_CMP
	JEQ	LN1P0		; X is 1
;
; The exponent of X is multiplied with ln2. Then ln1.5 is added to correct
; the division by 1.5. Result is base for final result
;
	SUB	#FPL,SP 	; Reserve working space
        MOV.B   1(R5),HELP   ; Copy exponent of X
	XOR	#80h,HELP	; Correct sign of exponent
	SXT	HELP		;
	MOV	HELP,0(SP)
	MOV	SP,RPARG
	CALL	#CNV_BIN16	; Exponent to FP format
	MOV	#FLN2,RPARG	; To ln2
	CALL	#FLT_MUL	; exp x ln2
	MOV	#FLN1P5,RPARG	 ; To ln1.5
	CALL	#FLT_ADD	; exp x ln2 + ln1.5
        MOV     @R5+,2*FPL+4(SP)     ; To result area
        MOV     @R5+,2*FPL+6(SP)
     IF DOUBLE=1
        MOV     @R5+,2*FPL+8(SP)
     ENDIF
;
; The mantissa of X is converted into the range -0.33 to +0.33 to get
; fast convergion
;
	ADD	#FPL,SP 	; Back to X
	MOV	SP,RPRES	; RPRES points to X
	MOV.B	#80h,1(SP)	; 1.0 =< X < 2.0
	MOV	#FLT1P5,RPARG	; To .FLOAT 1.5
	CALL	#FLT_DIV	; 2/3 =< X < 4/3
	MOV	#FLT1,RPARG	; To .FLOAT 1.0
	CALL	#FLT_SUB	; -1/3 =< X < +1/3
;
     IF DOUBLE=1                ;
	PUSH	#0		; 1.0 to X^N area
     ENDIF
	PUSH	#0
	PUSH	FLT1
;
     IF DOUBLE=1                ; N (FLT1.0) on stack
	PUSH	#0
     ENDIF
	PUSH	#0
	PUSH	FLT1
	SUB	#FPL,SP 	; Working area
;
LNLOP    EQU $
	MOV	SP,RPRES
	ADD	#2*FPL,RPRES	; To X^N
	MOV	SP,RPARG
	ADD	#3*FPL,RPARG	; To X
	CALL	#FLT_MUL	; X^(N+1)
        MOV     @R5+,2*FPL(SP)     ; New X^(N+1) -> X^N
        MOV     @R5+,2*FPL+2(SP)
     IF DOUBLE=1
        MOV     @R5+,2*FPL+4(SP)     ; RPARG points to N
     ENDIF
	CALL	#FLT_DIV	; X^N/N
    INC	4*FPL(SP)	; Incr. binary N
	BIT	#1,4*FPL(SP)	; N even?
	JNZ	LN1
	XOR	#80h,0(SP)	; Yes, change sign of X^N/N
;
LN1	ADD	#4*FPL+4,RPARG		; Point to result area
	CALL	#FLT_ADD		; Old result + new one
        MOV     @R5+,4*FPL+4(SP)     ; New result to result area
        MOV     @R5+,4*FPL+6(SP)
     IF DOUBLE=1
        MOV     @R5+,4*FPL+8(SP)
     ENDIF
;
; Float N is incremented
;
	MOV	#FLT1,RPARG	; To .FLOAT 1.0
	ADD	#FPL,RPRES	; To N
	CALL	#FLT_ADD
        MOV     @R5+,FPL(SP)     ; N+1 to N area
        MOV     @R5+,FPL+2(SP)
     IF DOUBLE=1
        MOV     @R5+,FPL+4(SP)
     ENDIF
;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲色图欧美在线| 日韩vs国产vs欧美| 在线不卡的av| 成人av在线资源网| 日日夜夜精品视频免费| 中文字幕制服丝袜成人av| 在线观看www91| 国产成人自拍网| 日韩激情中文字幕| 亚洲精品老司机| 中文无字幕一区二区三区| 在线电影欧美成精品| 99re这里只有精品6| 国产精品亚洲午夜一区二区三区| 午夜久久久影院| 亚洲综合色自拍一区| 日韩码欧中文字| 欧美国产禁国产网站cc| 日韩欧美一区在线观看| 欧美日韩和欧美的一区二区| 暴力调教一区二区三区| 国产精品99久久不卡二区| 激情综合亚洲精品| 久久疯狂做爰流白浆xx| 三级精品在线观看| 亚洲自拍与偷拍| 亚洲免费在线视频| 亚洲女子a中天字幕| 中文字幕在线观看一区二区| 国产精品国产三级国产普通话蜜臀 | 欧洲av在线精品| 国产99久久久久| 久久 天天综合| 免费看日韩精品| 亚洲美女免费视频| 亚洲欧美一区二区久久 | 日韩和的一区二区| 亚洲国产日韩a在线播放性色| 亚洲欧洲一区二区在线播放| 国产精品久久久久久福利一牛影视 | 最新不卡av在线| 久久精品一区二区三区不卡| 久久久亚洲高清| 国产日韩欧美精品在线| 国产精品视频一二| 日韩一区欧美小说| 亚洲精品网站在线观看| 亚洲综合精品久久| 日韩av在线播放中文字幕| 蜜桃久久久久久| 国产精品一区免费视频| 成人一级片在线观看| 99久久免费精品| 在线观看亚洲成人| 欧美日本视频在线| 欧美成人a∨高清免费观看| 精品三级在线看| 欧美激情中文不卡| 亚洲精品视频在线观看免费| 亚洲成人av资源| 久草中文综合在线| gogogo免费视频观看亚洲一| 色伊人久久综合中文字幕| 欧美三级午夜理伦三级中视频| 欧美一区午夜精品| 精品国产91洋老外米糕| 国产精品污www在线观看| 亚洲摸摸操操av| 秋霞午夜av一区二区三区| 国产乱人伦精品一区二区在线观看| 国产成人自拍网| 欧美色网一区二区| 2023国产一二三区日本精品2022| 国产精品免费视频观看| 亚洲国产精品人人做人人爽| 美国毛片一区二区| 成人av电影在线| 在线电影欧美成精品| 国产亚洲精品超碰| 亚洲高清免费观看| 国产成人av一区二区| 欧美最猛性xxxxx直播| 26uuu精品一区二区| 一区二区三区四区国产精品| 老司机午夜精品| 91麻豆文化传媒在线观看| 日韩一区二区三区免费看| 综合久久国产九一剧情麻豆| 美女被吸乳得到大胸91| 99国产麻豆精品| 精品99999| 伊人婷婷欧美激情| 国产精品影音先锋| 精品视频在线免费观看| 久久精品在这里| 亚洲成a人在线观看| 菠萝蜜视频在线观看一区| 欧美大片顶级少妇| 亚洲午夜精品久久久久久久久| 国产91在线观看| 日韩一区二区在线免费观看| 中文字幕在线不卡视频| 国产乱码精品一区二区三区忘忧草| 欧美性一区二区| 亚洲欧美日韩精品久久久久| 国产精品中文字幕日韩精品 | 日韩精品一区二区三区蜜臀| 亚洲高清免费观看| 色综合欧美在线视频区| 中日韩免费视频中文字幕| 国内一区二区视频| 日韩欧美一区中文| 日韩和欧美一区二区三区| 在线免费亚洲电影| 中文字幕在线观看不卡视频| 国产精品亚洲人在线观看| 日韩区在线观看| 丝袜国产日韩另类美女| 色综合久久综合中文综合网| 国产精品久久久久久久午夜片| 国产一区二区在线观看免费| 日韩亚洲欧美一区| 免费精品视频在线| 日韩一区二区三区三四区视频在线观看 | 中日韩av电影| 国模少妇一区二区三区| 欧美一区二区久久| 青青草国产精品亚洲专区无| 欧美高清性hdvideosex| 丝袜美腿高跟呻吟高潮一区| 欧美精品99久久久**| 性做久久久久久免费观看欧美| 欧美做爰猛烈大尺度电影无法无天| 亚洲欧美另类图片小说| av一区二区不卡| 亚洲欧美激情视频在线观看一区二区三区 | av午夜一区麻豆| 中文字幕不卡三区| 99久久精品免费精品国产| 国产精品毛片久久久久久| 成人av电影在线网| 成人免费在线视频观看| 一本色道a无线码一区v| 亚洲一区二区视频| 欧美日高清视频| 美女脱光内衣内裤视频久久影院| 欧美日韩免费一区二区三区 | 欧美性高清videossexo| 亚洲电影一级片| 91精品国产综合久久蜜臀| 免费成人在线视频观看| 久久一区二区三区国产精品| 国产不卡视频在线播放| 亚洲私人影院在线观看| 91国偷自产一区二区开放时间| 亚洲一区二区在线视频| 欧美一级在线视频| 国产成人高清视频| 亚洲综合在线视频| 欧美一区二区三区四区五区| 国产专区欧美精品| 中文字幕一区二区不卡| 欧美一a一片一级一片| 美女视频一区二区三区| 国产亚洲污的网站| 色综合网站在线| 秋霞国产午夜精品免费视频| 国产欧美精品一区| 在线观看91视频| 精品综合久久久久久8888| 国产精品久久久久久久久免费丝袜| 日本道色综合久久| 久久国产免费看| 亚洲精品中文在线| 日韩三区在线观看| 99re8在线精品视频免费播放| 五月婷婷久久丁香| 中文字幕巨乱亚洲| 91精品欧美福利在线观看 | 欧美日韩国产中文| 国产毛片精品国产一区二区三区| 亚洲女人小视频在线观看| 欧美一区二区人人喊爽| 99久久99久久精品免费看蜜桃| 视频一区中文字幕国产| 国产精品免费视频观看| 3d成人动漫网站| 成人黄色电影在线 | 欧美极品另类videosde| 欧美喷潮久久久xxxxx| 豆国产96在线|亚洲| 蜜臀精品久久久久久蜜臀| 自拍偷拍欧美激情| 久久久国产一区二区三区四区小说 | 欧美日韩国产影片| 成人av免费在线| 国产一区二区女| 午夜av一区二区| 亚洲乱码日产精品bd| 欧美国产1区2区|