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

📄 hanshu.asm

📁 DSP数学函数库
💻 ASM
字号:
;********************************************
;          61h 60h+63h 62h=65h 64h

add32:          ldp     #0
                lacc    61h,16
                adds    60h
                adds    62h
                add     63h,16
                sacl    64h
                sach    65h
                ret

;          61h 60h-63h 62h=65h 64h

sub32:          ldp     #0
                lacc    61h,16
                adds    60h
                subs    62h
                sub     63h,16
                sacl    64h
                sach    65h
                ret

mpyi:           ldp     #0
                bit     60h,0
                lt      60h
                mpyu    62h
                spl     64h
                sph     65h
                mpy     63h
                ltp     61h
                mpy     62h
                mpya    63h
                adds    65h
                sacl    65h
                sach    66h
                lacc    66h
                bcnd    mpyi1,ntc
                add     63h
mpyi1:          bit     62h,0
                apac
                bcnd    mpyi2,ntc
                add     61h
mpyi2:          sach    67h
                sacl    66h
                bit     65h,0
                bcnd    mpyi_end,ntc
                add     #1
mpyi_end:       ret

;@@@@@@@@@@@@@@@222222222222222222222222222222

divi:           ldp     #0
                lacl    61h
                xor     63h
                sach    71h,1
                mar     *,ar1
                lar     ar1,#31
                lacl    #0
                sacl    67h
                sacl    66h
                lacc    63h,16
                adds    62h
                abs
                sacl    62h
                sach    63h
                lacc    61h,16
                adds    60h
                abs
divi1:          sfl
                sach    65h
                sacl    64h
                lacl    66h
                add     67h,16
                rol
                sach    67h
                sacl    66h
                subs    62h
                sub     63h,16
                bcnd    divi3,nc
                sach    67h
                sacl    66h
                lacl    64h
                add     65h,16
                add     #1
divi4:          banz    divi1,*-
                sacl    64h
                sach    65h
                lacc    71h
                bcnd    divi2,eq
                lacc    65h,16
                adds    64h
                neg
                sacl    64h
                sach    65h
divi2:          ret

divi3:          lacl    64h
                add     65h,16
                b       divi4

sqri:           ldp     #0
                lacc    #0b500h
                sacl    64h
                sacl    62h
                lt      62h
                mpyu    62h
                lacl    60h
                add     61h,16
                spac
                bcnd    sqri1,geq
sqri2:          lacl    62h
                sacl    63h
                sfr
                sacl    64h
                sacl    62h
                lt      62h
                mpyu    62h
                lacl    60h
                add     61h,16
                spac
                bcnd    sqri2,lt
sqri7:          lacl    64h
                sfr
                bcnd    sqri3,eq
                sacl    64h
                adds    62h
                sacl    62h
                sacl    63h,1
sqri6:          lt      62h
                mpyu    62h
                lacl    60h
                add     61h,16
                spac
                bcnd    sqri1,eq
                bcnd    sqri4,gt
                lacl    64h
                sfr
                bcnd    sqri5,eq
                sacl    64h
                lacl    62h
                subs    64h
                sacl    62h
                b       sqri6,*
sqri3:          lacl    62h
                add     #1
                sacl    62h
                b       sqri1,*
sqri5:          lacl    62h
                sub     #1
                sacl    62h
                ret
sqri4:          subs    63h
                bcnd    sqri7,geq
sqri1:          lacc    62h
                ret

sin1:           ldp     #0
                lacl    #1
                sacl    69h
                pop
                sacl    7eh
                call    sin1_1

                .word   006ch
                .word   0004h
                .word   0fffah
                .word   0111h
                .word   0eaabh
                .word   07fffh
                .word   0800h

                call    sin1_2
                lt      60h
                mpy     60h
                pac
                sach    61h,1
                lt      61h
                lar     ar0,#3
                lar     ar1,#108
                call    sin1_3
                lacc    7eh
                push
                lt      60h
                mpy     61h
                pac
                sach    61h,1
                lacc    61h
                ret

cos1:           ldp     #0
                lacl    #1
                sacl    69h
                pop
                sacl    7eh
                call    sin1_1
                .word   006ch
                .word   0004h
                .word   0ffd3h
                .word   0555h
                .word   0c000h
                .word   07fffh
                .word   0800h
                call    sin1_2
                lt      60h
                mpy     60h
                pac
                sach    61h,1
                lt      61h
                lar     ar0,#3
                lar     ar1,#108
                call    sin1_3
                lacc    7eh
                push
                lacc    61h
                ret

sin1_1:         pop
                tblr    68h
                lar     ar1,68h
                add     69h
                tblr    68h
                lar     ar0,68h
                mar     *,ar1
                add     69h
sin1_1_1:       tblr    *+,ar0
                add     69h
                banz    sin1_1_1,*-,ar1
                push
                ret

sin1_2:         lacl    60h
                sub     69h,15
                bcnd    sin1_2_end,neq
                lacc    69h,15
                add     69h
                sacl    60h
sin1_2_end:     ret

sin1_3:         lacl    #0
                sacl    61h
