- 1、本文档共52页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
dsp第5讲
第5讲 汇编语言程序设计 河海大学计信学院通信工程系 ’C54x汇编语言程序设计的一些基本方法 程序的控制与转移 堆栈的使用方法 加、减法和乘法运算 重复操作 数据块传送 双操作数乘法 长字运算和并行运算 小数运算 除法运算 浮点运算 5.1 程序的控制与转移 表5-1 基本的程序控制指令 条件算符 组间条件只能“或”; 第1组两类条件(以列为类)可以“与”/“或”,但累加器必须是同一个; 第2组三类条件可以各选一个条件“与”/“或”; 同组同类条件不能选择两个。 例1 条件分支转移 (相“与”条件) RC TC ;TC=1返回,TC=0继续 CC sub, BNEQ ;B≠0调用sub,B=0继续 BC new, AGT, AOV ;A0且溢出,转new, ;否则继续 例1 条件分支转移(相“或”条件) BC new, AGT, AOV BC new, AGT BC new, AOV 循环操作:BANZ 例2 计算y=∑xi(i=1,…5),主要程序如下: .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 指定的ARn寄存器(n=1~7)与AR0比较,测试条件成立TC置1。 例3 比较操作后条件分支转移 STM #5, AR1 STM #10, AR0 loop: … … MAR *AR1+ … … CMPR LT, AR1 BC loop, TC 5.2 堆栈的使用方法 堆栈的设置: size .set 100 stack .usect ”STK”, size STM #stack+size, SP 堆栈用法: CALL:SP-1-SP, PC+1(N)压入堆栈 RET:弹出PC,SP+1-SP 注意:在链接命令文件中要为堆栈区定位,如: STK: DARAM PAGE 1 5.3 加、减法和乘法运算 例4 计算z=x+y-w LD @x, A ADD @y, A SUB @w, A STL A, @z 例5 计算y=mx+b LD @m, T MPY @x, A ADD @b, A STL A, @y 例6 计算y=x1·a1+x2·a2 LD @x1, T MPY @a1, B LD @x2, T MAC @a2, B STL B, @y STH B, @y+1 例8 在第3章例1(P107)的4项乘积 aixi (i=1,2,3,4)中找出最大值,并存放在累加器A中 STM #a, AR1 STM #x, AR2 STM #2, AR3 LD *AR1+, T MPY *AR2+, A loop1: LD *AR1+, T MPY *AR2+, B MAX A BANZ loop1, *AR3- 5.4 重复操作 ’C54x有3条重复操作指令: RPT (重复下一条指令) RPTZ (累加器清0并执行下一条指令) RPTB (程序块重复指令) 利用上述指令进行循环比用BANZ指令要快得多。 重复执行单条指令 例9 数组初始化:x[5]={0,0,0,0} .bss x, 5 STM #x, AR1 LD #0, A RPT #4 STL A, *AR1+ 或者: .bss x, 5 STM #x, AR1 RPTZ A, #4 STL A, *AR1+ 关于重复单条指令 重复指令只需取指1次,进行循环比BANZ效率高; 重复执行n次,指令中计数值设为n-1; 重复操作使多周期指令(MAC、MVDK、MVPD等)变成单周期指令; 重复操作期间,CPU不响应中断(RS除外). 程序块重复操作 RPTB将重复操作的范围扩大到任意长度的循环路,循环开销为0; 循环起始地址为下一行的地址; 块重复操作前,必须先将迭代次数加载到BRC (块重复计数器); RPTB指令可以响应中断。 例10 对数组x[5]中的每个元素加1。 .bss x, 5 begin: LD #1, 16, B STM #4, BRC ;BRC-4 STM #x, AR4 RPTB next-1 ;循环结束地址
文档评论(0)