TMSCxDSP寻址方式PPT学习教案_第1页
TMSCxDSP寻址方式PPT学习教案_第2页
TMSCxDSP寻址方式PPT学习教案_第3页
TMSCxDSP寻址方式PPT学习教案_第4页
TMSCxDSP寻址方式PPT学习教案_第5页
已阅读5页,还剩84页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、会计学1 TMSCxDSP寻址方式寻址方式PPT课件课件 4.2.1 汇编语言源程序格式汇编语言源程序格式 C54x DSP汇编语言源程序由源说明语句组成,包含汇编语言指令、汇编伪指令、宏伪指令和注释等, 注:一般一句程序占据编辑器的一行。由于汇编器每行最多只能读200个字符,因此源语句的字符数不能超过200个,一旦长度超过200个字符,汇编器将自行截去行尾的多余字符并给出警告信息。如果截去的是注释,那么不影响程序的正确执行;但如果截去了语句的执行部分,则程序会编译出错或错误执行。 第1页/共89页 汇编语言语句格式可以包含4个部分:标号域、指令域、操作数域和注释域。以助记符指令为例,汇编语言

2、语句格式如下: 标号: 指令操作数列表 ;注释, 其中 内的部分是可选项。 在编写汇编指令时,必须遵循以下格式: (1) 语句必须以标号、空格、星号或分号开始。 第2页/共89页 (2) 标号为可选项。若要使用标号,则必须从第使用标号,则必须从第1列开始列开始。标号长度最多为32个字符,由AZ,az,09,_和$等组成,但第1个字符不能为数字。标号后可以跟一个冒号(:),但并不作为标号的一部分。 (3) 每个域必须由每个域必须由1个或多个空格分开个或多个空格分开,制表符等效于空格。 (4) 注释是可选项,开始于第开始于第1列的注释须用星号或分号列的注释须用星号或分号(*或;或;)标示标示,但在

3、其他列开始的注释前面只能标分号。 第3页/共89页 (5) 指令域一定不能一定不能从第从第1列开始列开始,否则将被视为标号。指令域包括以下操作码之一:助记符指令、汇编伪指令(如.data,.set)、宏伪指令(如.var,.macro)和宏调用。 (6) 操作数域为操作数的列表,汇编器允许指定常数、符号或表达式作为地址、立即数或间接寻址。 当操作数为立即数时,使用当操作数为立即数时,使用#符号作为前缀;操作数为间接寻址时,使用符号作为前缀;操作数为间接寻址时,使用*符号作为前缀,将操作数的内容作为地址。符号作为前缀,将操作数的内容作为地址。 第4页/共89页 表3-1 寻址指令中用到的缩写符号

4、及其含义 缩写符号含义 Smem 16位单数据存储器操作数 Xmem 在双操作数指令及某些单操作数指令中所用的16位双数据存储 器操作数,从DB总线上读出 Ymem 在双操作数指令中所用的16位双数据存储器操作数,从CB总线 上读出;在读同时并行写的指令中表示写操作数 dmad 16位立即数数据存储器地址(065535) pmad 16位立即数程序存储器地址(065535) PA 16位立即数I/O口地址(065535) src 源累加器(A或B) dst 目的累加器(A或B) lk 16位长立即数 4.3 寻址方式寻址方式 第5页/共89页 C54x DSP的寻址方式分为数据寻址和程序寻址两

5、种。 1数据寻址 C54x DSP提供了7种基本的数据寻址方式: * 立即数寻址 操作数是一个立即数,包含在指令中; * 绝对寻址 指令中有一个固定的地址,即使用16位的地址寻址单元; * 累加器寻址 把累加器内的内容作为地址去访问程序存储器的一个单元; 第6页/共89页 * 直接寻址 指令中的7 bit是一个数据页内的偏移地址,而所在的数据页则由数据页指针DP或SP决定,该偏移值加上DP和SP的值决定了在数据存储器中的实际地址; * 间接寻址 按照辅助寄存器中的地址访问存储器; * 存储器映射寄存器寻址 通过寻址存储器映射寄存器实现寻址; * 堆栈寻址 把数据压入和弹出系统堆栈。 第7页/共

6、89页 1) 立即数寻址 在立即数寻址中,指令里包括了立即操作数。 在立即数寻址方式的指令中,应在数值或符号前面加一个“”号来表示一个立即数,否则就会被认为是一个地址。 例如:把立即数80H装入累加器A,其正确的指令为: LD80H,A 一条指令中可对两种立即数编码, 一种是短立即数(3、5、8或9位),短立即数指令编码为一个字长。 另一种是16位的长立即数,16位立即数的指令编码为两个字长。 第8页/共89页 支持立即数的指令支持立即数的指令 3位或5位立即数8位立即数9位立即数16位立即数 LD FRAME LD RPT LD ADD ADDM AND ANDM BITF CMPM LD

7、MAC OR ORM RPT RPTZ ST STM SUB XOT XORM 0K38 0K532 0K82560K9R,R值必须要放入BK。 第54页/共89页 例如,一个长度为R=31的循环缓冲区必须开始于最低5位为零的地址(即XXXX XXXX XXX0 0000B),且必须将R值加载到BK寄存器中。 循环缓冲区的有效基地址(EFB)定义了缓冲区的起始地址,也就是辅助寄存器(ARx)低N位设为0后的值。循环缓冲区的尾地址(EOB)定义了缓冲区的底部地址,它通过用BK的低N位代替ARx的低N位得到。 第55页/共89页 循环缓冲区的指示index就是当前ARx的低N位,步长step就是一

8、次加到辅助寄存器或从辅助寄存器中减去的值。 循环寻址的算法为:循环寻址的算法为: If 0 index + step BK index = index + step Else if index + step BK index = index + step-BK Else if index + step 0 index = index + step + BK 第56页/共89页 使用循环寻址时,必须遵循以下三个原则:使用循环寻址时,必须遵循以下三个原则: * 循环缓冲区的长度R小于2N,且地址从一个低N位为0的地址开始; * 步长小于或等于循环缓冲区的长度; * 所使用的辅助寄存器必须指向缓冲区

9、单元。 位反转寻址主要用于FFT算法中,这种寻址方式可以大大提高程序的执行速度和存储器的利用效率。使用时,AR0存放的整数值为FFT点数的一半,另一个辅助ARx指向存放数据的单元。位反转寻址位反转寻址将AR0加到辅助寄存器中加到辅助寄存器中,地址以位反转方式产生。也就是说,两者相加时,进位是从左向右反向传播的两者相加时,进位是从左向右反向传播的,而不是通过加法中的从右向左传播的。 第57页/共89页 例例4.61 0300 AR4 0301 FF FFFF FFE0 B Before Instruction 0 FRCT After Instruction 00 0000 0020 B 0 F

10、RCT 0001 AR0 0001 AR0 AR2 01FF 01FE AR2 AR4 Data Memory 0010 01FFH 0010 01FFH 0002 0300H 0002 0300H MPY *AR2-,*AR4+0%,B (Xmem)(Ymem)dst (Xmem) 第58页/共89页 (2) 双操作数间接寻址 双数据存储器操作数寻址用于完成2次读操作或者1次读和1次存储并行的操作。采用这种方式的指令代码都为1个字长,并且只能以间接寻址方式工作。因为只有2位可以用来选择辅助寄存器,所以只有4个辅助寄存器可以使用(AR2AR5)。 表4.9列出了双数据存储器操作数间接寻址的句法

11、和功能。 第59页/共89页 表表4.9 双数据存储器操作数间接寻址的句法和功能双数据存储器操作数间接寻址的句法和功能 句 法 功 能 说 明 *ARx addr=ARx ARx 为数据存储器地址 *ARx- addr=ARx ARx=ARx-1 访问完成后,ARx 中的地址减 1 *ARx+ addr=ARx ARx=ARx+1 访问完成后,ARx 中的地址加 1 *ARx+0% addr=ARx ARx=circ(ARx+AR0) 访问完成后,ARx 加上 AR0 的值并进行循环寻址 第60页/共89页 6) 存储器映射寄存器寻址 这种寻址方式用来修改存储器映射寄存器的内容,但是不会影响当

