- 1、本文档共73页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第4章 TMS320C54x的指令系统4.4-4.7
2003.2.16 4.4 寻址方式 指令的寻址方式 TMS320C54x数字信号处理器共有7种寻址方式,如下表所示。 表4-8 TMS320C54x的数据寻址方式 4.4.1 立即寻址 立即数的数值形式:P124 ① 短立即数。3、5、8、9位,单字指令; ② 长立即数。16位,双字指令。 4.4.2 绝对寻址 1.数据存储器寻址 MVDK Smem,dmad MVDM dmad,MMR MVKD dmad,Smem MVMD MMR,dmad 2.程序存储器寻址 FIRS Xmem,Ymem,pmad MACD Smem,pmad,src MACP Smem,pmad,src MVDP Smem,pmad MVPD pmad,Smem 3.端口(PA)寻址 4. *(lk)寻址 4.4.3 累加器寻址 4.4.4 直接寻址 4.4.5 间接寻址 间接寻址数据地址形成框图 表4-9 单数据存储器操作数的间接寻址类型 在卷积、自相关和FIR滤波器等许多算法中,都需要在存储器中设置循环缓冲区。此时,循环缓冲区是一个滑动窗口,包含着最近的数据,如果有新的数据到来,它将覆盖最早的数据。 例:在循环模式下,使用MAC指令实现16阶256点FIR滤波器,代数式为 4.4.6 存储器映像寄存器寻址 STM #FF25H,AR1 STLM A,*AR1 ;A低阶字送到什么单元? STL A,*AR1 ;A低阶字送到什么单元? AR1中的内容为? RSBX CPL LD #1FEH,DP STLM A,25H ;A低阶字送到什么单元? STL A,25H ;A低阶字送到什么单元? 4.4.7 堆栈寻址 寻址方式练习 DAT0 .set 00H DDAT0 .set 2004H PDAT0 .set 1f00H LD #40h,DP;置数据页为2000h~207Fh ST #1234h,DAT0 ST #5678h,*(DDAT0) MVDK DAT0,DDAT0 MVDP DAT0,PDAT0 4.5 汇编伪指令 TMS320C54x汇编伪指令是汇编语言程序的一个重要组成内容,给程序提供数据、控制汇编过程。服务于汇编器,不产生机器代码。 4 .5 .1 段定义伪指令 C54x DSP汇编源文件以段(Section)为基本单元构成,一个程序文件由若干段构成,每一段由若干语句(Statement)构成。 .bss(未初始化段) .usect(未初始化段) .data(已初始化段) .sect(已初始化段) .text(已初始化段) 1. 未初始化段的段定义伪指令 .bss和 .usect命令建立未初始化段。未初始化段就是TMS320C54x存储器中的保留空间,它通常被定位在RAM区,留出一段空间以便在运行时存放变量的值。 这两条命令的句法如下: .bss 符号,字数 符号 .usect “段名”,字数 2. 已初始化段的段定义伪指令 .text、.data和 .sect命令建立已初始化段。已初始化段包括可执行代码或已初始化的数据。这三条命令的句法如下: .text .data .sect “段名” .text后是汇编语言程序的正文。经汇编后,.text后的是可执行程序代码,一般存放于程序存储器区域中。 .data后是已初始化数据。 .sect建立包含代码和数据的自定义段,常用于定义中断向量表。 3. 已命名的段(自定义段)定义伪指令 已命名的段是用户自己创建的,可以同默认的.text、.data、.bss段一样使用,但它们之间是单独汇编的。 4. 段定义伪指令举例 在此例中,一共建立了5个段: .text 段内有10个字的程序代码; .data 段内有7个字的数据; Vectors 是一个用 .sect命令建立的自定义段, 段内有2个字的已初始化数据; .bss 在存储器中为变量保留10个存储单元; newvars 是一个用 .usect命令建立的自定义段, 它在存储器中为变量保留8个存储单元。 目标代码图
文档评论(0)