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

📄 floln.asm

📁 PIC单片机的汇编源码合集,应用比较广泛,设计程序时可做子程序来用
💻 ASM
字号:
;********************FLOLN********************
;本程序求标准浮点数以E为底的对数函数Ln(x)。
;入口参数:X在ARGBH1:ARGBL1:EXP1中。
;出口参数:Ln(X)在ARGBH1:ARGBL1:EXP1中。
;占用资源:W,STATUS,020H~02CH,3重堆栈。
;说明:     1.用户需指定AARGB4,AARGB5,BARGB3,EARGB3,DEXP,DARGB1,DARGB2,DARGB3,
;            CEXP,CARGB0,CARGB1,CARGB2
        
 
           IFNDEF       FLOLN1
            #DEFINE     FLOLN1

            INCLUDE     "RND3224.ASM"
            INCLUDE     "FXM2424U.ASM"
            INCLUDE     "FPD32.ASM"
            INCLUDE     "DSTFLO.ASM"
            INCLUDE     "MUAD32.ASM"

FLOLN
            CLRF        AARGB2
            BTFSC       AARGB0,MSB  ;自变量是否为负数
            GOTO        DOMERR24
            MOVF        AEXP,W      ;自变量是否为0
            BTFSC       STATUS,Z
            GOTO        DOMERR24

            MOVF        FPFLAGS,W   ;保存RND标志
            MOVWF       DARGB3
            BCF         FPFLAGS,RND ;屏蔽RND

            MOVF        AEXP,W
            MOVWF       EARGB3
            MOVLW       .127-1
            SUBWF       EARGB3,F
            MOVWF       AEXP

            MOVLW       0xF3        ;0.70710678118655 = 7E3504F3
            SUBWF       AARGB2,W
            MOVLW       0x04
            MOVWF       TEMP
            BTFSS       STATUS,C
            INCFSZ      TEMP,W
            SUBWF       AARGB1,W
            MOVLW       0x35
            MOVWF       TEMP
            BTFSS       STATUS,C
            INCFSZ      TEMP,W
            SUBWF       AARGB0,W
            BTFSS       STATUS,C
            GOTO        LOG24L

;	minimax rational approximation on [0,.sqrt(2)-1]

LOG24H
            MOVLW       0x7F
            MOVWF       BEXP
            CLRF        BARGB0
            CLRF        BARGB1
            CLRF        BARGB2

            CALL        FPS32

            MOVF        AEXP,W
            MOVWF       DEXP
            MOVF        AARGB0,W
            MOVWF       DARGB0
            MOVF        AARGB1,W
            MOVWF       DARGB1
            MOVF        AARGB2,W
            MOVWF       DARGB2

            POLL1       LOG24HQ,2,0

            MOVF        AEXP,W
            MOVWF       CEXP
            MOVF        AARGB0,W
            MOVWF       CARGB0
            MOVF        AARGB1,W
            MOVWF       CARGB1
            MOVF        AARGB2,W
            MOVWF       CARGB2

            MOVF        DEXP,W
            MOVWF       AEXP
            MOVF        DARGB0,W
            MOVWF       AARGB0
            MOVF        DARGB1,W
            MOVWF       AARGB1
            MOVF        DARGB2,W
            MOVWF       AARGB2

            POL         LOG24HP,1,0

            MOVF        CEXP,W
            MOVWF       BEXP
            MOVF        CARGB0,W
            MOVWF       BARGB0
            MOVF        CARGB1,W
            MOVWF       BARGB1
            MOVF        CARGB2,W
            MOVWF       BARGB2

            CALL        FPD32

            GOTO        LOG24OK

;	minimax rational approximation on [1/sqrt(2)-1,0]

LOG24L
            INCF        AEXP,F 
            MOVLW       0x7F
            MOVWF       BEXP
            CLRF        BARGB0
            CLRF        BARGB1
            CLRF        BARGB2

            CALL        FPS32

            DECF        EARGB3,F

            MOVF        AEXP,W
            MOVWF       DEXP
            MOVF        AARGB0,W
            MOVWF       DARGB0
            MOVF        AARGB1,W
            MOVWF       DARGB1
            MOVF        AARGB2,W
            MOVWF       DARGB2

            POLL1       LOG24LQ,2,0

            MOVF        AEXP,W
            MOVWF       CEXP
            MOVF        AARGB0,W
            MOVWF       CARGB0
            MOVF        AARGB1,W
            MOVWF       CARGB1
            MOVF        AARGB2,W
            MOVWF       CARGB2
            MOVF        DEXP,W
            MOVWF       AEXP
            MOVF        DARGB0,W
            MOVWF       AARGB0
            MOVF        DARGB1,W
            MOVWF       AARGB1
            MOVF        DARGB2,W
            MOVWF       AARGB2

            POL         LOG24LP,1,0
            MOVF        CEXP,W
            MOVWF       BEXP
            MOVF        CARGB0,W
            MOVWF       BARGB0
            MOVF        CARGB1,W
            MOVWF       BARGB1
            MOVF        CARGB2,W
            MOVWF       BARGB2

            CALL        FPD32
