第三章 数据寻址
C54x提供七类寻址方式:
立即数寻址
绝对地址寻址
累加器寻址
直接寻址
间接寻址
内存映象寄存器寻址
堆栈寻址
下面着重介绍以下几种方式。
1绝对地址寻址
术语解释:dmad-数据存储地址;pmad-程序存储地址;PA-口地址;lk-长整数。
绝对地址寻址包括四类:
l dmad寻址
l pmad寻址
l PA寻址
l *(lk)寻址
1.1 dmad寻址
dmad寻址用一标号标记数据空间地址,这类指令有:
l MVDK Smem,dmad
l MVDM dmad,MMR
l MVKD dmad,Smem
l MVMD MMR,dmad
如:MVKD SAMPLE,*AR5。此处SAMPLE即是dmad。
1.2 pmad寻址
pmad寻址用一标号标记程序空间地址,这类指令有:
l FIRS Xmem,Ymem,pmad
l MACD Smem,pmad,src
l MACP Smem,pmad,src
l MVDP Smem,pmad
l MVPD pmad,Smem
如:MVPD TABLE,*AR7-。此处TABLE即为pmad。
1.3 PA寻址
PA寻址用一标号标记外部I/O口地址,这类指令有:
l PORTR PA,Smem
l PORTW Smem,PA
如:PORTR FIFO,*AR5。此处FIFO即为PA。
1.4 *(lk)寻址
*(lk)寻址也是用标号标记数据空间地址。
如:LD *(BUFFER),A。使用这类指令的好处在于不用修改DP和AR值。但有一点要注意的是,这类指令不能用于重复执行单指令中(RPT,RPTZ)。
2直接寻址
在这类指令中,指令中的地址标号构成dmad的低7位(DP方式)或作为正向偏移量(SP方式)。所以指令中地址标号不得超过7位,采用DP或SP方式,由ST1中CPL位决定。CPL=0,采用DP方式;CPL=1,采用SP方式。
2.1 DP方式
DP方式,DP中内容作为dmad地址高9位,指令中地址标号作为低7位构成dmad地址。
2.2 SP方式
SP方式,以SP中内容作为dmad基地址,指令中地址标号作为正向偏移量,二者相加构成dmad地址。
3间接寻址
间接寻址是指dmad由辅助寄存器AR0-AR7内容构成。使用间接寻址的灵活性不仅在于一条指令完成读或写数据存储区(单操作数),还在于一条指令可以完成两个不同存储区的读操作,或两个不同存储区的写操作,或对两个不同位置的一读一写操作。
3.1对SARAM的访问
对SARAM访问使用寄存器AR0-AR7,其中AR0为变址寄存器。用法见下表:
语 法
功 能
描 述
*ARx
dmad=ARx
ARx包含dmad
*ARx-
dmad=ARx
ARx=ARx-1
访问后,ARx中地址内容减1
*ARx+
dmad=ARx
ARx=ARx+1
访问后,ARx中地址内容加1
*+ARx
dmad=ARx+1
ARx=ARx+1
访问前,ARx中地址内容加1
*ARx-0B
dmad=ARx
ARx=B(ARx-AR0)
访问后,ARx中内容减去AR0中内容,并产生反向借位翻转(用于FFT算法)
*ARx-0
dmad=ARx
ARx=ARx-AR0
访问后,ARx中内容减去AR0中内容
*ARx+0
dmad=ARx
ARx=ARx+AR0
访问后,ARx中内容减去AR0中内容
*ARx+0B
dmad=ARx
ARx=B(ARx+AR0)
访问后,ARx中内容加上AR0中内容,并产生反向进位翻转(用于FFT算法)
*ARx-%
dmad=ARx
ARx=circ(ARx-1)
访问后,ARx中内容按循环寻址方式减1
*ARx-0%
dmad=ARx
ARx=circ(ARx-AR0)
访问后,ARx中内容按循环寻址方式减去AR0中内容
*ARx+%
dmad=ARx
ARx=circ(ARx+1)
访问后,ARx中内容按循环寻址方式加1
*ARx+0%
dmad=ARx
ARx=circ(ARx+AR0)
访问后,ARx中内容按循环寻址方式加上AR0中内容
*ARx(lk)
dmad=ARx+lk
ARx=ARx
ARx中内容加上16位长偏移(lk)为dmad,ARx不更新
*+ARx(lk)
dmad=ARx+lk
ARx=ARx+lk
ARx中内容加上16位长偏移(lk)为dmad,ARx更新
*+ARx(lk)%
dmad=circ(ARx+lk)
ARx=circ(ARx+lk)
ARx中内容按循环寻址方式加上16位长偏移(lk)为dmad,ARx更新
*(lk)
dmad=lk
16位绝对地址寻址
循环寻址操作如下:
寄存器BK作为循环缓存区大小(R)。循环缓存区基地址的低N位必须为0。R和N满足以下关系:。末地址为基地址+R。步进值。变址index由以下算法确定:
若;
若;
若。
3.2对DARAM的访问
对DARAM访问使用辅助寄存器AR2-AR5,用法见下表:
语 法
功 能
描 述
*ARx
dmad=ARx
ARx包含dmad
*ARx-
dmad=ARx
ARx=ARx-1
访问后,ARx中地址内容减1
*ARx+
dmad=ARx
ARx=ARx+1
访问后,ARx中地址内容加1
*ARx+0%
dmad=ARx
ARx=circ(ARx+AR0)
访问后,ARx中内容按循环寻址方式加上AR0中内容