TMS320C55x指令系统_第1页
TMS320C55x指令系统_第2页
TMS320C55x指令系统_第3页
TMS320C55x指令系统_第4页
TMS320C55x指令系统_第5页
已阅读5页,还剩206页未读 继续免费阅读

下载本文档

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

文档简介

1、第第3章章 TMS320C55x的指令系统的指令系统内容提要:内容提要: 本章介绍本章介绍TMS320C55x芯片的指令系统。芯片的指令系统。n寻址方式寻址方式 绝对寻址方式、直接寻址方式、间接寻址方式绝对寻址方式、直接寻址方式、间接寻址方式nTMS320C55x的指令系统的指令系统算术运算指令、位操作指令、扩展辅助寄存器操作指算术运算指令、位操作指令、扩展辅助寄存器操作指令、逻辑运算指令、移动指令和程序控制指令令、逻辑运算指令、移动指令和程序控制指令3.1 寻址方式寻址方式 C55x通过以下三种寻址方式访问数据空间、存储器映通过以下三种寻址方式访问数据空间、存储器映射寄存器、寄存器位和射寄存

2、器、寄存器位和I/O空间空间:l绝对寻址方式绝对寻址方式通过在指令中指定一个常数地址完成寻址通过在指令中指定一个常数地址完成寻址l直接寻址方式直接寻址方式使用地址偏移量寻址使用地址偏移量寻址l间接寻址方式间接寻址方式使用指针完成寻址使用指针完成寻址表表3-1 指令中用到的语法元素指令中用到的语法元素3.1.1 绝对寻址方式绝对寻址方式表表3-2 3-2 绝对寻址方式绝对寻址方式1. k16绝对寻址方式绝对寻址方式l格式格式u*abs16(#k16)其中:其中:k16是一个是一个16位无符号常数位无符号常数l要点要点u常数常数k16被固定译码为被固定译码为2个字节扩充到指令中个字节扩充到指令中u

3、采用这种寻址方式的指令采用这种寻址方式的指令不能与其它指令并行执行不能与其它指令并行执行图图3-1 k16绝对寻址方式绝对寻址方式 例例3-1,*abs16(#k16) 用于数据存储器寻址。设用于数据存储器寻址。设DPH=03h。lMOV *abs16(#2002h),T2 ;#k16=2002h,CPU从03 2002h处读取数据装入T2例例3-2,*abs16(#k16) 用于用于MMR寻址,寻址,DPH必须为必须为00h。MOV *abs16(#AR2), T2 ; AR2的地址为00 0012h;CPU从00 0012h处读取数据装入T22. k23绝对寻址方试绝对寻址方试l格式格式u

4、*(#k23) 其中:其中:k23是一个无符号的是一个无符号的23位常数位常数l要点要点u无符号常数无符号常数k23被固定译码为被固定译码为3个字节,其中第三个字节个字节,其中第三个字节的最高位被忽略的最高位被忽略u不能与其它指令并行执行不能与其它指令并行执行u不能用于重复指令中不能用于重复指令中图图3-2 k23绝对寻址方式绝对寻址方式例例3-3,*(#k23) 用于数据存储器寻址。用于数据存储器寻址。 MOV *(#032002h),T2 例例3-4,* (#k23) 用于用于MMR寻址。寻址。MOV * (#AR2), T2; AR2的地址为00 0012h;k23=03 2002h,C

5、PU从03 2002h处读取数据装入T2;CPU从00 0012h处读取数据装入T23. I/O绝对寻址方式绝对寻址方式l操作数格式操作数格式uport(#k16)其中,其中,k16是一个是一个16位无符号立即数位无符号立即数图图3-3 I/O3-3 I/O绝对寻址方式绝对寻址方式例例3-5,port(#k16) 用于对用于对I/O空间的寻址。空间的寻址。MOV port(#2),AR2 ;CPU从I/O 地址0002h读取数据进AR2MOV AR2,port(#0F000h) ;CPU把AR2的数据输出到I/O 地址0F000h3. 2 直接寻址方式直接寻址方式表表3-2 3-2 直接寻址方

6、式直接寻址方式数据页数据页寄存器寄存器数据堆栈数据堆栈寄存器寄存器lDP直接寻址方式和直接寻址方式和SP直接寻址方式是直接寻址方式是相互排斥的相互排斥的,只能有一种方式存在。通过设置只能有一种方式存在。通过设置ST1_55的的CPL位选择。位选择。l寄存器位直接寻址方式和寄存器位直接寻址方式和PDP直接寻址方式不受直接寻址方式不受CPL位的影响位的影响CPL寻址模式的选择0DP直接寻址模式1SP直接寻址模式1. DP直接寻址方式直接寻址方式l23位地址的形成:位地址的形成:u高高7位由位由DPH寄存器提供寄存器提供u低低16位由下面位由下面两个值的和两个值的和组成组成数据页寄存器(数据页寄存器

7、(DP):标识一个主数据页内标识一个主数据页内128个字个字的局部数据页的首地址的局部数据页的首地址7位的偏移地址(位的偏移地址(Doffset),计算方法因访问数据),计算方法因访问数据空间还是存储器映射寄存器而有所不同空间还是存储器映射寄存器而有所不同图图3-4 DP直接寻址方式直接寻址方式DPHDP+Doffset数据空间000 0000.000 00000000 0000 0000 0000.1111 1111 1111 1111主数据页0: 00 0000h00 FFFFh000 0001.000 00010000 0000 0000 0000.1111 1111 1111 1111

8、主数据页1: 01 0000h01 FFFFh000 0010.000 00100000 0000 0000 0000.1111 1111 1111 1111主数据页2: 02 0000h02 FFFFh. . .111 1111.111 11110000 0000 0000 0000.1111 1111 1111 1111主数据页127: 7F 0000h7F FFFFhlCPU连接连接DPH和和DP成为一个扩展数据页指针成为一个扩展数据页指针XDPu可以使用两条指令独立地装入可以使用两条指令独立地装入DPH和和DPu也可以使用一条指令装入也可以使用一条指令装入XDPl计算偏移地址的方法计算

9、偏移地址的方法:例例3-6,Daddr用于数据存储器寻址。设用于数据存储器寻址。设DPH=03h,DP=0000h。 MOV 0005h,T2 ;DPH:(DP+Doffset)=03:(0000h+0005h)=03 0005h;CPU从03 0005h处读取数据装入T2例例3-7,Daddr用于用于MMR寻址寻址.DPH=DP=00h。MOV mmap(AC0L), AR2 ;DPH:(DP+Doffset)= 00:(0000h+0008h)=00 0008h;CPU从00 0008h处读取数据装入AR22. SP直接寻址方式直接寻址方式l23位地址的形成位地址的形成u高高7位由位由SP

10、H提供提供u低低16位为位为SP和一个和一个7 位的偏移地址(位的偏移地址(offset)的和的和lSPH和和SP合并后形成扩展数据堆栈指针(合并后形成扩展数据堆栈指针(XSP)u可以单独向可以单独向SPH和和SP赋值,也可以使用一条指令向赋值,也可以使用一条指令向XSP赋值。赋值。 主数据页主数据页0 0中的堆栈只能占用中的堆栈只能占用00 0060h00 0060h00 00 FFFFhFFFFh中的空间。因为中的空间。因为00 0000h00 0000h00 005Fh00 005Fh是保是保留给存储映射寄存器用的。留给存储映射寄存器用的。图图3-5 SP直接寻址方式直接寻址方式*SP(

11、offset)用于数据存储器寻址,设)用于数据存储器寻址,设 SPH=0,SP=FF00h。 MOV * SP(5),T2 SPH:(SP+offset)00:FF05h CPU从00 FF05h处读取数据装入T2SP直接寻址方式直接寻址方式3. 寄存器位直接寻址方式寄存器位直接寻址方式l操作数中的偏移bitoffset是相对于寄存器最低位来说的l仅有寄存器位测试/设置/清零/求补等指令支持这种寻址方式l仅能访问下列寄存器的各位:AC0AC3,AR0AR7,T0T3如果如果bitoffsetbitoffset为为0 0,则访问,则访问寄存器的最低位;寄存器的最低位;如果如果bitoffsetb

12、itoffset为为3 3,则访问,则访问寄存器的第寄存器的第3 3位。位。 bitoffset用于对寄存器位的寻址。BSET 0,AC3 ;CPU将AC3的位0置为1BCLR 3, AR2CPU将AC2的位3置为03. 寄存器位直接寻址方式寄存器位直接寻址方式4. PDP直接寻址方式直接寻址方式l9位的外设数据页寄存器(位的外设数据页寄存器(PDP)u选取选取512个外设数据页(个外设数据页(0511)中的一页,每页)中的一页,每页有有128个字(个字(0127),即指令中指定的一个),即指令中指定的一个7 位位的偏移(的偏移(Poffset)l使用时必须用使用时必须用port( )限定词限

13、定词u指定要访问的是指定要访问的是I/O空间,而不是数据存储单元空间,而不是数据存储单元uport()限定词的括号内是要读或写的操作数限定词的括号内是要读或写的操作数图图3-7 PDP直接寻址方式直接寻址方式例例3-15,Poffset用于对用于对I/O空间的寻址,空间的寻址,设设PDP=511。MOV port(0),T2 ;PDP:Poffset=FF80h,CPU从从FF80h读取数据进读取数据进T2MOV T2,port(127);PDP:Poffset=FFFFh,CPU把把T2的数据输出到的数据输出到I/O地址地址0FFFFh3. 3 间接寻址方式间接寻址方式表表3-3 间接寻址方

14、式间接寻址方式1. AR间接寻址方式间接寻址方式 l使用辅助寄存器使用辅助寄存器ARn(n=07)指向数据指向数据lCPU使用使用ARn产生地址的方式取决于访问的数据类型产生地址的方式取决于访问的数据类型表表3-7 AR间接寻址方式时间接寻址方式时AR的内容的内容寻址空间AR内容数据空间(存储空间或寄存器)23位地址的低16位,而高7位由ARnH提供寄存器位或双位位的相对位置I/O空间一个16位的I/O地址(1)AR间接寻址数据空间间接寻址数据空间lARn提供一个提供一个16位位的低字地址,与其相关的的低字地址,与其相关的寄存器寄存器ARnH提供高提供高7位位的地址,它们合成为的地址,它们合成

15、为一个一个23位的扩展辅助寄存器位的扩展辅助寄存器XARnl对于访问数据空间,需使用专用指令把地址装入对于访问数据空间,需使用专用指令把地址装入XARnuARn可以单独装入可以单独装入uARnH不能单独装入不能单独装入图图3-8 AR间接寻址方式寻址数据空间间接寻址方式寻址数据空间ARnHARn数据空间数据空间000 0000.000 00000000 0000 0000 0000.1111 1111 1111 1111主数据页0: 00 0000h00 FFFFh000 0001.000 00010000 0000 0000 0000.1111 1111 1111 1111主数据页1: 01

16、 0000h01 FFFFh000 0010.000 00100000 0000 0000 0000.1111 1111 1111 1111主数据页2: 02 0000h02 FFFFh. . . .111 1111.111 11110000 0000 0000 0000.1111 1111 1111 1111主数据页127: 7F 0000h7F FFFFh例例3-11,*ARn用于数据存储器寻址,设用于数据存储器寻址,设ARn工作在线性工作在线性寻址状态。寻址状态。lMOV *AR4, T2; AR4H:AR4 = XAR4, CPU从XAR4处读取数据装入T2lMOV *(AR4+T0)

17、,T2;AR4H:AR4=XAR4,CPU从XAR4处读取数据装入T2,然后AR4=AR4+T0(2)AR间接寻址寄存器位间接寻址寄存器位l当当AR间接寻址方式用于访问一个寄存器位时,间接寻址方式用于访问一个寄存器位时,16位的位的寄存器寄存器ARn指定位的位置指定位的位置 例如,例如,ARn为为0,则访问寄存器的最低位。,则访问寄存器的最低位。例例3-12,*ARn用于对寄存器位的寻址,设用于对寄存器位的寻址,设AR0=0。BSET *AR0,AC3 ; CPU 将将AC3的位的位0置为置为1(3)AR间接寻址间接寻址I/O空间空间l访问访问I/O空间使用空间使用16位的地址位的地址l当使用

18、当使用AR间接寻址间接寻址I/O空间时,被使用的空间时,被使用的ARn包括完整包括完整的的I/O空间地址空间地址图图3-10 AR间接寻址间接寻址I/O空间空间ARnI/O 空间0000 0000 0000 0000.1111 1111 1111 11110000hFFFFh例例3-12,*ARn 用于对用于对I/O空间的寻址空间的寻址.设设AR4= FF80h, AR5= FFFFh。lMOV port(*AR4), T2 lMOV T2,port(*AR5);CPU从FF80h读取数据进T2;CPU把T2的数据输出到I/O 地址0FFFFh(4) ARMS位对位对AR间接操作数的影响间接操

19、作数的影响lAR间接寻址方式的寻址操作数类型受ST2_55状态寄存器中ARMS位的影响ARMSDSP模式和控制模式选择0DSP模式。该模式用于高效的数字信号处理1控制模式。该模式优化代码长度,用于控制系统 注意:注意: 指针修改和地址产生可以是线性的或循环的,根据指针修改和地址产生可以是线性的或循环的,根据ST2_55ST2_55寄存器的指针配置而定。当使用循环寻址时,寄存器的指针配置而定。当使用循环寻址时,1616位位的缓冲区起始地址寄存器(的缓冲区起始地址寄存器(BSA01BSA01、BSA23BSA23、BSA45BSA45、BSA67BSA67)的内容被加到相应的指针上;)的内容被加到

20、相应的指针上; 指针间的加法和减法以指针间的加法和减法以64K64K为模,不改变为模,不改变XARnXARn,则不,则不能跨主数据页寻址数据。能跨主数据页寻址数据。表表3-9 DSP模式下的模式下的AR间接寻址模式(间接寻址模式(1)操作数指针修改方式访问数据类型*ARnARn值不变Smem、Lmem、Baddr*ARn+地址产生后,指针的值自增:对于16位/1位操作数,有ARn=ARn+1;对于32位/2位操作数,有ARn=ARn+2Smem、Lmem、Baddr*ARn-地址产生后,指针的值自减:对于16位/1位操作数,有ARn=ARn-1;对于32位/2位操作数,有ARn=ARn-2Sm

21、em、Lmem、Baddr*+ARn地址产生前,指针的值自增:对于16位/1位操作数,有ARn=ARn+1;对于32位/2位操作数,有ARn=ARn+2Smem、Lmem、Baddr*-ARn地址产生前,指针的值自减:对于16位/1位操作数,有ARn=ARn-1;对于32位/2位操作数,有ARn=ARn-2Smem、Lmem、Baddr*(ARn+T0/AR0)地址产生后,指针的值变化:如果C54CM=0,有ARn=ARn+T0;如果C54CM=1,有ARn=ARn+AR0;Smem、Lmem、Baddr*(ARn-T0/AR0)地址产生后,指针的值变化:如果C54CM=0,有ARn=ARn-

22、T0;如果C54CM=1,有ARn=ARn-AR0;Smem、Lmem、Baddr表表3-9 DSP模式下的模式下的AR间接寻址模式(间接寻址模式(2)操作数指针修改方式访问数据类型*ARn(T0/AR0)ARn作为基地址不变,T0或AR0的值作为偏移地址Smem、Lmem、Baddr*(ARn+T0B/AR0B)地址产生后,指针的值变化:如果C54CM=0,有ARn=ARn+T0;如果C54CM=1,有ARn=ARn+AR0;上述加法按位倒序进位规律进行相加Smem、Lmem、Baddr*(ARn-T0B/AR0B)地址产生后,指针的值变化:如果C54CM=0,有ARn=ARn-T0;如果C

23、54CM=1,有ARn=ARn-AR0;上述加法按位倒序借位规律进行相加Smem、Lmem、Baddr*(ARn+T1)地址产生后,指针的值为ARn= ARn+T1Smem、Lmem、Baddr*(ARn-T1)地址产生后,指针的值为ARn= ARn-T1Smem、Lmem、Baddr*ARn(T1)ARn作为基地址不变,T1值作为偏移地址Smem、Lmem、Baddr*ARn(#K16)ARn作为基地址不变,K16值作为偏移地址Smem、Lmem、Baddr*+ARn(#K16)地址产生前,指针的值变为ARn=ARn+K16Smem、Lmem、Baddr表表3-10 控制模式下的控制模式下的

24、AR间接寻址模式间接寻址模式操作数指针修改方式访问数据类型*ARnARn值不变Smem、Lmem、Baddr*ARn+地址产生后,指针的值自增:对于16位/1位操作数,有ARn=ARn+1;对于32位/2位操作数,有ARn=ARn+2;Smem、Lmem、Baddr*ARn-地址产生后,指针的值自减:对于16位/1位操作数,有ARn=ARn-1;对于32位/2位操作数,有ARn=ARn-2Smem、Lmem、Baddr*(ARn+T0/AR0)地址产生后,指针的值变化:如果C54CM=0,有ARn=ARn+T0;如果C54CM=1,有ARn=ARn+AR0;Smem、Lmem、Baddr*(A

25、Rn-T0/AR0)地址产生后,指针的值变化:如果C54CM=0,有ARn=ARn-T0;如果C54CM=1,有ARn=ARn-AR0;Smem、Lmem、Baddr*ARn(T0/AR0)ARn作为基地址不变,T0或AR0的值作为偏移地址Smem、Lmem、Baddr*ARn(#K16)ARn作为基地址不变,K16的值作为偏移地址Smem、Lmem、Baddr*+ARn(#K16)地址产生前,指针的值变为ARn=ARn+K16Smem、Lmem、Baddr*ARn(short(#k3)ARn作为基地址不变,3 位的无符号立即数作为偏移指针(k3的值为17)Smem、Lmem、Baddr2.

26、双双AR间接寻址方式间接寻址方式l通过通过8个个ARn中的两个寄存器访问两个数据存储器地址中的两个寄存器访问两个数据存储器地址l使用双使用双ARAR间接寻址方式的情况:间接寻址方式的情况:u执行一个指令,同时访问两个执行一个指令,同时访问两个16位数据存储器位数据存储器 ADD Xmem,Ymem,ACxu并行执行两个指令,每个指令访问一个数据存储器并行执行两个指令,每个指令访问一个数据存储器 MOV Smem,dstAND Smem,src,dstlARMS位不影响双位不影响双AR间接寻址方式的操作数间接寻址方式的操作数u双操作数可以使用同一个双操作数可以使用同一个ARn,其中一个为,其中一

27、个为*ARn或或*ARn(T0),且,且ARn不改变不改变u如果如果ARn被不同的辅助寄存器修改,则不能用于一个被不同的辅助寄存器修改,则不能用于一个双操作数指令中双操作数指令中表表3-11双双AR间接寻址方式操作数间接寻址方式操作数操作数指针修改方式访问数据类型*ARnARn值不变Smem,Lmem,Xmem,Ymem*ARn+地址产生后,ARn的值自增:对于16位操作数,ARn=ARn+1;对于32位操作数,ARn=ARn+2Smem,Lmem,Xmem,Ymem*ARn-地址产生后,ARn的值自减:对于16位操作数,ARn=ARn-1;对于32位操作数,ARn=ARn-2Smem,Lme

28、m,Xmem,Ymem*(ARn+T0/AR0)地址产生后,T0或AR0中16位的有符号数加到ARn上:如果C54CM=0,则ARn=ARn+T0;如果C54CM=1,则ARn=ARn+AR0Smem,Lmem,Xmem,Ymem*(ARn-T0/AR0)地址产生后,ARn减去T0或AR0中16位的有符号数:如果C54CM=0,则ARn=ARn-T0;如果C54CM=1,则ARn=ARn-AR0Smem,Lmem,Xmem,Ymem*ARn(T0/AR0)ARn用作基地址则不变,T0或AR0中的16位有符号常数作为偏移地址如果C54CM=0,T0的值作为偏移地址;如果C54CM=1,AR0的值

29、作为偏移地址Smem,Lmem,Xmem,Ymem*(ARn+T1)地址产生后,AR1加上T1中的16位有符号常数:ARn=ARn+T1Smem,Lmem,Xmem,Ymem*(ARn-T1)地址产生后,AR1减去T1中的16位有符号常数:ARn=ARn-T1Smem,Lmem,Xmem,Ymem例例3-5,*ARn用于数据存储器寻址,设用于数据存储器寻址,设ARn工作工作在线性寻址状态。在线性寻址状态。lMOV *AR4, T2; AR4H:AR4 = XAR4, CPU从从XAR4处读取数据装入处读取数据装入T2lMOV dbl(*AR4), pair(T2) ;第一个地址为第一个地址为X

30、AR4. 如果如果XAR4为偶数为偶数,则第二个地址则第二个地址XAR4+1,如果如果XAR4为奇数为奇数,则第二个地址为则第二个地址为XAR4-1;CPU从从XAR4和和AR4+1(或(或AR4-1)处读取数据装入)处读取数据装入T2和和T3例例3-6,*(ARn+T0)用于数据存储器寻址,设用于数据存储器寻址,设ARn工作在线性寻址状态。工作在线性寻址状态。lMOV *(AR4+T0),T2;AR4H:AR4=XAR4,CPU从从XAR4处读取数据装入处读取数据装入T2,然后然后AR4=AR4+T0lMOV dbl(*(AR4+T0),pair(T2);第一个地址为第一个地址为XAR4;如

31、果如果XAR4为偶数为偶数,则第二个地址则第二个地址XAR4+1;如果如果XAR4为奇数,则第二个地址为为奇数,则第二个地址为XAR4-1;CPU从从XAR4和和AR4+1(或(或AR4-1)处读取数据装入)处读取数据装入T2和和T3, 然后然后AR4=AR4+T0例例3-7,*(ARn+T0B)用于数据存储器寻址,设用于数据存储器寻址,设ARn工作在线性寻址状态。工作在线性寻址状态。lMOV *(AR4+T0B),T2;AR4H:AR4=XAR4,CPU从从XAR4处读取数据装入处读取数据装入T2,然然后后AR4=AR4+T0;在执行加法时在执行加法时,采用码位倒置算法采用码位倒置算法3.

32、CDP间接寻址方式间接寻址方式lCPU使用使用CDP产生地址的方式依赖于访问类型:产生地址的方式依赖于访问类型:表表3-12 访问空间与访问空间与CDP的关系的关系(1)CDP间接寻址数据空间间接寻址数据空间lCDPH提供提供7位的高位域,位的高位域,CDP提供提供16位的低字,合位的低字,合并为并为23位的扩展系数数据指针(位的扩展系数数据指针(XCDP)CDPHCDP数据空间000 0000.000 00000000 0000 0000 0000.1111 1111 1111 1111主数据页0: 00 0000h00 FFFFh000 0001.000 00010000 0000 000

33、0 0000.1111 1111 1111 1111主数据页1: 01 0000h01 FFFFh000 0010.000 00100000 0000 0000 0000.1111 1111 1111 1111主数据页2: 02 0000h02 FFFFh. . .111 1111.111 11110000 0000 0000 0000.1111 1111 1111 1111主数据页127: 7F 0000h7F FFFFh(2)CDP间接寻址寄存器位间接寻址寄存器位lCDP包含位序号包含位序号 若若CDP为为0,则它指向寄存器的第,则它指向寄存器的第0位位l只有寄存器位测试、设置、清零、求补

34、指令支持只有寄存器位测试、设置、清零、求补指令支持CDP间接寻址寄存器位间接寻址寄存器位l这些寄存器仅限于:累加器(这些寄存器仅限于:累加器(AC0AC3)、)、辅助辅助寄存器(寄存器(AR0AR7)、)、暂存器(暂存器(T0T3)(3)CDP间接寻址间接寻址I/O空间空间 当当CDP间接寻址方式用于访问间接寻址方式用于访问I/O空间时,空间时,16位位的的CDP包含了完整的包含了完整的I/O空间地址空间地址(4)CDP间接寻址操作数间接寻址操作数 注意:注意: 指针修改或地址产生可以是线性的,也可以是循环指针修改或地址产生可以是线性的,也可以是循环的,取决于的,取决于ST2_55ST2_55

35、中的指针配置。使用循环寻址时,中的指针配置。使用循环寻址时,1616位缓冲区起始地址寄存器(位缓冲区起始地址寄存器(BSACBSAC)的内容被加到相)的内容被加到相应指针上应指针上; ; CDP CDP指针的修改以指针的修改以64K64K取模,只有修改取模,只有修改CDPHCDPH才能跨才能跨主数据页寻址。主数据页寻址。操作数指针修改方式访问类型*CDPCDP值不改变Smem,Lmem,Xmem,Ymem*CDP+地址产生后,CDP自增:对于16位/1位操作数,CDP=CDP+1;对于32位/2位操作数,CDP=CDP+2Smem,Lmem,Xmem,Ymem*CDP-地址产生后,CDP自减:

36、对于16位/1位操作数,CDP=CDP-1;对于32位/2位操作数,CDP=CDP-2Smem,Lmem,Xmem,Ymem*CDP(#K16)CDP作为基地址不改变,16位的有符号常数K16作为偏移地址Smem,Lmem,Xmem,Ymem*+CDP(#K16)地址产生前,16位的有符号常数K16加到CDP上,即CDP=CDP+K16Smem,Lmem,Xmem,Ymem4. 系数间接寻址方式系数间接寻址方式l使用与使用与CDP间接寻址方式相同的地址产生方式间接寻址方式相同的地址产生方式l存储空间数据移动存储空间数据移动/初始化以及算术指令支持系数间接寻址初始化以及算术指令支持系数间接寻址方

37、式方式l系数间接寻址方式主要用于一个周期内对三个存储器操作系数间接寻址方式主要用于一个周期内对三个存储器操作数进行操作的指令。其中,两个操作数(数进行操作的指令。其中,两个操作数(Xmem和和Ymem)使用双使用双AR间接寻址,第三个操作数(间接寻址,第三个操作数(Cmem)使用系数间)使用系数间接寻址方式,接寻址方式,Cmem在在BB总线上传送。总线上传送。如:如:有限冲击响应滤波器有限冲击响应滤波器乘法运算乘法运算乘加运算乘加运算乘减运算乘减运算双乘加运算和双乘减运双乘加运算和双乘减运算算例如:例如: MPY Xmem,Cmem,ACx :MPY Ymem,Cmem,ACy 其中,其中,C

38、mem位于与位于与Xmem、Ymem不同的存储器区块上不同的存储器区块上l有些指令不使用有些指令不使用BB总线传送总线传送Cmem操作数。操作数。 由于由于BB总线与外部存储器没有接口,如果是总线与外部存储器没有接口,如果是BB总总线传送数据,则操作数必须是片内存储器的。线传送数据,则操作数必须是片内存储器的。表表3-14 不使用不使用BB总线传送总线传送Cmem的指令的指令 指令语法Cmem访问数据类型Cmem访问总线MOV Cmem,Smem从Cmem中读16位DBMOV Smem,Cmem向Cmem中写16位EBMOV Cmem,dbl(Lmem)从Cmem中读32位CB读高字,DB读低

39、字MOV dbl(Lmem),Cmem向Cmem中写32位FB读高字,EB读低字操作数指针变化访问类型*CDPCDP不改变数据空间*CDP+地址产生后,CDP自增:对于16位操作数,CDP=CDP+1;对于32位操作数,CDP=CDP+2数据空间*CDP-地址产生后,CDP自减:对于16位操作数,CDP=CDP-1;对于32位操作数,CDP=CDP-2数据空间*(CDP+T0/AR0)地址产生后,16位的有符号数T0或AR0加到CDP上:如果C54CM=0,CDP=CDP+T0;如果C54CM=1,CDP=CDP+AR0数据空间表表3-15 系数间接寻址操作数系数间接寻址操作数 注意:注意:

40、指针修改和地址产生可以是线性的或循环的,这取指针修改和地址产生可以是线性的或循环的,这取决于决于ST2_55ST2_55的指针配置。仅当的指针配置。仅当CDPCDP循环寻址时,循环寻址时,1616位位缓冲区起始地址寄存器缓冲区起始地址寄存器BSACBSAC将被加到指针上;将被加到指针上; CDPCDP的修改以的修改以64K64K取模,只能借助修改取模,只能借助修改CDPHCDPH才能跨才能跨越主数据页寻址。越主数据页寻址。3.1.4 数据存储器的寻址数据存储器的寻址 上述三种寻址方式(绝对、直接、间接)都可以用于对数上述三种寻址方式(绝对、直接、间接)都可以用于对数据存储器的寻址。以下通过几个

41、例题进行说明。据存储器的寻址。以下通过几个例题进行说明。例例3-1,*abs16(#k16) 用于数据存储器寻址。设用于数据存储器寻址。设DPH=03h。lMOV *abs16(#2002h),T2 ;#k16=2002h,CPU从从03 2002h处读取数据装入处读取数据装入T2lMOV dbl(*abs16(#2002h), pair(T2);#k16=2002h, #k16+1=2003h;CPU从从03 2002h和和03 2003h处读取数据处读取数据,装入装入T2和和T3例例3-2,*(#k23) 用于数据存储器寻址。用于数据存储器寻址。lMOV *(#032002h),T2 ;k

42、23=03 2002h,CPU从从03 2002h处读取数据装入处读取数据装入T2lMOV dbl(*(#032002h),pair(T2);k23=03 2002h,k23+1=03 2003h;CPU从从03 2002h和和03 2003h处读取数据处读取数据,装入装入T2和和T3例例3-3,Daddr用于数据存储器寻址。设用于数据存储器寻址。设DPH=03h,DP=0000h。lMOV 0005h,T2 ;DPH:(DP+Doffset)=03:(0000h+0005h)=03 0005h;CPU从从03 0005h处读取数据装入处读取数据装入T2lMOV dbl(0005h),pair

43、(T2) ;DPH:(DP+Doffset)=03 0005h, DPH:(DP+Doffset1)=03 0004h;CPU从从03 0005h和和03 0004h处读取数据装入处读取数据装入T2和和T3例例3-4,*SP(offset)用于数据存储器寻址。设用于数据存储器寻址。设SPH=0,SP = FF00h。lMOV *SP(5),T2;SPH:(SP+offset)=00 FF05h,;CPU从从00 FF05h 处读取数据装入处读取数据装入T2lMOV dbl(*SP(5), pair(T2);SPH:(SP+offset)=00 FF05h,SPH:(SP+offset1)=00

44、 FF04h;CPU从从00 FF05h和和00 FF04h处读取数据装入处读取数据装入T2和和T3例例3-5,*ARn用于数据存储器寻址,设用于数据存储器寻址,设ARn工作工作在线性寻址状态。在线性寻址状态。lMOV *AR4, T2; AR4H:AR4 = XAR4, CPU从从XAR4处读取数据装入处读取数据装入T2lMOV dbl(*AR4), pair(T2) ;第一个地址为第一个地址为XAR4. 如果如果XAR4为偶数为偶数,则第二个地址则第二个地址XAR4+1,如果如果XAR4为奇数为奇数,则第二个地址为则第二个地址为XAR4-1;CPU从从XAR4和和AR4+1(或(或AR4-

45、1)处读取数据装入)处读取数据装入T2和和T3例例3-6,*(ARn+T0)用于数据存储器寻址,设用于数据存储器寻址,设ARn工作在线性寻址状态。工作在线性寻址状态。lMOV *(AR4+T0),T2;AR4H:AR4=XAR4,CPU从从XAR4处读取数据装入处读取数据装入T2,然后然后AR4=AR4+T0lMOV dbl(*(AR4+T0),pair(T2);第一个地址为第一个地址为XAR4;如果如果XAR4为偶数为偶数,则第二个地址则第二个地址XAR4+1;如果如果XAR4为奇数,则第二个地址为为奇数,则第二个地址为XAR4-1;CPU从从XAR4和和AR4+1(或(或AR4-1)处读取

46、数据装入)处读取数据装入T2和和T3, 然后然后AR4=AR4+T0例例3-7,*(ARn+T0B)用于数据存储器寻址,设用于数据存储器寻址,设ARn工作在线性寻址状态。工作在线性寻址状态。lMOV *(AR4+T0B),T2;AR4H:AR4=XAR4,CPU从从XAR4处读取数据装入处读取数据装入T2,然然后后AR4=AR4+T0;在执行加法时在执行加法时,采用码位倒置算法采用码位倒置算法3.1.5 存储器映射寄存器的寻址存储器映射寄存器的寻址 上述三种寻址方式(绝对、直接、间接)都上述三种寻址方式(绝对、直接、间接)都可以用于对可以用于对MMR寻址。寻址。 以下通过几个例题进行说明。以下

47、通过几个例题进行说明。例例3-9,* (#k23) 用于用于MMR寻址。寻址。MOV * (#AR2), T2;k23=00 0012h(AR2的地址为的地址为00 0012h);CPU从从00 0012h处读取数据装入处读取数据装入T2例例3-8,*abs16(#k16) 用于用于MMR寻址,寻址,DPH必须为必须为00h。MOV *abs16(#AR2), T2;DPH:k16=00 0012h(AR2的地址为的地址为00 0012h);CPU从从00 0012h处读取数据装入处读取数据装入T2例例3-10,Daddr用于用于MMR寻址寻址.DPH=DP=00h,CPL=0。MOV mma

48、p(AC0L), AR2 ;DPH:(DP+Doffset)= 00:(0000h+0008h)=00 0008h;CPU从从00 0008h处读取数据装入处读取数据装入AR例例3-11,*ARn用于用于MMR寻址,寻址,ARn 指向某寄存器。指向某寄存器。MOV *AR6, T2 3.1.6寄存器位的寻址寄存器位的寻址 直接和间接寻址方式可以用于对寄存器位的寻址,直接和间接寻址方式可以用于对寄存器位的寻址,见下边例题。见下边例题。例例3-12,bitoffset用于对寄存器位的寻址。用于对寄存器位的寻址。BSET 0,AC3 ; 将将AC3的位的位0置为置为1BTSTP 30,AC3; 把把

49、AC3的位的位30和位和位31分别复制到分别复制到状态寄存器状态寄存器ST0_55的位的位TC1和和TC2例例3-13,*ARn用于对寄存器位的寻址,设用于对寄存器位的寻址,设AR0=0,AR5=30。BSET *AR0,AC3 ; CPU 将将AC3的位的位0置为置为1BTSTP *AR5,AC3;CPU把把AC3的位的位30和位和位31分别复制到状态寄存器分别复制到状态寄存器ST0_55的位的位TC1和和TC23.1.7 I/O空间的寻址空间的寻址 绝对、直接、间接等三种寻址方式都可以用于对绝对、直接、间接等三种寻址方式都可以用于对I/O空间的寻址,见以下例题。空间的寻址,见以下例题。例例

50、3-14,port(#k16) 用于对用于对I/O空间的寻址。空间的寻址。MOV port(#2),AR2 ;CPU从从I/O 地址地址0002h读取数据进读取数据进AR2MOV AR2,port(#0F000h) ;CPU把把AR2的数据输出到的数据输出到I/O 地址地址0F000h例例3-15,Poffset用于对用于对I/O空间的寻址,设空间的寻址,设PDP=511。MOV port(0),T2 ;PDP:Poffset=FF80h,CPU从从FF80h读取数据进读取数据进T2MOV T2,port(127);PDP:Poffset=FFFFh,CPU把把T2的数据输出到的数据输出到I/

51、O地址地址0FFFFh例例3-16,*ARn 用于对用于对I/O空间的寻址空间的寻址.设设AR4= FF80h, AR5= FFFFh。MOV port(*AR4), T2 ;CPU从从FF80h读取数据进读取数据进T2MOV T2,port(*AR5);CPU把把T2的数据输出到的数据输出到I/O 地址地址0FFFFh3.1.8 循环寻址循环寻址l任何一种间接寻址方式都可以使用循环寻址任何一种间接寻址方式都可以使用循环寻址l每个每个ARn(n = 07)和)和CDP都能独立地配置为线性或循环都能独立地配置为线性或循环寻址。该配置位位于寻址。该配置位位于ST2_55中,设置该位则实现循环寻址中

52、,设置该位则实现循环寻址l循环缓冲区的大小在循环缓冲区的大小在BK03、BK47或或BKC中定义。中定义。u对于字缓冲区则定义字的个数对于字缓冲区则定义字的个数u对于寄存器位缓冲区则定义位的个数对于寄存器位缓冲区则定义位的个数l对于数据空间的字缓冲区,必须存放在一个主数据页内部,对于数据空间的字缓冲区,必须存放在一个主数据页内部,不能跨主数据页存放。不能跨主数据页存放。l对于位缓冲区,缓冲区起始地址寄存器定义参考位。对于位缓冲区,缓冲区起始地址寄存器定义参考位。 每个地址具有每个地址具有2323位,高位,高7 7位代表主数据位代表主数据页,由页,由CDPHCDPH或或ARnHARnH决定;决定

53、; CDPHCDPH可以被独立地装入,可以被独立地装入,ARnHARnH则则不能。装入不能。装入ARnHARnH,必须先装入,必须先装入XARnXARn,即即ARnHARnH:ARnARn; 在主数据页内部,缓冲区的首地址在主数据页内部,缓冲区的首地址定义在定义在1616位的缓冲区首地址寄存器中,位的缓冲区首地址寄存器中,装入在装入在ARnARn或或CDPCDP中的值为地址索引,中的值为地址索引,选定相对于缓冲区首地址的地址。选定相对于缓冲区首地址的地址。指针选择相对于参考位的位置位,仅需装指针选择相对于参考位的位置位,仅需装入入ARnARn或或CDPCDP,不必装入,不必装入XARnXARn

54、或或XCDPXCDP表表3-16 循环寻址循环寻址1. 配置配置AR0AR7和和CDP进行循环寻址进行循环寻址表表3-17 AR寄存器线性寄存器线性/循环寻址配置位循环寻址配置位 表表3-18 CDP寄存器线性寄存器线性/循环寻址配置位循环寻址配置位2. 循环缓冲区的实现循环缓冲区的实现l在数据空间建立一个字循环缓冲区的具体操作步骤:在数据空间建立一个字循环缓冲区的具体操作步骤:(1)初始化相应的缓冲区大小寄存器()初始化相应的缓冲区大小寄存器(BK03、BK47或或BKC)例如,对于例如,对于8个字大小的缓冲区,装入个字大小的缓冲区,装入BK寄存器为寄存器为8。(2)初始化)初始化ST2_5

55、5中相应的配置位,使能选定指针的循环中相应的配置位,使能选定指针的循环寻址寻址(3)初始化相应的扩展寄存器()初始化相应的扩展寄存器(XARn或或XCDP),选择),选择一个主数据页。一个主数据页。例如:如果例如:如果AR3是一个循环指针,则装入是一个循环指针,则装入XAR3;如果;如果CDP是循环指针,则装入是循环指针,则装入XCDP。(4)初始化对应的缓冲区首地址寄存器()初始化对应的缓冲区首地址寄存器(BSA01,BSA23,BSA45, BSA67或或BSAC),主数据页),主数据页XAR(2216)或或XCDP(22-16)和)和BSA寄存器合并形成缓冲区的寄存器合并形成缓冲区的23

56、位位首地址。首地址。(5)装入选定的指针)装入选定的指针ARn或或CDP,大小从,大小从0至缓冲区长度至缓冲区长度减减1。例如,如果使用例如,如果使用AR1,且缓冲区长度为,且缓冲区长度为8,则,则AR1装入装入的值小于或等于的值小于或等于7。例例3-17,初始化和寻址一个循环缓冲区。,初始化和寻址一个循环缓冲区。MOV #3,BK03 ;循环缓冲区大小为循环缓冲区大小为3个字个字BSET AR1LC ;使用使用AR1循环寻址循环寻址AMOV #010000h,XAR1 ;循环缓冲区位于主数据页循环缓冲区位于主数据页01MOV #0A20h, BSA01 ;缓冲区首地址缓冲区首地址MOV #0

57、000h,AR1 ;初始化初始化AR1MOV *AR1+,AC0 ;AC0=(0100000h),AR1=0001hMOV *AR1+,AC0 ;AC0=(0100001h),AR1=0002hMOV *AR1+,AC0 ;AC0=(0100002h),AR1=0000hMOV *AR1+,AC0 ;AC0=(0100000h),AR1=0001h3.2 TMS320C55x的指令系统的指令系统l两种指令集两种指令集u助记符指令集助记符指令集采用助记符来表示指令采用助记符来表示指令u代数指令集代数指令集 指令类似于代数表达式,运算关系比较清楚明了指令类似于代数表达式,运算关系比较清楚明了l助记

58、符指令和代数指令在功能上是一一对应的,只是表示助记符指令和代数指令在功能上是一一对应的,只是表示形式不同形式不同l在编程时只能使用一种指令集在编程时只能使用一种指令集l本节介绍助记符指令本节介绍助记符指令l指令集按操作类型可分为指令集按操作类型可分为6种:种:u算术运算指令算术运算指令u位操作指令位操作指令u扩展辅助寄存器操作指令扩展辅助寄存器操作指令u逻辑运算指令逻辑运算指令u移动指令移动指令u程序控制指令程序控制指令l一条指令的属性包括:一条指令的属性包括:u指令指令u执行的操作执行的操作u是否有并行使能位是否有并行使能位u长度长度u周期周期u在流水线上的执行段在流水线上的执行段u执行的功

59、能单元执行的功能单元表表3-19 指令系统中使用的符号及其含义(指令系统中使用的符号及其含义(1)符符 号号含含 义义 可选的项40若选择该项,则该指令执行时M40=1ACOVx累加器溢出状态位: ACOV0,ACOV1, ACOV2, ACOV3ACx, ACy, ACz, ACw累加器AC0AC3ARx, ARy辅助寄存器: AR0, AR1, AR2, AR3, AR4, AR5, AR6, AR7Baddr寄存器位地址BitIn移进的位:TC2或CARRYBitOut移出的位:TC2或CARRYBORROWCARRY位的补CARRY进位位Cmem系数间接寻址操作数cond条件表述CSR

60、单指令重复计数寄存器Cycles 指令执行的周期数 dst 目的操作数:累加器,或辅助寄存器的低16位,或临时寄存器 表表3-19 指令系统中使用的符号及其含义(指令系统中使用的符号及其含义(2)符符 号号含含 义义Dxx位长的数据地址kxx位长的无符号常数Kxx位长的带符号常数lxx位长的程序地址(相对于PC的无符号偏移量)Lxx位长的程序地址(相对于PC的带符号偏移量)Lmem32位数据存储值E表示指令是否包含并行使能位Pipe, Pipeline流水线执行阶段:D=译码,AD=寻址,R=读,X=执行Pmad程序地址值Pxx位长程序或数据绝对地址值RELOP关系运算符:= =等于,=大于等于,!=

温馨提示

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

评论

0/150

提交评论