12、前的DP或SP值。由于不需要对DP和SP进行操作,因此这种寻址方式往寄存器写数据所占用的开销是最小的。存储器映射寄存器寻址既可以在直接寻址中使用,也可以在间接寻址中使用。具体的地址产生方法为: * 当采用直接寻址方式时,数据存储器地址的低7位来自指令字。不管当前DP或SP值为多少,数据地址的高9位都被置零。 * 当采用间接寻址方式时,数据存储器地址的低7位来自当前辅助寄存器的低7位,数据地址的高9位置零。当操作完后,辅助寄存器的高9位都被强制清零。 第61页/共89页 如果AR1指向一个存储器映射寄存器,AR1的值为FF25H,那么AR1最低7位为25H,所指示的数据存储器地址为0025H。由

13、于定时器周期寄存器PRD的地址为0025H,因此,AR1就指向了定时器周期寄存器。执行完毕后,存放在AR1中的值改变为0025H。 这种寻址方式除了能够修改寄存器以外,数据第0页中的便笺式RAM的任意单元也可以采用存储器映射寄存器寻址来进行修改。 第62页/共89页 C54x DSP只有8条指令能使用存储器映射寄存器的寻址方式: * LDM MMR,dst * MVDM dmad,MMR * MVMD MMR,dmad * MVMM MMRx,MMRy * POPM MMR * PSHM MMR * STLM src,MMR * STM #1k,MMR 第63页/共89页 (4) LDM 语

14、法:助记符方式 表达式方式 LDM MMR,dst dst = MMR dst =mmr(MMR) 执 行过程:(MMR)dst 不影响任何状态位。 功能描述:把存储器映射寄存器MMR中的值装入到目的累加器dst中。不管DP的当前值或ARx的高9位的值是多少,都把有效地址的高9位清0,以指定为在数据页0中。该指令不受SXM的影响。 第64页/共89页 LDM AR4,A AR4 00 0000 1111 A Before Instruction EEEE AR4 After Instruction 00 0000 EEEE A EEEE 例例4.12 (MMR)dst执执 行过程:行过程: 第