sin1_3_1:       mpy     61h
                pac
                sach    61h,1
                mar     *,ar1
                lacc    *+,ar0
                add     61h
                sacl    61h
                banz    sin1_3_1,*-
                ret

arcsin:         ldp     #0
                lacl    #1
                sacl    69h
                pop
                sacl    7eh
                call    sin1_2
                lacc    #4000h
                sacl    64h
                sacl    71h
                lacl    #0
                sacl    65h
                dmov    60h
                lacc    60h
                bcnd    arcsin_1,geq
                cmpl
                sacl    61h
arcsin_1:       lacc    #6bb2h
                sub     61h
                bcnd    arcsin_2,gt
                mar     *,ar0
                lar     ar0,#14
                lacl    #0
                sacl    6fh
arcsin_6:       lacc    6fh
                xor     60h
                sacl    6fh
                lacc    6fh
                bcnd    arcsin_3,geq
                lacc    65h
                sub     64h
                sacl    65h
                b       arcsin_4
arcsin_3:       lacc    65h
                add     64h
                sacl    65h
arcsin_4:       lacc    60h
                abs
                sacl    60h
                lt      60h
                mpy     60h
                pac
                sub     71h,15
                sach    60h,1
                lacc    60h,1
                sacl    60h
                bcnd    arcsin_5,eq
                lacc    64h,15
                sach    64h
                banz    arcsin_6,*-
arcsin_5:       lacc    #6487h
                sacl    62h
                lt      62h
                mpy     65h
                pac
                sach    61h,1
                lacc    7eh
                push
                lacc    61h
                ret
arcsin_2:       call    sin1_1
                .word   6ch
                .word   0fh
                .word   0a8h
                .word   0bch
                .word   0d3h
                .word   0efh
                .word   112h
                .word   13fh
                .word   17ah,1c9h,238h,2dbh,3e3h,5d6h,999h,1555h,00h,800h
                lt      60h
                mpy     60h
                pac
                sach    61h,1
                lt      61h
                lar     ar0,#14
                lar     ar1,#108
                call    sin1_3
                lacc    7eh
                push
                lt      60h
                mpy     61h
                pac
                add     60h,15
                sach    61h
                lacc    61h
                ret

;input     60h
;output     61h
arccos:         ldp     #0
                pop
                sacl    7ch
                call    arcsin
                lacc    7ch
                push
                lacl    #50
                sacl    62h
                lacl    #67
                add     62h,8
                sacl    62h
                lacc    62h,16
                sub     61h,15
                sach    61h
                lacc    61h
                ret


;input     60h
;output     61h

sin2:           ldp     #0
                lacc    #6487h
                sacl    62h
                lacc    #0ed4dh
                sacl    63h
                bit     60h,1
                bcnd    sin2_1,ntc
                bit     60h,0
                lacl    #0
                bcnd    sin2_2,ntc
                b       sin2_3
sin2_2:         sacl    71h
                lacl    61h
                add     60h,16
                abs
                sach    60h
                sacl    61h
                lacl    63h
                add     62h,16
                subs    61h
                sub     60h,16
                sach    60h,1
                call    cos1
                lacc    71h
                bcnd    sin2_4,eq
                lacc    61h
                neg
                sacl    61h
sin2_4:         lacc    61h
                ret
sin2_1:         bit     60h,0
                bcnd    sin2_3,ntc
                lacl    #1
                b       sin2_2
sin2_3:         lacl    61h
                add     60h,16
                sfl
                sach    60h
                call    sin1
                lacc    61h

                ret
;********************************************
;input      60h
;output     61h
cos2:           ldp     #0
                lacc    #6487h
                sacl    62h
                lacc    #0ed4dh
                sacl    63h
                bit     60h,1
                bcnd    cos2_1,ntc
                bit     60h,0
                bcnd    cos2_2,ntc
                b       cos2_3
cos2_2:         lacl    61h
                add     60h,16
                abs
                sach    60h
                sacl    61h
                lacl    63h
                add     62h,16
                subs    61h
                sub     60h,16
                sach    60h,1
                call    sin1
                ret
cos2_1:         bit     60h,0
                bcnd    cos2_3,ntc
                b       cos2_2
cos2_3:         lacl    61h
                add     60h,16
                sfl
                sach    60h
                call    cos1
                ret
;********************************************
;input      60h/61h
;output     63h

div_b:          ldp     #0
                splk    #15,64h
                bit     60h,0
                bcnd    div_b2,tc
                bit     61h,0
                bcnd    div_b2,tc

div_b1:         splk    #0,62h
                b       div_b3
div_b2:         bit     61h,0
                bcnd    div_b1,tc
                splk    #1,62h
div_b3:         lacc    61h              ;denom
                abs
                sacl    61h              ;denom
                lack    15
                add     64h
                sacl    64h
                lacc    60h              ;number
                abs
                rpt     64h
                subc    61h              ;denom
                sacl    63h              ;out
                bit     62h,15
                bcnd    div_end,ntc
                zac
                sub     63h              ;out
                sacl    63h              ;out
div_end:        ret

⌨️ 快捷键说明

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