已阅读5页,还剩169页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.,第三章DSP的软件结构,.,Introduction,汇编语言程序编写方法TMS320C54x的寻址方式TMS320C54x指令的表示方法TMS320C54x的指令系统汇编伪指令,.,汇编程序语法,TMS320的汇编程序包含汇编指令(伪指令,assemblerdirectives)、汇编语言指令(assemblylanguageinstructions)、宏指令(macrodirectives)和注释(comments)。,.,汇编程序源程序格式,label:mnemonicoperandlist;comment标号:助记符操作数;注释SYM1.set2;符号SYM1=2Begin:LD#SYM1,AR1;将2装入AR1,.,汇编程序语法,所有的语句必须由语句标号、空格、*号或;号开头。,语句标号不是必须的,如果用,就必须在第一列。,语句中的各部分之间,由一个或多个空格分开。,注释不是必须的。注释可以从第一列的*号或;号开头;如果不是从第一列开始,就必须用;号开头。,.,语句标号,由字母、数字、_、$组成,最多不超过32个字符,对大小写敏感,第一个字符不能是数字。后跟:。,.,助记符,助记符不允许从第一列开始,否则被认为是语句标号。,助记符可以是机器指令(如ABS,MPYU等)、伪指令(如.data,.list,.set等)、宏指令(如.macro,.var,.mexit等)和宏调用。,.,操作数,操作数可以是常数、符号或表达式。当操作数多于一个时,用逗号分开。汇编器允许指定常数、符号或表达式作为地址、立即数或间接地址。操作数前缀规定如下:#前缀:表示操作数为立即数。如:Label:ADD#123,B;表示将操作数123(十进制)和累加器B中的内容相加*前缀:操作数为间接地址。使用操作数的内容作为地址。如:Label:LD*AR4,A;操作数*AR4为间接地址,将AR4中的内容作为地址,然后将该地址的内容装入到指定的累加器A,.,常数,二进制常数(如01B或01b)八进制常数(如10Q或10q)十进制常数(如23)十六进制常数(如78H或78h)字符常数(如A或b)字符串(如“sampleprogram”),.,符号,符号用于作标号、常数和替代符号。符号名可长达200个字符,可由A-Z、a-z、0-9、$、_组成,且第一个字符不能是数字,符号对大小写敏感。符号仅在定义它的汇编程序中有效,除非用.global或.def伪指令声明为外部符号。例:K.set1024,.,表达式,表达式是一个常数、符号、或用算术运算符连接起来的常数或符号。表达式的值的范围为-32768到32767例:X.set50hsym1.set100h+X,.,可以用在表达式中的运算符,优先级,符号,含义,()+、-、!*、/、%+、-、=、!=sample所代表的就是一个dmadMVKD1000h,*AR5;将数据存储器1000h单元的数据传送到由AR5所指的存储单元中。1000h代表的是一个dmad,.,绝对地址寻址,程序存储器地址(pmad)寻址:用一个符号或一个数来确定程序地址空间中的一个地址例:MVPDtable,*AR5table所代表的就是一个pmad,.,绝对地址寻址,端口地址(PA)寻址用一个符号或常数来确定I/O口地址,PORTRPA,Smem;从PA单元端口读入一个数据,传送到Smem所指的数据单元中去,PORTWSmem,PA;从Smem所指的数据单元取出一个数据,传送到PA单元端口,PORTRFIFO,*AR5;把一个数从端口为FIFO的I/O口传送到AR5所指向的数据单元,.,绝对地址寻址,*(lk)寻址用一个符号或一个表示16位地址的长立即数来确定数据存储器中的一个地址例:LD*(BUFFER),A;把地址为BUFFER的数据单元中的数据装到AccA中,.,累加器寻址,用累加器中的数作为一个地址,可用来对存放数据的程序存储器寻址:,READASmem,WRITASmem,READA,把累加器A所确定的程序存储器单元中的一个字,传送到数据存储器单元Smem中。,WRITA,把数据单元Smem中的一个字,传送到累加器A确定的程序存储器单元。,.,直接寻址,TMS320C54的数据存储器分为512页,每页128字。设置一个数据页指针DP(DataPointer),用9-bit指向一个数据页,再加上一个7-bit的页内偏移地址,形成16-bit的数据地址,LD#4,DP;指向页4(0200h-027Fh),ADD9h,A;将数据页4中地址9h的数据加给AccA,.,直接寻址,.,间接寻址,8个辅助寄存器(AR0-AR7),由一个辅助寄存器指针(ARP3-bit)来指定,辅助寄存器算术单元(ARAU)作16-bit无符号数运算,决定一个新的地址,装入辅助寄存器中的一个,.,间接寻址,.,间接寻址,AR0-AR7的内容相当灵活,可以装入立即数,加上立即数,减去立即数;也可以从数据存储器装入地址;还可以作以下的变址寻址:,.,间接寻址,将该AR的内容加1或减1,再寻址(循环常用),将该AR的内容加上或减去AR0的内容,再寻址。,将该AR的内容逆向进位加上或减去AR0的内容,再寻址。,.,间接寻址,ADD*,8,A;将当前辅助寄存器所指的地址里的数据,左移8-bit后加给AccA,ADD*+,8,A,AR4;数据左移加给AccA后,当前辅助寄存器加1,选择辅助寄存器AR4,ADD*+,8,A;将当前辅助寄存器所指的地址里的数据,左移8-bit后加给AccA,当前辅助寄存器加1.,.,间接寻址,ADD*0+,8,A;执行加法后,将AR0的值加给当前辅助寄存器,ADD*BR0+,8,A;执行加法后,将AR0的值加给当前辅助寄存器,但反向进位,.,正向进位与反向进位,100100+100+1001000010,.,位倒序寻址,AR0=100AR1=000按AR1寻址后,将AR0加给AR1,反向进位,.,位倒序寻址,原序原地址位倒序后地址位倒序,00000000,10011004,20100102,30111106,41000011,51011015,61100113,71111117,.,存储器映射寄存器(MMR)寻址,存储器映射寄存器寻址用来修改存储器映射寄存器。存储器映射寄存器寻址既可以在直接寻址中使用,又可以在间接寻址中使用。STM#8888h,T;存储器映射寄存器寻址。T暂存器。,.,LDMMMR,dst;将MMR加载到累加器MVDMdmad,MMR;数据存储器向MMR传送数据MVMDMMR,dmad;MMR向指定地址传送数据MVMMMMRx,MMRy;MMRx向MMRy传送数据POPMMMR;将数据从栈顶弹至MMRPSHMMMR;将MMR数据压入堆栈STLMsrc,MMR;累加器低位存入MMRSTM#lk,MMR;长立即数lk存入MMR,C54x共有8条指令可以进行MMR寻址。,存储器映射寄存器(MMR)寻址,.,堆栈寻址,系统堆栈用来在中断和子程序期间自动存放程序计数器。它也能用来存放额外的数据项或传递数据值。处理器使用一个16-bit的存储器映射寄存器堆栈指针(SP)来对堆栈寻址,它总是指向存放在堆栈中的最后一个元素。在压入堆栈操作时,SP先减1,然后将数据压入堆栈;在弹出堆栈操作时,数据从堆栈中弹出后,SP再加1.PUSH;把一个数据存储器数据压入堆栈POP;从堆栈中弹出一个数据至数据存储器单元,.,堆栈寻址,C54x的堆栈是向低地址生长,并由16位堆栈指针SP管理。SP总是指向栈顶。,堆栈寻址:利用SP指针,按照先进后出的原则进行寻址。,当进栈操作时,SP先减1,然后数据进入堆栈;,当出栈操作时,数据先出栈,然后SP加1。,.,0001,0010,0011,0100,0101,0110,0001,0010,0011,0100,0101,0110,0011,sp,操作前的堆栈和SP,0010,sp,操作后的堆栈和SP,X1,X1,X2,图、堆栈操作对堆栈指针的影响,.,堆栈寻址,采用堆栈寻址的指令:,PSHDSmem;将Smem中的数据压入堆栈PSHMMMR;将MMR中的数据压入堆栈POPDSmem;将数据从栈顶弹至Smem中POPMMMR;将数据从栈顶弹至MMR中,.,指令,TMS320C54x的指令集有近两百条指令,按功能分为如下几类:,算术运算指令,逻辑运算指令,程序控制指令,装入和存储指令,.,算术运算指令,加法指令减法指令乘法指令乘加指令乘减指令双数/双精度指令特殊操作指令,.,加法指令,.,ADD*AR3+,A,.,ADD*AR3+,14,A,将AR3指向的地址单元0100h的内容1500h左移14位,得到5400000h加上1200h,将结果5401200h存在累加器A中。,.,ADDC*+AR2(5),A,将AR2加上5后指向的地址单元内容,并进位加到累加器A中,此指令计算0013h0004h1h0018h。,.,ADDM0123Bh,*AR4+,.,减法指令,.,乘法指令,.,MPY13,A,.,乘加和乘减指令,.,MAC*AR5+,A,.,MAC#345h,A,B,B=A+T*#345h,.,MAC*AR5+,*AR6+,A,B,B=A+(*AR5)*(*AR6)T=(*AR5),.,MACR*AR5+,A,A=rnd(A+T*(*AR5),.,MACR*AR5+,*AR6+,A,B,B=rnd(A+(*AR5)*(*AR6)T=(*AR5),.,MACA*AR5+,B=B+(*AR5)*A(3116)T=(*AR5)AR5=AR5+1,.,MACX0,Y0,AX:(R0)+,X0Y:(R4)+N4,Y0,这条指令命令DSP56300,将寄存器X0和Y0中的数相乘,结果加到AccA中,将寄存器R0所指的X存储器地址中的值装入寄存器X0,将寄存器R4所指的Y存储器地址中的值装入寄存器Y0,R0的值加1,寄存器N4的值加给R4,.,.bssx,4,1a0.word012ha1.word3211ha2.wordfe11ha3.wordff03h.sect“program”LD#x,AR1LD#0,A,AR1LD#a0,T,MAC*+,ALD#a1,TMAC*+,ALD#a2,TMAC*+,ALD#a3,TMAC*,A,.,逻辑运算指令,.,AND*AR3+,A,A=Az2=x1-y1;z3=x1*y1;z4=x2*y2。其中,x1=20,y1=54,x2=0.5,y2=-0.5837编写汇编源程序如下:.title“suanshu.asm”.mmregs.bssx1,1.bssx2,1.bssy1,1,.,.bssy2,1.bssz1,1.bssz2,1.bssz3_h,1.bssz3_l,1.bssz4,1v1.set014h;v1=20v2.set036h;v2=54v3.set04000h;v3=0.5v4.set0b548h;v4=-0.5837,.,start:LD#x1,DPST#v1,x1ST#v2,y1LDx1,A;x1AADDy1,A;A+Y1ASTLA,z1;保存ALz1LDx1,ASUBy1,ASTLA,z2,.,RSBXFRCT;准备整数乘法,FRCT=0LDX1,TMPYY1,A;x1*y1ASTHA,z3_h;乘法结果高16位在z3_h单元STLA,z3_l;乘法结果低16位在z3_l单元ST#v3,x2ST#v4,y2SSBXFRCT;准备小数乘法,FRCT=1LDx2,16,A;将x2加载到AHMPYAy2;x2*y2B,andy2TSTHB,z4;结果放到z4单元,.,例2:对数组x8=0,1,2,3,4,5,6,7进行初始化,.bssx,8.dataTable:.word0,1,2,3,4,5,6,7.textStart:STM#x,AR5RPT#7MVPDtable,*AR5+,.,例3:计算y=,.bssx,10STM#x,AR1STM#9,AR2LD#0,ALOOP:ADD*AR1+,ABANZLOOP,*AR2-,.,例3:计算y=,.bssx,10.bssy,1STM#x,AR1LD#0,ARPT#9;RPTZA,#9ADD*AR1+,ASTLA,y,.,例4:对数据x8中的每个元素加1,.bssx,8Begin:LD#1,16,BSTM#7,BRCSTM#x,AR4RPTBnext-1ADD*AR4,16,B,ASTHA,*AR4+next:LD#0,B,.,例5:求解.其中数据均为小数,且a1=0.3a2=0.2a3=-0.4
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年宜春幼儿师范高等专科学校单招职业技能考试题库及答案解析(名师系列)
- 2026年三峡电力职业学院单招职业倾向性考试题库带答案解析
- 2026年德阳农业科技职业学院单招职业技能测试必刷测试卷及答案解析(名师系列)
- 2026年山东科技职业学院单招职业技能测试必刷测试卷带答案解析
- 房屋改造工程协议书
- 房屋权利转移协议书
- 房屋漏水维修协议书
- 房屋续签租合同范本
- 房屋装修完工协议书
- 房屋购买权合同范本
- 【高分复习笔记】李博《生态学》笔记和课后习题(含考研真题)详解
- DB12T 1409-2024 集中供暖节能气象等级划分规范
- 课件医学模板教学课件
- 制造业产品质量售后服务方案
- 人教版(2024新版)七年级上册数学第三次月考模拟试卷(含答案)
- 2025届四川省绵阳是南山中学物理高一第一学期期中统考试题含解析
- 车辆维修服务项目技术规范书-采购技术文件规范模版
- 《JAVA程序设计A》教学大纲
- 2024年焊工(初级)证考试题库及答案(500题)
- 2024年全国甲卷高考历史试卷(真题+答案)
- 【比亚迪公司税收筹划实训报告6200字(论文)】
评论
0/150
提交评论