第4章 节 DSP的程序设计 《DSP原理及实践应用》电子课件.pptx

第4章 节 DSP的程序设计 《DSP原理及实践应用》电子课件.pptx

  1. 1、本文档共209页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第4章 节 DSP的程序设计 《DSP原理及实践应用》电子课件.pptx

内容提要 本章着重介绍汇编语言的概述, TMS320C54x系列的指令系统,COFF文件,汇编语言及C语言程序设计的方法。其内容有: ● 汇编语言的格式 ● 寻址方式 ● TMS320C54x的指令表示方法 ● TMS320C54x的指令系统 ● COFF文件 ● 汇编语言程序设计的方法 ● 及C语言程序设计的方法; 4.1 汇编语言的概述;4.1.1 汇编语言的格式;1、标号区 所有汇编指令和大多数汇编伪指令前面都可以带标号,供本程序或其它程序调用。标号可以长达32个字符,由A~Z、a~z、0~9、_和$符号组成,且第一个字符不能是数字。使用标号时,标号的值是段程序计数器(SPC)的值。当标号独自占一行时,SPC值不增加,标号指向下一行指令的地址。 例如: Start: LD #1234H,16,A;将1234H左移16位后加载到累加器A中 假定上述汇编指令经编译后在输出的列表文件中为如下的形式: 35 000006 F062 LD #1234H,16,A 第一列表示行号,第二列表示段程序计数器(SPC)的值,第3列表示SPC所指向的存储单元中的值。上述语句中,标号Start的值即为000006。 ;2、助记符区 助记符用来表示指令所完成的操作,助记符区不能从第一列开始,否则会被编译器认为是标号。助记符可以是汇编指令助记符(如ABS、STH等)、汇编伪指令(如.data、.list等)、宏伪指令(如.macro等)以及宏调用。 ;数据形式;;表4-2 寻址方式缩略语;4.2.1.1 立即寻址 立即寻址主要用于初始化,在指令中包含有指令所需要的一个固定的立即数。立即数有短立即数和长立即数两类。短立即数长度为3,5,8或9位,可以放在一个字长的指令中;长立即数长度为16位,应该放在两个字长的指令中。立即数的长度由使用的指令类型决定。表4-3列出了可以包含立即数的指令,并指出了立即数的位数。 ;表4-3 支持立即数的指令 ;在立即寻址方式指令中,数字或符号前面加“#”,表示该数字或符号是一个立即数,以同地址相区别。例如,将一个十六进制数9000H允许符号位扩展装入累加器B的指令为 SSBX SXM;SXM=1 LD #9000H,B 指令执行前、后的结果如下: SXM为符号扩展方式位,若为0,表示禁止符号位扩展;若为1则允许符号位扩展。 ;4.2.1.2 绝对寻址 绝对寻址的特点是指令中包含要寻址的存储单元的16位地址。在绝对寻址中,一般用“*”来表示后面的是地址。例如: (1)MVKD 2000H,*(2001H) ;将数据存储器地址为2000H单元中的数据 ;复制到数据存储器地址为2001H的单元中 ;(2)MVPD 1000H,*AR2 ;将程序存储器地址为1000H单元中的数据 ;复制到寄存器AR2的值为地址的数据存储器单元中;(3)PORTR 0100H,*AR3 ;把一个数据从端口地址为0100H的I/O口 ;复制到寄存器AR3的值为地址的数据存储器单元中 ;(4) LD *(1000H),A ;将数据存储器地址为1000H单元中的数据装入累加器A中 ;4.2.1.3 累加器寻址 累加器寻址是将累加器中的值作为地址去读/写程序存储器。仅有两条指令READA、WRITA可以采用累加器寻址。例如: (1)READA 3000H ;将累加器A中的值作为地址所确定的程序存储器单元 ;中的数据传送到数据存储器地址为3000H的单元中 ;(2)WRITA 3000H ;将数据存储器地址为3000H的单元中的数据传送到 ;累加器A中的值作为地址所确定的程序存储器单元 ;4.2.1.4 直接寻址 直接寻址利用数据指针和堆栈指针进行寻址。其特点是16位的数据存储器地址由基地址和偏移地址共同构成。其中基地址由数据指针DP或堆栈指针SP提供,偏移地址由指令中所包含的数据存储器地址的低7位提供。状态寄存器ST1中的CPL位可以选择采用DP还是SP作为基地址来生成实际的数据存储器地址。若CPL=0,则9位数据指针(状态寄存器STO的低9位)和指令中的7位地址组成16位数据存储器地址;若CPL=1,则16位的堆栈指针和指令中的7位地址值相加后的和组成16位数据存储器地址。具体如图4-1和图4-2所示。 ; 图4-1 CPL=0时,16位数据存储器单元的地址 图4-2 CPL=1时,16位数据存储器单元的地址;以DP为基地址的直接寻址把整个数据存储空间分成512页,每页有128个存储单元。由状态寄存器STO的低9位(即数据指针)决定是512页中的哪一页,由指令中的低7位决定是该页中的哪一个单元。 直接寻址的特点是在变量或常数前加符号“@”

您可能关注的文档

文档评论(0)

yuzongxu123 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档