资源预览内容
第1页 / 共42页
第2页 / 共42页
第3页 / 共42页
第4页 / 共42页
第5页 / 共42页
第6页 / 共42页
第7页 / 共42页
第8页 / 共42页
第9页 / 共42页
第10页 / 共42页
亲,该文档总共42页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
l寻址方式寻址方式:寻找指令所指定的参与运算的操作数的方法寻找指令所指定的参与运算的操作数的方法 l根据程序的要求采用不同的寻址方式,可以根据程序的要求采用不同的寻址方式,可以有效地缩短有效地缩短程序的运行时间和提高代码执行效率程序的运行时间和提高代码执行效率lC54x系列的寻址方式可以分为两类系列的寻址方式可以分为两类数据寻址数据寻址程序寻址程序寻址 第第3章章 TMS320C54x的数据寻址方式的数据寻址方式第第3章章 TMS320C54x的数据寻址方式的数据寻址方式3.1 立即寻址立即寻址3.2 绝对寻址绝对寻址3.3 累加器寻址累加器寻址3.4 直接寻址直接寻址3.5 间接寻址间接寻址3.6 存储器映象寄存器寻址存储器映象寄存器寻址3.7 堆栈寻址堆栈寻址寻址指令中用到的缩写符号及其含义寻址指令中用到的缩写符号及其含义缩写符号缩写符号含义含义Smem16位单数据存储器操作数位单数据存储器操作数Xmem在双操作数指令及某些单操作数指令中所用的在双操作数指令及某些单操作数指令中所用的16位双数据存储器操位双数据存储器操作数,从作数,从DB总线上读出总线上读出Ymem在双操作数指令中所用的在双操作数指令中所用的16位双数据存储器操作数,从位双数据存储器操作数,从CB总线上总线上读出;在读同时并行写的指令中表示写操作数读出;在读同时并行写的指令中表示写操作数dmad16位立即数位立即数数据存储器地址(数据存储器地址(065535)pmad16位立即数位立即数程序存储器地址(程序存储器地址(065535)PA16位立即数位立即数I/O口地址(口地址(065535)src源累加器(源累加器(A或或B)dst目的累加器(目的累加器(A或或B)lk16位长立即数位长立即数3.1 立即寻址立即寻址 #l指令中包括了立即操作数,操作数紧随操作码存放在指令中包括了立即操作数,操作数紧随操作码存放在程序存储器中,没有寻找数据地址的过程程序存储器中,没有寻找数据地址的过程l两种立即数编码两种立即数编码短立即数:短立即数:3、5、8或或9位位长立即数:长立即数: 16位位短立即数指令编码为一个字长短立即数指令编码为一个字长16位立即数的指令编码为两个字长位立即数的指令编码为两个字长l用途:用于表示常数或对寄存器初始化用途:用于表示常数或对寄存器初始化l在数字或符号常数前面加一个在数字或符号常数前面加一个“”号,来表示立即号,来表示立即数数程序存储器程序存储器操作码操作码立即数立即数F180LD #0F180HLD #0F180H,A A ;将立即数将立即数将立即数将立即数F180F180加载到加载到加载到加载到A ALD #LD #lklk ,SHFT , ,SHFT ,dstdstExamples:LD#0, ARP;ARP=0(#k3)LD#3, ASM;ASM=3(#k5)LD#50,DP;DP=50(#k9)LD#1234,A;A=1234(#lk)STM #0FFFFH, IMR ;IMR=FFFFH(#lk)IPTR157MP/MC6OVLY5AVIS4DROM3CLKOFF2SMUL+1SST+0处理器方式状态寄存器处理器方式状态寄存器PMST的位结构的位结构状态寄存器状态寄存器ST1的位结构的位结构BRAF15CPL14XF13HM12INTM11010OVM9SXM8C167FRCT6CMPT5ASM40ARP1513TC12C11OVA10OVB9DP80状态寄存器状态寄存器ST0位结构位结构3.2 绝对寻址绝对寻址l指令中包括待寻址的存储单元的指令中包括待寻址的存储单元的16位地址位地址l绝对地址编码长度总是绝对地址编码长度总是16位,包含绝对寻址的指令编码位,包含绝对寻址的指令编码至少为两个字至少为两个字l有有4种类型种类型3.2 绝对寻址绝对寻址3.2.1 数据存储器(数据存储器(dmad)寻址寻址3.2.2 程序存储器(程序存储器(pmad)寻址寻址3.2.3 端口地址(端口地址(PA)寻址寻址3.2.4 长立即数长立即数*(lk)寻址寻址3.2.1 数据存储器(数据存储器(dmad)寻址寻址l使用符号(符号地址)或一个表示使用符号(符号地址)或一个表示16位地址的立即数来位地址的立即数来指明寻址的数据存储单元的指明寻址的数据存储单元的16位绝对地址位绝对地址l使用数据存储器寻址的指令有:使用数据存储器寻址的指令有: MVDKSmem,dmadMVDM dmad, MMRMVKD dmad,SmemMVMD MMR, dmadExamples:MVKDSAMPLE,*AR5MVKD1000H,*AR5dmadSmem3.2.2 程序存储器(程序存储器(pmad)寻址寻址l使用符号(符号地址)或一个表示使用符号(符号地址)或一个表示16位地址的立即数来给出程序位地址的立即数来给出程序空间的地址空间的地址l使用程序存储器寻址的指令有:使用程序存储器寻址的指令有:FIRSXmem,Ymem,pmadMACD Smem, pmad, srcMACP Smem,pmad,srcMVDPSmem,pmadMVPD pmad, SmemExamples:MVPDTABLE,*AR7pmadSmem3.2.3 端口地址(端口地址(PA)寻址寻址l使用一个符号(符号地址)或一个表示使用一个符号(符号地址)或一个表示16位地位地址的立即数来给出外部址的立即数来给出外部I/O口地址口地址l使用端口地址的指令有:使用端口地址的指令有: PORTR PA,Smem ;Smem=port(PA) PORTW Smem ,PA;port(PA)=SmemExamples:PORTRFIFO,*AR5PASmem3.2.4 长立即数长立即数*(lk)寻址寻址l使用一个符号(符号地址)或一个表示使用一个符号(符号地址)或一个表示16位地址的立即位地址的立即数来指定数来指定数据存储空间数据存储空间的一个地址的一个地址l适用于所有支持单数据存储器操作数(适用于所有支持单数据存储器操作数(Smem)的指令的指令 Smem=*(lK)l采用采用*(lk)形式的指令不能与单循环指令(形式的指令不能与单循环指令(RPT,RPTZ)配合使用配合使用Examples:LD *(BUFFER),ALDSmem, dst 试比较:试比较:LD 1000H,A;1000HA 双字双字,立即立即LD *(1000H),A;(1000H) A 双字双字,绝对绝对*(lk)3.3 累加器寻址累加器寻址l用累加器中的数值作为一个地址读写用累加器中的数值作为一个地址读写程序程序存储器存储器l共有两条指令:共有两条指令:READASmem;Smemprog(A)WRITASmem;prog(A)Smeml用于完成程序存储空间与数据存储空间之间的数据传输用于完成程序存储空间与数据存储空间之间的数据传输Examples:READA *AR0WRITA *AR1+3.4 直接寻址直接寻址l指令中包含数据存储器地址(指令中包含数据存储器地址(dma)的低的低7位,作为地址偏移量,位,作为地址偏移量,结合基地址(由数据页指针结合基地址(由数据页指针DP或堆栈指针或堆栈指针SP给出)共同形成给出)共同形成16位的数据存储器地址位的数据存储器地址l可在不改变可在不改变DP或或SP的情况下,对一页内的的情况下,对一页内的128个存储单元随机个存储单元随机寻址。数据存储空间共寻址。数据存储空间共512页页l单字指令单字指令lST1中的直接寻址编辑方式位(中的直接寻址编辑方式位(CPL)用于选择)用于选择DP或或SPCPL0,选择,选择DP (RSBX CPL)CPL1,选择,选择SP (SSBX CPL)相对寻址相对寻址DP作为基地址的直接寻址方式作为基地址的直接寻址方式SP作为基地址的直接寻址方式作为基地址的直接寻址方式15141312111098765432109位数据页指针DP指令中dma的低7位1514131211109876543210000000000指令中dma的低7位16位堆栈指针SP16位有效数据存储器地址Examples:.bss x, 128, 1.textLD #0, ALD #x, DP;LD #K9, DP;x页号页号-DP,如果,如果x=0100H,则,则DP2ADD #1, A, ASTL A, x;直接寻址直接寻址, STL src, SmemADD #1, A, ASTL A, x+128 ;直接寻址直接寻址3.5 间接寻址间接寻址l使用两个辅助寄存器算术单元(使用两个辅助寄存器算术单元(ARAU0,ARAU1)和)和8个个16位的辅助寄存器(位的辅助寄存器(AR0AR7),进行无符号数),进行无符号数算术运算,产生地址算术运算,产生地址l可以访问可以访问64K数据空间的任何一个存储单元数据空间的任何一个存储单元l单条指令同时访问数据存储器的两个单元单条指令同时访问数据存储器的两个单元读两个独立的数据存储器单元读两个独立的数据存储器单元读和写两个连续的数据存储器单元读和写两个连续的数据存储器单元读一个数据存储器单元和写另一个数据存储器单元读一个数据存储器单元和写另一个数据存储器单元3.5 间接寻址间接寻址3.5.1 单操作数寻址单操作数寻址3.5.2 双操作数寻址双操作数寻址3.5.1 单操作数寻址单操作数寻址l单数据存储器(单数据存储器(Smem)操作数间接寻址类型操作数间接寻址类型l基本基本l增增1减减1l加偏移量加偏移量l变址变址l循环循环l倒序倒序Examples:MVPDTABLE,*AR7MVPDTABLE,*AR7-MVPDTABLE,*AR7+MVPDTABLE,*+AR7;仅对仅对Smem写写操作操作l 单数据存储器操作数(单数据存储器操作数(Smem)间接寻址类型间接寻址类型增增1减减1变址变址倒序倒序倒序倒序循环循环Smem基本基本仅写仅写加偏移量加偏移量循环循环循环循环3.5.1 单操作数寻址单操作数寻址l特殊的间接寻址方式有:特殊的间接寻址方式有:循环寻址循环寻址倒序寻址倒序寻址3.5.1 单操作数寻址单操作数寻址l循环寻址循环寻址: 用于卷积、用于卷积、FIR等算法。管理循环缓冲区(滑动窗口)等算法。管理循环缓冲区(滑动窗口) 循环缓冲区大小寄存器循环缓冲区大小寄存器BK(MMR,19H)循环缓冲区有效基地址循环缓冲区有效基地址EFB循环缓冲区尾地址循环缓冲区尾地址EOB循环缓冲区循环缓冲区INDEX循环缓冲区边界条件:循环缓冲区边界条件:EFB:低:低N位为位为0, 2NBK例如,例如,BK=7 - N=3, 2N=8, EFB=xxxx xxxx xxxx x000STM #7,BK3.5.1 单操作数寻址单操作数寻址0123456EFBEOBINDEX数据存储器数据存储器BKARxIf 0index+stepBK index=index+stepelse if index+stepBK index=index+step-BKelse if index+stepSP,压入数据,压入数据出栈:弹出数据,出栈:弹出数据,SP1SPl共共4条:条:PSHD,PSHMPOPD,POPMARM满递减堆栈满递减堆栈LDMFD,STMFD思考题思考题1.TMS320C54x提供了哪几种数据寻址方式?举例说明提供了哪几种数据寻址方式?举例说明2.在循环寻址中,如何确定循环缓冲的起始地址?如循环缓冲大小为在循环寻址中,如何确定循环缓冲的起始地址?如循环缓冲大小为32,其起始地址必须从哪儿开始?,其起始地址必须从哪儿开始?3.若辅助寄存器若辅助寄存器AR0的值为的值为0x0010H,AR3的值为的值为0x0310H,循环缓,循环缓冲起始地址为冲起始地址为0x0300H,BK31,请分别给出下列寻址方式修改后,请分别给出下列寻址方式修改后的辅助寄存器值。的辅助寄存器值。*AR3+%*AR3+0%*AR3-%*+AR3(-2)*AR0(#0100)思考题思考题4.请描述请描述TMS320C54x的位倒序寻址方式。设的位倒序寻址方式。设FFT长度长度N16,AR0应赋值为多少?若应赋值为多少?若AR2中存放的数据存储器地址为中存放的数据存储器地址为0xFF00H,则经过,则经过8次次*AR2+0B寻址,访问的内存单元地址依次寻址,访问的内存单元地址依次为多少?为多少?5.双数据存储器操作数间接寻址使用哪几种类型双数据存储器操作数间接寻址使用哪几种类型?所用的辅助寄存所用的辅助寄存器只能是哪几个?其特点是什么?器只能是哪几个?其特点是什么?思考题参考答案思考题参考答案1.7种种2.循环缓冲区边界条件:循环缓冲区边界条件:EFB 2NBK若若BK32,则,则N6,2N643.AR00010H,AR30310HBK311FH,EFB0300H,EOBEFBBK031FH*AR3+%:EFBAR3AR310311HEOB,AR3=AR3-BK=0301H*AR3-%: EFBAR3AR3-1030FHEOB,AR3=030FH*+AR3(-2): AR3AR3+(-2)030EH*AR0(#0100):AR0AR0=0010H思考题参考答案思考题参考答案4.AR0=8*AR2+0B: 内存单元地址内存单元地址=FF00H (0)*AR2+0B: 内存单元地址内存单元地址=FF08H (1)*AR2+0B: 内存单元地址内存单元地址=FF04H (2)*AR2+0B: 内存单元地址内存单元地址=FF0CH (3)*AR2+0B: 内存单元地址内存单元地址=FF02H (4)*AR2+0B: 内存单元地址内存单元地址=FF0AH (5)*AR2+0B: 内存单元地址内存单元地址=FF06H (6)*AR2+0B: 内存单元地址内存单元地址=FF0EH (7)*AR2+0B: 内存单元地址内存单元地址=FF01H (8)5.双数据存储器操作数间接寻址间接寻址类型为双数据存储器操作数间接寻址间接寻址类型为*ARx、*ARx-、*ARx+、*ARx+0%辅助寄存器:辅助寄存器:AR2、AR3、AR4、AR5占用程序空间小,运行速度快占用程序空间小,运行速度快
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号