LOG24OK     MOVF        DEXP,W
            MOVWF       BEXP
            MOVF        DARGB0,W
            MOVWF       BARGB0
            MOVF        DARGB1,W
            MOVWF       BARGB1
            MOVF        DARGB2,W
            MOVWF       BARGB2

            CALL        FPM32

            MOVF        AEXP,W
            MOVWF       DEXP
            MOVF        AARGB0,W
            MOVWF       DARGB0
            MOVF        AARGB1,W
            MOVWF       DARGB1
            MOVF        AARGB2,W
            MOVWF       DARGB2

            CLRF        AARGB0
            MOVF        EARGB3,W
            MOVWF       AARGB1
            BTFSC       AARGB1,MSB
            COMF        AARGB0,F
            CALL        DSTFLO
            CLRF        AARGB2

            MOVF        DEXP,W
            MOVWF       BEXP
            MOVF        DARGB0,W
            MOVWF       BARGB0
            MOVF        DARGB1,W
            MOVWF       BARGB1
            MOVF        DARGB2,W
            MOVWF       BARGB2

            CALL        FPA32

;	fixed point multiplication by log(2)

            MOVF        AEXP,W
            BTFSC       STATUS,Z
            RETLW       0x00

            MOVF        AARGB0,W
            MOVWF       EARGB3
            BSF         AARGB0,MSB

            MOVLW       0xB1
            MOVWF       BARGB0
            MOVLW       0x72
            MOVWF       BARGB1
            MOVLW       0x18
            MOVWF       BARGB2

            CALL        FXM2424U

            BTFSC       AARGB0,MSB
            GOTO        LOG24DONE
            RLF         AARGB3,F
            RLF         AARGB2,F
            RLF         AARGB1,F
            RLF         AARGB0,F
            DECF        AEXP,F

LOG24DONE   BTFSS       EARGB3,MSB
            BCF         AARGB0,MSB

            BTFSS       DARGB3,RND
            RETLW       0x00

            BSF         FPFLAGS,RND
            GOTO        RND3224
;----------------------------------------------------------------------------------------------

;	minimax rational coefficients for log2(1+x)/x on [1/sqrt(2)-1,0]

LOG24HP0	EQU		0x81		; LOG24HP0 = .73551298732E+1
LOG24HP00	EQU		0x6B
LOG24HP01	EQU		0x5D
LOG24HP02	EQU		0x39

LOG24HP1	EQU		0x81		; LOG24HP1 = .40900513905E+1
LOG24HP10	EQU		0x02
LOG24HP11	EQU		0xE1
LOG24HP12	EQU		0xB3

LOG24HQ0	EQU		0x81		; LOG24HQ0 = .50982159260E+1
LOG24HQ00	EQU		0x23
LOG24HQ01	EQU		0x24
LOG24HQ02	EQU		0x96

LOG24HQ1	EQU		0x81		; LOG24HQ1 = .53849258895E+1
LOG24HQ10	EQU		0x2C
LOG24HQ11	EQU		0x51
LOG24HQ12	EQU		0x50

LOG24HQ2	EQU		0x7F		; LOG24HQ2 = 1.0
LOG24HQ20	EQU		0x00
LOG24HQ21	EQU		0x00
LOG24HQ22	EQU		0x00

;----------------------------------------------------------------------------------------------

;	minimax rational coefficients for log2(1+x)/x on [0,sqrt(2)-1]

LOG24LP0	EQU		0x82		; LOG24LP0 = .103115556038E+2
LOG24LP00	EQU		0x24
LOG24LP01	EQU		0xFC
LOG24LP02	EQU		0x22

LOG24LP1	EQU		0x81		; LOG24LP1 = .457749066375E+1
LOG24LP10	EQU		0x12
LOG24LP11	EQU		0x7A
LOG24LP12	EQU		0xCE

LOG24LQ0	EQU		0x81		; LOG24LQ0 = .714746549793E+1
LOG24LQ00	EQU		0x64
LOG24LQ01	EQU		0xB8
LOG24LQ02	EQU		0x0A

LOG24LQ1	EQU		0x81		; LOG24LQ1 = .674551124538E+1
LOG24LQ10	EQU		0x57
LOG24LQ11	EQU		0xDB
LOG24LQ12	EQU		0x3A

LOG24LQ2	EQU		0x7F		; LOG24LQ2 = 1.0
LOG24LQ20	EQU		0x00
LOG24LQ21	EQU		0x00
LOG24LQ22	EQU		0x00

              ENDIF

⌨️ 快捷键说明

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