
31TMS320C54x的数据寻址方式及指系统.ppt
27页3 数据寻址方式及指令系统数据寻址方式及指令系统TMS320C54x DSP提供以下提供以下7种基本数据寻址方式种基本数据寻址方式1)立即数寻址)立即数寻址((2)绝对地址寻址)绝对地址寻址((3)累加器寻址)累加器寻址((4)直接寻址)直接寻址((5)间接寻址)间接寻址((6)存储器映射寄存器寻址)存储器映射寄存器寻址((7)堆栈寻址)堆栈寻址3.1 寻址方式寻址方式寻址指令中用到的缩写符号及其含义缩写符号含义Smem16位单数据存储器操作数Xmem在双操作数指令及某些单操作数指令中所用的16位双数据存储器操作数,从DB总线上读出Ymem在双操作数指令中所用的16位双数据存储器操作数,从CB总线上读出;在读同时并行写的指令中表示写操作数dmad16位立即数——数据存储器地址(0~65535)pmad16位立即数——程序存储器地址(0~65535)PA16位立即数——I/O口地址(0~65535)src源累加器(A或B)dst目的累加器(A或B)lk16位长立即数Page 37 表表3-9中中3.1.1 立即寻址立即寻址n在立即寻址方式中,在立即寻址方式中,指令中包括了立即操作数。
指令中包括了立即操作数n n用途用途:主要用寄存器或存储器的初始化;:主要用寄存器或存储器的初始化;n一一条条指指令令中中可可对对两两种种立立即即数数编编码码,,一一种种是是短短立立即即数数((3、、5、、8或或9位位)),,另另一一种种是是16位位的的长长立立即即数数短短立立即即数数指指令令编编码码为为一一个个字字长长,,16位位立立即即数数的的指指令编码为两个字长令编码为两个字长n立立即即数数寻寻址址指指令令中中在在数数字字或或符符号号常常数数前前面面加加一一个个“##”号,来表示立即数号,来表示立即数立即数寻址的其他例子: LD #0,ARP ;ARP=2(#k3) LD #3,ASM ;ASM=3(#k5) LD #50,DP ;DP=50(#k9) LD #1234,A ;A=1234(#lk) STM #FFFFh,IMR ;IMR=FFFFh(#lk)短立即数短立即数RPT长立即数长立即数RPT3.1.2 绝对寻址绝对寻址n1 数据存储器(数据存储器(dmad))寻址寻址n2 程序存储器(程序存储器(pmad))寻址寻址n3 端口地址(端口地址(PA))寻址寻址n4 长立即数长立即数*((lk))寻址寻址含义含义含义含义:指令中包含所需寻址的存储器单元地址或:指令中包含所需寻址的存储器单元地址或I/O端口端口地址;地址; 用途用途用途用途:利用:利用16位地址寻址存储器或位地址寻址存储器或I/O1 数据存储器(数据存储器(dmad))寻址寻址n使用使用数据存储器寻址的指令有:数据存储器寻址的指令有: MVDK Smem, dmadMVDM dmad, MMR MVKD dmad, SmemMVMD MMR, dmadn数数据据存存储储器器寻寻址址使使用用符符号号((符符号号地地址址))或或一一个个表表示示16位位地地址址的的立立即即数数来来指指明明寻寻址址的的数数据据存存储储单单元元的的16位绝对地址。
例如:位绝对地址例如: MVKD SMAPLE,,*AR5;2 程序存储器(程序存储器(pmad))寻址寻址n使用程序存储器寻址的指令有:使用程序存储器寻址的指令有:nFIRS Xmem, Ymem, pmadMACD Smem, pmad, srcnMACP Smem, pmad, srcMVDP Smem, pmadnMVPD pmad, Smemn程程序序存存储储器器((pmad))寻寻址址使使用用符符号号((符符号号地地址址))或或一一个个表表示示16位位地地址址的的立立即即数数来来给给出出程程序序空空间间的的地地址址例例如如,,把把程程序序存存储储器器中中标标号号为为TABLE单单元元中中的的值值复复制制到到AR7所所指指定的数据存储器中去,指令可写为:定的数据存储器中去,指令可写为:nMVPD TABLE,*AR7;3 端口地址(端口地址(PA))寻址寻址n使用端口地址的指令有:使用端口地址的指令有: PORTR PA, Smem PORTW Smem , PAn端端口口地地址址((PA))寻寻址址使使用用一一个个符符号号((符符号号地地址址))或或一一个个表表示示16位位地地址址的的立立即即数数来来给给出出外外部部I/O口口地地址。
例如:址例如: PORTR FIFO ,*AR5;4 长立即数长立即数*((lk))寻址寻址n长长立立即即数数*((lk))寻寻址址用用于于所所有有支支持持单单数数据据存存储储器器操作数(操作数(Smem))的指令n长长立立即即数数*((lk))寻寻址址使使用用一一个个符符号号((符符号号地地址址))或或一一个个表表示示16位位地地址址的的立立即即数数来来指指定定数数据据存存储储空空间间的的一一个个地地址址例例如如,,把把数数据据空空间间中中地地址址为为BUFFER单单元元中中的的数数据据传传送送到到累累加加器器A,,指指令令可可写为:写为: LD *((BUFFER),),A3.3 累加器寻址累加器寻址n累累加加器器寻寻址址是是用用累累加加器器中中的的数数值值作作为为一一个个地地址址读读写写程程序序存存储储器器共共有有两两条条指指令令可可以以采采用用累累加加器器寻寻址:址: READA Smem WRITA Smem4 直接寻址直接寻址n在在直直接接寻寻址址方方式式中中,,指指令令中中包包含含数数据据存存储储器器地地址址((dma))的的低低7位位,,这这7位位dma作作为为地地址址偏偏移移量量,,结结合合基基地地址址((由由数数据据页页指指针针DP或或堆堆栈栈指指针针SP给给出出))共共同同形形成成16位位的的数数据据存存储储器器地地址址。
使使用用这这种种寻寻址址方方式式,,用用户户可可在在不不改改变变DP或或SP的的情情况况下下,,对对一一页页内内的的128个个存存储储单单元元随随机机寻寻址址采采用用这这种种寻寻址址方方式式的的好好处处是是指指令令为为单单字字指指令令,,数数据据存存储储器器地址(地址(dma))的低的低7位放在指令字中位放在指令字中 DP作为基地址的直接寻址方式SP作为基地址的直接寻址方式CPL=0::dma与与9-bit的的DP相结合形成数据存储器地址相结合形成数据存储器地址以DP为基准的直接寻址DP9-bit9-bit的的DP指向数据存储空间指向数据存储空间的的512个数据页中的一页个数据页中的一页012510511编程举例:以SP为基准的直接寻址CPL=1::dma加上加上SP基地址形成数据存储器地址基地址形成数据存储器地址st1中)中)使用以使用以SP为基址的直接寻址:为基址的直接寻址: AND sample, A LD sample, A ADD sample,, B ;;……..5 间接寻址间接寻址n5.1 单操作数寻址单操作数寻址n5.2 双操作数寻址双操作数寻址5.1 单操作数寻址单操作数寻址n在在间间接接寻寻址址中中,,64K数数据据空空间间任任意意单单元元都都可可通通过过一一个个辅辅助助寄寄存存器器中中的的16-bit地地址址进进行行访访问问。
‘C54x有有8个个16-bit辅辅助助寄寄 存存 器器 (( AR0-AR7)) 两两 个个 辅辅 助助 寄寄 存存 器器 算算 术术 单单 元元((ARAU0和和ARAU1)),,根根据据辅辅助助寄寄存存器器的的内内容容进进行行操操作作,,完完成成无无符符号号的的16-bit算算术术运运算算间间接接寻寻址址很很灵灵活活,,不不仅仅能能从从存存储储器器中中读读或或写写一一个个单单16-bit数数据据操操作作数数,,而而且且能能在在一一条条指指令令中中访访问问两两个个数数据据存存储储器器单单元元((即即从从两两个个独独立立的的存存储储器器单单元元读读数数据据,,或或读读一一个个存存储储器器单单元元同同时时写写另另一一个个存存储储器器单元,或读写两个连续的存储器单元)单元,或读写两个连续的存储器单元)单操作数寻址单数据存储器操作数间接寻址类型编程举例:特殊的间接寻址方式有:特殊的间接寻址方式有:1.循环寻址.循环寻址2.倒序寻址(.倒序寻址(如表所示)如表所示) 表3-3 位倒序寻址5.2 双操作数寻址双操作数寻址n双双数数据据存存储储器器操操作作数数间间接接寻寻址址类类型型为为*ARx、、*ARx-、、*ARx+、、*ARx+0%。
n所用辅助寄存器只能是所用辅助寄存器只能是AR2、、AR3、、AR4、、AR5n其特点是:占用程序空间小,运行速度快,在一其特点是:占用程序空间小,运行速度快,在一个机器周期内通过两个个机器周期内通过两个16位数据总线(位数据总线(C和和D))读读两个操作数指令中两个操作数指令中Xmem表示从表示从DB总线上读出总线上读出的的16位操作数,位操作数,Ymem表示从表示从CB总线上读出的总线上读出的16位操作数位操作数n例如:例如:MPY *AR2,,*AR3,,An 6 存储器映象寄存器寻址存储器映象寄存器寻址n存存储储器器映映象象寄寄存存器器寻寻址址用用于于修修改改存存储储器器映映象象寄寄存存器器((MMR))中中的的内内容,而不影响当前数据页指针容,而不影响当前数据页指针DP和当前堆栈指针和当前堆栈指针SPn由由于于这这种种方方式式不不需需要要修修改改DP和和SP,,对对寄寄存存器器的的写写操操作作开开销销最最小小存存储器映象寄存器寻址可用于直接寻址和间接寻址储器映象寄存器寻址可用于直接寻址和间接寻址n只有只有8条指令能使用存储器映射寄存器寻址:条指令能使用存储器映射寄存器寻址:nLDM MMR,, dst MVDM dmad, MMRnMVMD MMR, dmad MVMM MMRx, MMRy POPM MMR PSHM MMR STLM src, MMR STM #lk, MMR7 堆栈寻址堆栈寻址n当当发发生生中中断断或或子子程程序序调调用用时时,,系系统统堆堆栈栈自自动动保保存存PC值值。
堆堆栈栈也也可可以以用用于于保保存存和和传传递递其其他他数数据据堆堆栈栈由由高高地地址址向向低低地地址址增增长长,,处处理理器器使使用用16位位的的存存储储器器映映象象寄寄存存器器——堆堆栈栈指指针针((SP))对对堆堆栈栈进进行行寻址,寻址,SP总是指向压入堆栈的最后一个数据总是指向压入堆栈的最后一个数据n有有4条使用堆栈寻址的指令:条使用堆栈寻址的指令:nPSHD 把一个数据存储器数据压入堆栈;把一个数据存储器数据压入堆栈;nPSHM 把一个存储器映象寄存器中的值压入堆栈;把一个存储器映象寄存器中的值压入堆栈;nPOPD 从堆栈中弹出一个数据至数据存储器单元;从堆栈中弹出一个数据至数据存储器单元;nPOPM 从从堆堆栈栈中中弹弹出出一一个个数数据据至至存存储储器器映映象象寄寄存存器返回本节。












