📄 suanshu.asm
字号:
.title "suanshu.asm"
.mmregs
.def start,_c_int00
.bss x1,1
.bss x2,1
.bss y1,1
.bss y2,1
.bss z1,1
.bss z2,1
.bss z3_h,1
.bss z3_l,1
.bss z4,1
v1 .set 014H ;20 -----x1
v2 .set 036H ;54 -----y1
v3 .set 04000H ; 0.5(fraction)----x2
v4 .set 00b548H ; -0.5837(fraction)-----y2
_c_int00
b start
nop
nop
start:
LD #x1 , DP
ST #v1 , x1
ST #v2 , y1
; * * * * * * * * * * test ADD * * * * * * * * * * * *
LD x1 , A ; load x1 -> A
ADD y1 , A ; A + y1 -> A
STL A , z1 ; save A(low 16 bits) ->z1
NOP
; * * * * * * * * * * test SUB * * * * * * * * * * * *
LD x1 , A
SUB y1 , A
STL A,z2
NOP
; * * * * * * * * * * test MPY (integer) * * * * * * * *
RSBX FRCT ; 准备整数乘法
LD x1 , T ; x1 -> T
MPY y1 ,A ; x1*y1 -> A (result is 32 bit)
STH A , z3_h ; 乘法结果高16位在 z3_h单元中
STL A , z3_l ; 乘法结果低16位在z3_l单元中
NOP
ST #v3 , x2
ST #v4 , y2
; * * * * * * * * * * test MPY ((fraction) * * * * * * *
; * * 0.5*(-0.58374)=-0.29187(0x0daa4) * *
SSBX FRCT ; 准备小数乘法
LD x2 , 16 ,A ; load x2 into A (high 16 bits)
MPYA y2 ; x2*y2 -> B, and y2 -> T
;LD B,1,A ;计算1.125*1.5用Q14表示乘积,18.4*36.8用Q5,同时下一条中A改为B
STH B , z4 ; 结果在 z4 单元中
nop
end: B end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -