- 1、本文档共33页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
dsp6课件.ppt
* * * * 第六章 汇编语言程序设计 第六章 汇编语言程序设计 一 、程序的控制与转移 ’C54x具有丰富的程序控制与转移指令,利用这些指令可以执行分支转移、循环控制以及子程序操作。基本的程序控制指令有: B CALL RET BACC CALA BC CC RC 分支转移指令改写PC,以改变程序的流向。子程序调用指令将一个返回地址压入堆栈,执行返回指令时复原。 条件算符: 循环操作: BANZ 例:计算 ,主要程序如下 .bss x,5 .bss y,1 STM #x,AR1 STM #4,AR2 LD #0,A Loop: ADD *AR1+,A BANZ Loop,*AR2- STL A,y 比较操作: CMPR CMPR指令是测试所规定的AR寄存器(AR2-AR7)与AR0的比较结果.如果所给定的测试条件成立,则TC位置1.然后,条件分支转移指令就可以根据TC位的状态进行分支转移. 例: STM #5,AR1 STM #10,AR0 Loop: … *AR1+ … CMPR LESS,AR1 BC loop,TC 二、堆栈的使用方法 ’C54x 提供一个用16位堆栈指针(SP)寻址的软件堆栈。当向堆栈中压入数据时,堆栈从高地址向低地址增长。堆栈指针是减在前、加在后,即先SP-1再压入数据,先弹出数据后SP+1。 三、加、减法和乘法运算 例:z=x+y-w LD @x,A ADD @y,A SUB @w,A STL A,@z 例:y=mx+b LD @m,T MPY @x,A ADD @b,A STL A,@y 例:y=x1*a1+x2*a2 LD @x1,T MPY @a1,B LD @x2,T MAC @a2,B STL B,@y STH B,@y+1 例: STM #a,AR1 STM #x,AR2 STM #2,AR3 LD *AR1+,T MPY *AR2+,A Loopl LD *AR1+,T MPY *AR2+,B MAX A BANZ loopl,*AR3- 四、重复操作 ’ C54x有3条重复操作指令:RPT(重复下一条指令)、RPTZ(累加器清0并重复下条指令)和RPTB(块重复指令)。利用这些指令进行循环比用BANZ指令要快得多。 重复执行单条指令 重复指令RPT或RPTZ允许重复执行紧随其后的那一条指令。 如果要重复执行n次,则重复指令中应规定计数值为n-1。 由于要重复的指令只需要取指一次,与利用BANZ指令进行循环指令相比,效率要高得多。 注:在执行重复操作期间,CPU是不响应所以的中断的(RS除外)。 例:对一个数组进行初始化:x[5]={0,0,0,0,0} .bss x,5STM #x,AR1LD #0,ARPT #4STL A,*AR1+ 或者.bss x,5STM #x,AR1RPTZ A,#4STL A,*AR1+ 块程序重复操作 块程序重复操作指令RPTB将重复操作的范围扩大到任意长度的循环回路。要先用STM指令将所规定的迭代次数加载到块重复计数器BRC. RPTB指令的特点是:对任意长的程序段的循环开销为零;其本身是一条2字4周期指令;循环开始地址RSA是RPTB指令的下一行,结束地址REA由RPTB指令的操作数规定。 例:对数组x[5]中的每个元素加1。 .bss x,5begin: LD #1,16,B STM #4,BRC STM #x,AR4 RPTB next-1 ADD *AR4,16,B,A STH A,*AR4+next: LD #0,B … 循环的嵌套 RPT指令执行时用到了RPTC寄存器,RPTB指令用到了BRC、RSA和REA寄存器。由于两者使用了不同的寄存器,因此RPT指令可以嵌套在RPTB指令中,实现循环的嵌套。 当然,只要保存好有关的寄存器,RPTB指令也可以嵌套在另一条RPTB指令中,但效率并不高。 五、数据块传送 ’C54x有10条数据传送指令,这些指令的特点如下: 传送速度比加载和存储指令要快。 传送数据不需要通过累加器。 可以寻址程序存储器。 与RPT指令相结合(重复时,这些指令都变成单周期指令),可以实现数据
文档评论(0)