3DSP寻址及指令.pptVIP

  1. 1、本文档共51页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
3DSP寻址及指令

第三章 DSP软件体系 寻址方式与指令系统 宏指令 DSP开发基础知识 第3章 寻址方式与指令系统 3.1寻址方式 立即寻址 直接寻址 间接寻址 后两种为存储器寻址方式,即指令的操作数是在数据存储器中 立即寻址 操作数直接出现在指令代码中 如:#123、#0ABCDH、#00110B 1.短立即数寻址 (单字指令 ) 指令指令代码中用一个8-bit、9-bit或13-bit的常数作为操作数 例如,采用短立即寻址的RPT指令 8Bit RPT #63H ;63H=99 将紧跟其后的指令重复执行100次 指令代码如下: 2.长立即数寻址 (双指令字 ) 例如,ADD指令 ADD #000AH,2 ;将立即数000AH左移2位后与累加器内容相加结果存累加器中 指令代码如下: 直接寻址方式 64K分为512页×128字,由DP确定页码,对同一页操作数(DP同),可减少指令的代码字数。 指令中给出7位的页内偏移地址dma 7-bit dma作为偏移地址与数据页指针(DP)相结合共同形成16-bit的数据存储器实际地址: ; 比如,直接寻址访问7009H单元,7009H =0111 0000 0000 1001B LDP #0E0H ;DP指向E0H数据页,地址为7000H~707FH ADD 9H,5 ;ADD指令代码及地址形成过程: 例如,X+Y .bss x,1 ;定义1个字的变量X .bss y,1 ? .text LDP #x ;将变量X的高9位地址送DP LACC x ;将X内容送ACC ADD y 直接寻址方式 在使用直接寻址方式时,对DP要特别注意以下几点: DSP复位时并没有初始化DP内容,用LDP指令确定当前数据页。 如果程序需要访问不同的数据页,则每当访问新的数据页前,必须先修改DP值,以确保访问正确的数据页。 程序中如果只访问同一个数据页,只需要在程序前段装载DP一次即可。? 间接寻址方式 8个辅助寄存器(AR0-AR7)和辅助寄存器算术运算单元(ARAU)提供了功能强大而灵活的间接寻址操作方式。 在间接寻址中,64K数据空间任意单元都可通过一个辅助寄存器AR中的16-bit地址进行访问 AR0-AR7作为间接寻址寄存器,ARP指出当前AR ARAU根据指令的要求可以对辅助寄存器的内容进行运算、结果送(DRAB)或 (DWAB)、修改ARP ’C2xx提供 4 种间接寻址方式: * ——不增量不减量。 *+或*- ——AR加1或减1。 *0+或*0- ——AR增加或减去一个指定的量(或称为变址量),AR0存该量。 *BR0+或*BR0- ——使用逆向进位增加或减去一个指定的量, AR0存该量。(用于FFT) 共7个间址符号:* *+ *- *0+ *0- *BR0+ *BR0- 每种间接寻址都是由ARP所指的当前辅助寄存器给出指令操作数地址;不同的是指令执行完后当前辅助寄存器改变方式不同,就像C语言的p++ ++p,此处先寻址后改变AR内容 间接寻址举例: 例1:MAR *,AR2 ;选择AR2作为当前辅助寄存器,即ARP=2 例2: LAR AR2,#2000H ;将2000H→AR2 ADD *+,8;当前辅助寄存器内容所指存储单元(即2000H)的值左移8位后加到ACC,并将当前辅助寄存器内容加1(即AR2=2001H) 例3:ADD,*BR0+,AR5;当前辅助寄存器的内容加到ACC,并将当前辅助寄存器内容与AR0的内容按反向进位加,且指定该指令结束后AR5为当前辅助寄存器。 例3: ADD,*BR0+,AR5 ;反向进位加过程: 假设执行前:ARP=2,(AR2)=2000H,(AR0)=04H (2000H)=(ACC)=1 ,(AR5)=2010H,(2010H)=7 执行后:ARP=5,(AR2)=2004H,(AR0)=18H (ACC)=? 例4: ADD,*BR0+,AR5 ;执行后(ACC)=? 例5: ADD * ;执行后(ACC)=? 理解位反转寻址或位倒序寻址 比如,对上述8点(N)的FFT,输入数据混序存放在8010H(地址必须是点数N的倍数)开始的数据单元 ARP=2,(AR2)=8010H,(AR0)= 4(N/2) IN *BR0+,Port 得到第一个操作数存放在8010H 第二个数地址为8014H 第三个数地址为8012H ? 另外还有: 累加器寻址 ;操作数在累加器中 堆栈寻址等 ;PUSH和POP指令 C2??的指令集 ‘C2?

您可能关注的文档

文档评论(0)

ligennv1314 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档