15、65页/共89页 例例4.23 STLM A,BRC Before Instruction After Instruction FF 1234 5678 A 8765 BRC(1AH) FF 1234 5678 A 5678 BRC 执行过程执行过程:(src(15-0)MMR 第66页/共89页 语 法:助记符方式 表达式方式 STLM src,MMR MMR = src mmr(MMR)= src 执行过程:(src(15-0)MMR 该指令不影响任何状态位。 功能描述:把源累加器src的低端(150位)存放到存储器映射寄存器MMR中。无论DP的当前值或ARx的高9位是多少,都对有效地址的

16、高9位清0。指令允许src存放在数据第0页中的任何一个存储器单元中而不必修改状态寄存器ST0中的DP域。 (5) STLM 第67页/共89页 7) 堆栈寻址 在调用子程序或者中断时,系统堆栈能够自动保存程序计数器PC中的值,它也可以用来保存程序当前的环境或要传递的数据。C54x DSP的堆栈存放数据是从高端地址向低端地址进行的,它用1个16位的堆栈指针SP来管理堆栈。对堆栈寻址,SP总是指向堆栈中最后存入的数据单元。下面下面4条语句采用了堆栈寻址的方式来访问堆栈条语句采用了堆栈寻址的方式来访问堆栈: PSHD:将数据存储器的一个值压入堆栈; PSHM:将存储器映射寄存器的一个值压入堆栈; P

17、OPD:将数据存储器的一个值弹出堆栈; POPM:将存储器映射寄存器的一个值弹出堆栈。 第68页/共89页 对C54x DSP来说,数据压入堆栈压入堆栈前要对SP进行减进行减量运算,而在数据弹出堆栈弹出堆栈操作之后,要对SP进行增进行增量运算。SP总是指向堆栈的最顶端的一个元素。总是指向堆栈的最顶端的一个元素。 在中断和调用子程序的过程中,堆栈用来存放和恢复PC值。当一个中断产生或者调用一个子程序时,返回地址会自动压入堆栈顶部。调用中断和子程序的指令有:CALAD、CALLD、CCD、INTR和TRAP。中断返回或者调用子程序返回时,返回地址从堆栈中弹出,存放到PC中。返回指令有:RETD、R

18、ETED、RETEFD和RCD。 FRAME指令也能影响堆栈,它将一个短立即数偏移量与SP指针相加,从而修改SP的值。 第69页/共89页 (2) POPD 语 法:助记符方式 表达式方式 POPD Smem Smem=pop( ) 执行过程:(TOS)Smem (SP)+1SP 该指令不影响任何状态位。 功能描述:把由SP寻址的数据存储器单元的内容转移到由Smem确定的数据存储器单元中。然后SP执行加1操作。 第70页/共89页 例4.169 POPD DAT10 008 DP Before Instruction 0300 SP After Instruction 008 DP 0301

19、SP Data Memory 0088 0300H 0088 0300H 0055 040AH 0088 执行过程:执行过程:(TOS)Smem (SP)+1SP 第71页/共89页 (3) POPM 语 法:助记符方式 表达式方式 POPM MMR MMR=pop( ) mmr(MMR)=pop( ) 执行过程: (TOS)MMR (SP)+1SP 该指令不会影响任何状态位。 功能描述:把由SP寻址的数据存储器单元的内容转移到指定的存储器映射寄存器MMR中。然后SP执行加1操作。 第72页/共89页 例4.170 POPM AR5 0055 AR5 Before Instruction 03

20、F0 SP After Instruction 0066 AR5 03F1 SP Data Memory 03F0H 0066 0066 03F0H 执行过程:执行过程: (TOS)MMR (SP)+1SP 第73页/共89页 (4) PSHD 语 法:助记符方式 表达式方式 PSHD Smem push(Smem) 执行过程:(SP)-1SP (Smem)TOS 该指令不影响任何状态位。 功能描述:SP执行减1操作后,把存储器单元Smem的内容压入堆栈指针SP指向的数据存储器单元中去。 第74页/共89页 例例4.171 PSHD *AR3+ 0200 AR3 Before Instruct

21、ion 8000 SP After Instruction 0201 AR3 7FFF SP Data Memory 07FF 0200H 07FF 0200H 0092 7FFFH 07FF 7FFFH 第75页/共89页 中断指令共2条,如下所示。(压栈) (1) INTR 语 法:助记符方式 表达式方式 INTR k int(k) 执行过程:(SP)-1SP (PC)+1TOS K确定的中断向量PC 1INTM 该指令影响INTM和IFR。 第76页/共89页 例例4.155 INTR 3 0025 PC Before Instruction 0 INTM After Instructi

22、on FFBC PC 1 INTM 01FF IPTR 01FF IPTR 1000 SP 0FFF SP Data Memory 0FFFH 9653 0026 0FFFH (SP)-1SP (PC)+1TOS K确定的中断向量确定的中断向量PC 1INTM 第77页/共89页 (4) RETD 出栈出栈 语 法:助记符方式 表达式方式 RETD return dreturn 执行过程:(TOS)PC (SP)+1SP 该指令不影响任何状态位。 功能描述:把栈顶TOS单元中的16 bit数据弹入到程序指针PC中,堆栈指针SP加1。 第78页/共89页 例4.160 RET 2112 PC B

23、efore Instruction 0300 SP After Instruction 1111 PC 0301 SP Data Memory 0300H 1111 1111 0300H (TOS)PC (SP)+1SP 第79页/共89页 子程序调用指令共5条,如下所示。 (1) CALAD 语 法:助记符方式 表达式方式 CALAD src call src dcall src 2) 子程序调用指令子程序调用指令 第80页/共89页 执行过程:非延迟调用 (SP) -1SP (PC)+1TOS (src(15-0)PC 延迟调用 (SP) -1SP (PC)+3TOS (src(15-0)

24、PC 该指令不影响任何状态位。 第81页/共89页 例4.150 CALA A 00 0000 3000 A Before Instruction 0025 PC After Instruction 00 0000 3000 A 3000 PC 1111 SP 1110 SP Data Memory 4567 1110H 0026 1110H 第82页/共89页 在程序存储器中存放着程序代码、系数表和立即操作数等信息。访问这些信息时需要使用程序寻址方式。程序寻址主要包括程序存储器地址如何产生及程序地址如何装入程序计数器PC。 第83页/共89页 1) 程序存储器地址的产生 程序地址产生逻辑(PAGEN)产生程序

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论