📄 c5_2_2.dsp
字号:
.MODULE SP;
.CONST N=H#040; {64个数据}
.VAR/DM/RAM W_INPUT [N], RR_INPUT [N];
.VAR/DM/RAM R_INPUT [N], Y_INPUT [N+2];
.INIT W_INPUT: <W0.C>
.INIT RR_INPUT: <RR0.C>
.INIT R_INPUT: <R0.C>
.INIT Y_INPUT: <Y.C>
.VAR/DM/RAM et_int, et_fra, eit2_int, eit2_fra;
.VAR/DM/RAM eit_int, eit_fra, eit1_int, eit1_fra;
.VAR/DM/RAM at_int, at_fra, at1_int, at1_fra;
.VAR/DM/RAM nt_int, nt_fra, a_low, a_high;
.VAR/DM/RAM eft2_int, eft2_fra,eft1_int, eft1_fra;
.VAR/DM/RAM eft_int, eft_fra, yft2_int, yft2_fra;
.VAR/DM/RAM yft1_int, yft1_fra,yft_int,yft_fra;
.VAR/DM/RAM pt_int, pt_fra, pt1_int, pt1_fra;
.VAR/DM/RAM yt1_int, yt1_fra, yt2_int, yt2_fra;
.VAR/DM/RAM yt_int, yt_fra, temp_int, temp_fra;
.VAR/DM/RAM mt_int, mt_fra, rrt, wt;
.VAR/DM/RAM res_int, res_fra, rt, xx;
.VAR/DM/RAM temp1_int, temp1_fra;
.PORT a_out {输出文件}
JUMP START; NOP; NOP; NOP; {中断处理}
RTI; NOP; NOP; NOP; {屏蔽未使用的中断}
RTI; NOP; NOP; NOP;
RTI; NOP; NOP; NOP;
RTI; NOP; NOP; NOP;
RTI; NOP; NOP; NOP;
RTI; NOP; NOP; NOP;
START:
ar =0; dm(at1_int)=ar; dm(at1_fra)=ar;
ar =0; dm(eit1_int)=ar; dm(eit1_fra)=ar;
ar =0; dm(eit2_int)=ar; dm(eit2_fra)=ar;
ar =0; dm(eft2_int)=ar; dm(eft2_fra)=ar;
ar =0; dm(eft1_int)=ar; dm(eft1_fra)=ar;
ar =0; dm(yft2_int)=ar; dm(yft2_fra)=ar;
ar =0; dm(yft1_int)=ar; dm(yft1_fra)=ar;
I4=^Y_INPUT;
L4=0;
M4=1;
CNTR=N+2;
AX0=0; AX1=0; AY1=0;
DO LOOP1 UNTIL CE;
MX0=DM (I4, M4); {I4指向数据y的首地址}
MY0=MX0;
MR=MX0*MY0 (SS); { y为有符号数据}
AY0=MR1;
AR=AX0+AY0; {做平方和的累加}
AX0=AR;
DM (A_LOW)=AR; {累加值的低16位}
AR=AX1+AY1+C; {进位加到高16位}
DM (A_HIGH) =AR;
AX1=AR; { AX1保存累加值的高16位}
LOOP:
NOP;
si =dm(a_low);
sr=lshift si by –6(lo); {除以64}
si =dm(a_high);
sr=sr or ashift si by –6(hi); {求出平均值}
ay1=h#064; {被除数和除数均为1.15格式 }
ax0=sr0; {100/sr0,使用双精度除法 }
si =ax0;
sr=lshift si by 1(lo);
ay0=sr0;
si =ay1;
sr=lshift si by 1(lo);
se =-15;
sr1=0;
mr0=0;
mr1=0;
ay1=0;
AF=PASS SR1;
SI=SR0, AR=SR1 XOR AY1;
AX1=AR;
SR=LSHIFT MR0 BY 1(LO);
SR=SR OR LSHIFT MR1 BY 1(HI);
SR=SR OR LSHIFT AR (LO);
AR=PASS AF;
MR0=SR0;
MR1=SR1, SR=LSHIFT MR1 (LO);
SR=SR OR LSHIFT SI BY 1(LO);
SR=SR OR LSHIFT AR BY 1(HI);
CNTR=31;
AX0=AY1;
DO ddivu1 UNTIL CE;
AR=ABS AX1;
IF POS JUMP aqz1;
AR=SR0+AY0;
SI=AR, AF=SR1+AY1+C;
JUMP ddivi1;
aqz1: AR=SR0-AY0;
SI=AR, AF=SR1-AY1+C-1;
ddivi1: SR=LSHIFT MR0 BY 1(LO);
SR=SR OR LSHIFT MR1 BY 1(HI);
AR=AX0 XOR AF;
AX1=AR;
AR=NOT AX1;
SR= SR OR LSHIFT AR (LO);
MR0=SR0, AR=PASS AF;
MR1=SR1, SR= LSHIFT MR1 (LO);
SR= SR OR LSHIFT SI BY 1 (LO);
ddivu1: SR= SR OR LSHIFT AR BY 1 (HI);
dm(pt1_fra)=mr0;
dm(pt1_int)=mr1;
IO=^R_INPUT; L0=0;
I1=^Y_INPUT; L1=0;
I2=^W_INPUT; L2=0;
I3=^RR_INPUT; L3=0;
M0=0; M1=-1;
CNTR=N;
do loop2 until ce;
ax0=dm(i0,m0);
si =ax0;
sr =lshift si by 1(lo);
dm (rt)=sr0;
ax0=dm (i2,m0);
si =ax0;
sr =lshift si by 1(lo);
dm (wt)=sr0;
ax0=dm (i3, m0);
si =ax0;
sr =lshift si by 1(lo);
dm (rrt)=sr0;
ay0=h#08000;
ay1=h#0ffff;
ax1=0;
ax0=dm (i1,m0);
ar =ax0+ay0;
if not ac jump csp1;
dm (yt2_int)=ay1;
si =ax0;
sr =lshift si by 1(lo);
dm (yt2_fra)=sr0;
jump sp1;
csp1: dm(yt2_int)=ax1;
si =ax0;
sr =lshift si by 1(lo);
dm (yt2_fra)=sr0;
sp1: ax0=dm(i1,m0);
ar =ax0+ay0;
if not ac jump csp2;
dm(yt1_int)=ay1;
si=ax0;
sr=lshift si by 1(lo);
dm (yt1_fra)=sr0;
jump sp2;
csp2: dm (yt1_int)=ax1;
si =ax0;
sr =lshift si by 1(lo);
dm (yt1_fra)=sr0;
sp2: ax0=dm(i1,m1);
ar =ax0+ay0;
if not ac jump csp3;
dm (yt_int)=ay1;
si =ax0;
sr =lshift si by 1(lo);
dm (yt_fra)=sr0;
jump sp3;
csp3: dm (yt_int)=ax1;
si =ax0;
sr =lshift si by 1(lo);
dm (yt_fra)=sr0;
sp3: mx0=dm (rt); mx1=0;
my0=dm (eit1_fra); my1=dm(eit1_int);
call dpm;
ay0=dm (yt1_fra);
ay1=dm (yt1_int);
ax0=dm (res_fra);
ax1=dm (res_int);
ar =ax0-ay0;
dm (mt_fra)=ar;
ar =ax1-ay1+c-1;
dm (mt_int)=ar;
mx0=dm (rrt); mx1=0;
my0=dm (eit2_fra); my1=dm(eit2_int);
call dpm;
ay0=dm (res_fra);
ay1=dm (res_int);
ax0=dm (yt2_fra);
ax1=dm (yt2_int);
ar =ax0-ay0;
dm (temp_fra)=ar;
ar =ax1-ay1+c-1;
dm (temp_int)=ar;
ax0=dm (yt_fra);
ax1=dm (yt_int);
ay0=dm (temp_fra);
ay1=dm (temp_int);
ar=ax0+ay0;
dm(temp_fra)=ar;
ar=ax1+ay1+c;
dm(temp_int)=ar;
mx0=dm(mt_fra); mx1= dm(mt_int);
my0=dm(at1_fra); my1=dm(at1_int);
call dpm;
ax0=dm(temp_fra);
ax1=dm(temp_int);
ay0=dm(res_fra);
ay1=dm(res_int);
ar=ax0-ay0;
dm(et_fra)=ar;
ar=ax1-ay1+c-1;
dm(et_int)=ar;
mx0=dm(rt_fra); mx1= 0;
my0=dm(eft1_fra); my1=dm(eft1_int);
call dpm;
ay0=dm(yft1_fra);
ay1=dm(yft1_int);
ax0=dm(res_fra);
ax1=dm(res_int);
ar=ax0-ay0;
dm(nt_fra)=ar;
ar=ax1-ay1+c-1;
dm(nt_int)=ar;
mx0=dm(nt_fra); mx1= dm(nt_int);
my0=dm(nt_fra); my1=dm(nt_int);
call dpm;
mx0=dm(res_fra); mx1= dm(res_int);
my0=dm(pt1_fra); my1=dm(pt1_int);
call dpm;
ay0=dm(wt);
ay1=0;
ax0=dm(res_fra);
ax1=dm(res_int);
ar=ax0+ay0;
dm(temp_fra)=ar;
ar=ax1+ay1+c;
dm(temp_int)=ar;
si=dm(pt1_int);
sr=lshift si by 1(lo);
se=-15;
sr1=0;
mr0=0;
mr1= dm(pt1_fra);
ay1= dm(temp_int);
ay0= dm(temp_fra);
ddivs: AF=PASS SR1;
SI=SR0, AR=SR1 XOR AY1;
AX1=AR;
SR=LSHIFT MR0 BY 1(LO);
SR=SR OR LSHIFT MR1 BY 1(HI);
SR=SR OR LSHIFT AR (LO);
AR=PASS AF;
MR0=SR0;
MR1=SR1, SR=LSHIFT MR1 (LO);
SR=SR OR LSHIFT SI BY 1(LO);
SR=SR OR LSHIFT AR BY 1(LO);
CNTR=31;
AX0=AY1;
DO ddivu UNTIL CE;
AR=ABS AX1;
IF POS JUMP aqz;
AR=SR0+AY0;
SI=AR, AF=SR1+AY1+C;
JUMP ddivi;
aqz: AR=SR0-AY0;
SI=AR, AF=SR1-AY1+C-1;
ddivi: SR=LSHIFT MR0 BY 1(LO);
SR=SR OR LSHIFT MR1 BY 1(HI);
AR=AX0 XOR AF;
AX1=AR;
AR=NOT AX1;
SR= SR OR LSHIFT AR (LO);
MR0=SR0, AR=PASS AF;
MR1=SR1, SR= LSHIFT MR1 (LO);
SR= SR OR LSHIFT SI BY 1 (LO);
ddivu: SR= SR OR LSHIFT AR BY 1 (HI);
dm(pt_fra)=mr0; dm(pt_int)=mr1;
ax0=h#0ffff;
ay0=dm(pt1_int);
ar=ax0+ay0;
if ac jump qqq;
si=mr0;
sr=lshift si by 1()lo;
dm(pt_fra)=sr0;
qqq: mx0=dm(pt_fra); mx1= dm(pt_int);
my0=dm(nt_fra); my1=dm(nt_int);
call dpm;
mx0=dm(res_fra); mx1= dm(res_int);
my0=dm(et_fra); my1=dm(et_int);
call dpm;
ay0=dm(at1_fra);
ay1=dm(at1_int);
ax0=dm(res_fra);
ax1=dm(res_int);
ar=ax0+ay0;
dm(at_fra)=ar;
ar=ax1+ay1+c-1;
dm(at_int)=ar;
mx0=dm(eit2_fra); mx1= dm(eit2_int);
my0=dm(rrt); my1=0;
call dpm;
ax0=dm(res_fra);
ax1=dm(res_int);
dm(temp_fra)=ax0;
dm(temp_int)=ax1;
mx0=dm(mt_fra); mx1= dm(mt_int);
my0=dm(at_fra); my1=dm(at_int);
call dpm;
ax0=dm(temp1_fra);
ax1=dm(temp1_int);
ay0=dm(res_fra);
ay1=dm(res_int);
ar=ax0+ay0;
dm(temp_fra)=ar;
ar=ax1+ay1+c;
dm(temp_int)=ar;
ax0=dm(yt_fra);
ax1=dm(yt_int);
ay0=dm(temp_fra);
ay1=dm(temp_int);
ar=ax0-ay0;
dm(eiy_fra)=ar;
ar=ax1-ay1+c-1;
dm(eit_int)=ar;
ax0=dm(eit_fra);
ax1=dm(eit_int);
ay0=dm(yt2_fra);
ay1=dm(yt2_int);
ar=ax0+ay0;
dm(eit_fra)=ar;
ar=ax1+ay1+c;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -