📄 sin_16.asm
字号:
;Filename sin_16.asm
.title "sin_16_prog"
.mmregs
.global _c_int00
.include "vc54xnt.inc"
STACK .usect "stack",stack_size
SYSTEM_STACK .set STACK+stack_size
.sect "vectors"
Reset:
BD _c_int00
STM #SYSTEM_STACK,sp
.space 31*4*16
.data
x_val .word 0x7333 ;x=0.45,x*2^16=0x7333
x_3 .word 0 ;x^3
sin_x .word 0 ;sin(x)
cof_3 .word 0x2AAA ;1/3!
cof_5 .word 0x222 ;1/5!
cof_7 .word 0x0D ;1/7!
.text ;代码段开始
_c_int00:
CALL c54x_init ;调用初始化程序
STM #x_val,AR0 ;AR0->x_val
SQUR *AR0,A ;A=x^2,A=x^2*2^16*2^16
MPYA *AR0 ;B=x*A(31-16),B=x^3*2^16*2^16
STM #x_3,AR1 ;AR1->x_3
STL B,*AR1 ;x_3=x^3*2^16*2^16
STM #cof_3,AR5 ;AR5->cof_3
LD B,A ;A=B
MPYA *AR5 ;B=cof_3*A(31-16),B=1/3!*x^3*2^16*2^16
LD B,-16,A ;A=1/3!*x^3*2^16
LD #0h,B ;B=0
ADD *AR0,B ;B=x*2^16
SUB A,B ;B=(x-1/3!*x^3)*2^16
STM #sin_x,AR4 ;AR4->sin_x
STL B,*AR4 ;sin_x=(x-1/3!*x^3)*2^16
LD *AR1,A ;A=x^3*2^16
MPYA *AR0 ;B=x^4*2^16*2^16
LD B,A ;A=B
MPYA *AR0 ;B=x^5*2^16*2^16
LD B,A ;A=B
STM #cof_5,AR6 ;AR6->cof_5
MPYA *AR6 ;B=cof_5*A(31-16),B=1/5!*x^5*2^16*2^16
LD B,-16,A ;A=1/5!*x^5*2^16
LD *AR4,B ;B=(x-1/3!*x^3)*2^16
ADD A,B ;B=(x-1/3!*x^3+1/5!*x^5)*2^16
STL B,*AR4 ;sin_x=(x-1/3!*x^3+1/5!*x^5)*2^16
SQUR *AR1,A ;A=(x_3)^2, A=x^6*2^16*2^16
MPYA *AR0 ;B=x^7*2^16*2^16
STM #cof_7,AR7 ;AR7->cof_7
LD B,A ;A=B
MPYA *AR7 ;B=1/7!*x^7*2^16*2^16
LD B,-16,A ;A=1/7!*x^7*2^16
LD *AR4,B ;B=(x-1/3!*x^3+1/5!*x^5)*2^16
SUB A,B ;B=(x-1/3!*x^3+1/5!*x^5-1/7!*x^7)*2^16
STL B,*AR4 ;sin_x=(x-1/3!*x^3+1/5!*x^5-1/7!*x^7)*2^16
main_start:
B main_start
.end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -