预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共35页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

书名:数字信号处理技术及其应用 ISBN:7-111-16016-9 作者:刘丽钧 出版社:机械工业出版社 本书配有电子课件第5章汇编语言程序设计举例: 5.1数据块传送 例1:将数组X[5]={1,2,3,4,5}初始化 .data TAL:.word1,2,3,4,5 .sect“.vectors” BSTART .bssx,5 .text START:STM#x,AR5 RPT#4 MVPDTAB,*AR5+例2:编写一段程序将数据存储器中的数组X[20]复制到 数组Y[20]中。 .bssx,20 .bssy,20 … STM#x,AR2 STM#y,AR3 RPT#19 MVDDAR2+,AR3+5.2加减法和乘法运算 例3:编写完成Z=X+Y-W的功能 LD@x,A;直接寻址 ADD@y,A SUB@w,A;A=A-@w STLA,@z 例4:编程实现y=mx+b的功能 LD@m,T MPY@x,A ADD@b,A STLA,@y例6:找出y=ai•xi(i=1,2,3,4)中乘机项ai•xi的最大值, 并存入累加器A中。 STM#a,AR1 STM#x,AR2 STM#2,AR3 LD*AR1+,T MPY*AR2+,A Loop1:LD*AR1+,T MPY*AR2+,B MAXA BANZloop1,*AR3-5.3重复操作 例7:对一个数组初始化:X[5]={0,0,0,0,0} .bssx,5 STM#x,AR1 LD#0,A RPT#4 STLA,*AR1+ 或采用如下方法: .bssx,5 STM#x,AR1 RPTZA,#4 STLA,*AR1+ 注意:执行重复操作时不响应任何中断例8:对数组X[5]中的每个元素加1 .bssx,5 Begin:LD#1,16,B STM#4,BRC STM#X,AR4 RPTBnext-1 ADD*AR4,16,B,A STHA,*AR4+ Next:LD#0,B ……5.4程序的控制与转移 例9:RCTC CCsub,BNEQ BCnew,AGT,AOV 例10:计算 y=xi(i=1~5) .bssx,5 .bssy,1 STM#x,AR1 STM#4,AR2 LD#0,A Loop:ADD*AR1+,A BANZloop,*AR2- STLA,@y例11:STM#5,AR1 STM#10,AR0 Loop:…… *AR1+ …… CMPRLT,AR1;若(AR1)<(AR0),则TC=1 BCloop,TC;若TC=1,则转LOOP5.5堆栈的使用方法 在数据RAM空间开辟一个堆栈区,设置如下: Size.set100 Stack.usect”STK”,size STM#stack+size,SP … …例12:编写实现方程y=mx+b的程序例13:编写完成y=aixi(i=1~20)例14:进一步优化例13的程序: STM#x,AR2 STM#a,AR3 RPTZA,#19 MAC*AR2+,*AR3+,A STHA,@y STLA,@y+1例15计算 Z32=X32+Y32并行运算指令有4种:并行加载和乘法指令,并行加载和存 储指令,并行存储和乘法指令,并行存储和加/减法指令。例17编写计算Z64=W64+X64-Y64的程序段 W、X、Y和结果Z都是64位,它们都由两个32位的长字组成。利用长字指令完成64位数的加/减法程序段: DLD@w1,A;A=w1w2 DADD@x1,A;A=w1w0+x1x0,产生进位C DLD@w3,B;B=w3w2 ADDC@x2,B;B=w3w2+x2+C ADD@x3,16,B;B=w3w2+x3x2+C DSUB@y1,A;A=w1w0+x1x0-y1y0,产生借位C’ DSTA,@z1;z1z0=w1w0+x1x0-y1y0 SUBB@y2,B;B=w3w2+x3x2+C-y2-C’ SUB@y3,16,B;B=w3w2+x3x2+C-y3y2-C’ DSTB,@z3;z3z2=w3w2+x3x2+C-y3y2-C’ 32位乘法运算 乘法算式如下: x1x0SU ×y1y0SU x0×y0U×U y1×x0S×U x1×y0S×U Y1×x1S×S w3w2w1w0SUUU 其中,S---带符号数,U---无符号数例18:编写计算W64=X32*Y32的程序段 STM#x0,AR2 STM#y0,AR3 LD*AR2,T;T=x0 MPYUAR3+,A;A=uy0*ux0 STLA@w0;w0=ux0*uy0 LDA,-16,A;A=A>>16 MACSU*AR2+,*AR3-,A;A+=y1*ux0 MACSU*AR3+,*AR2,A;A+=x1*uy0 STLA