dsp寻址方式作业

发布 2022-09-03 08:42:28 阅读 6912

ld#0fe00h,a ;16-bit(f020fe00)

需要注意的是,立即数前面加需“#”以区别于地址表示方法,不得遗漏。

ld#0fe00h,a,表示将立即数fe00h送入累加器a,遗漏#,则变成把地址为0fe00h单元的内容送入累加器a(1000fe00)。

2、绝对地址寻址。

绝对寻址方式的指令中包含有所寻操作数的16位单元地址。

由于寻址16位绝对地址,故绝对寻址指令长度至少为2个字。有四种绝对寻址指令:

2.1数据存储器地址(dmad)寻址:

概念:是用一个符号或者一个数来确顶数据空间的一个地址。

格式:mvdksmem,dmadmvdmdmad,mmr

mvkddmad,smemmvmdmmr,dmad

举例:mvdk, data,*ar5

说明:data信号是一个符号常数,代表一个数据的存储单元的地址。

2.2程序存储器地址(pmad)寻址:

概念:程序存储器寻址由程序地址产生逻辑(pagen)完成。预取指阶段,pagen通过程序计数指针pc将指令**、参数表等所在的程序存储器地址放在pab上,进而从程序存储器相应的位置取出指令**。

如果程序顺序执行,即程序地址连续,pc值将自动增加,指向下一条指令的地址;

如果程序执行过程中有跳转、返回、中断或循环操作,程序地址将不连续,这时pc值就要根据具体情况相应改变了。

程序计数指针pc是一个16位的计数器,pc中所加载的16位程序地址与dsp执行的操作有关。

格式:firsxmem,ymem,pmad mvdpsmem,pmad

macpsmem,pmad,srcmvpdpmad,smem

mvpd,table,*ar7-

说明:将程序存储器编号为table地址单元中的数据传送到有ar7寄存器所指向的数据存储器单元中,且ar7减一。这里的table是一个地址标号,代表一个程序存储单元的地址。

程序存储器寻址基本上和数据存储器寻址一样,区别仅在于空间不同。

2.3i/o端口地址(pa)寻址:

概念:端口(pa)寻址使用一个符号或者一个16位数来确定i/o空间存储器中的一个地址,实现对i/o设备的读写。

格式:portrpa,smemportwsmem,举例:

portr,fifo,*ar5

portw,*ar2,bofo

说明:第一条指令表示从fifo端口读入一个数据,将其存放到有ar5据存期所指向的数据存储器单元中。这里的fifo和bofo是i/o端口地址的标号。

pa长立即数*(lk)寻址:

概念:(lk)寻址是用一个符号或者一个常数来确定数据存储器中的一个地址。适用于支持单数据操作数的的指令。lk是一个16位数或者一个符号,它代表数据存储器中的一个的单元。

举例:ld*(buffer),a

mvkddata,*ar1;数据存储器寻址。

mvpdtable,*ar2;程序存储器寻址。

portr0f2f0h,*ar5;端口寻址。

说明:第一条指令时将buffer符号手指的数据存储单元中的数据传送到累加器a,这里的buffer是一个16位符号常数。

。data代表数据存储单元的地址dmad。

。table代表程序存储单元的地址pmad。

第四条指令表示将地址为0f2f0h的端口中的数据传送到由辅助寄存器ar5所指向的数据存储单元中去。

3、累加器寻址。

概念:累加器寻址是利用累加器a的低16位(al内容)作为地址对程序存储器中的数据进行访问,这种寻址方式常用来寻址存放数据的程序存储空间。

格式: 只有两条指令可用于累加器寻址方式。

readasmem

writasmem

说明:第一条指令意为将累加器a(al)的内容作为地址寻找程序存储器中的数据,传送到smem指定的数据存储单元中。

第2条指令意为将smem指定的数据存储单元中的数据(1个字),写到累加器a(al)指定地址的程序存储器中去。

提示:在c54x芯片中程序存储器单元有累加器a的低16为确定,单c548以上的芯片有23条地址线,它的程序存储器单元的就有累加器的第23为确定。

4、直接寻址。

概念:直接寻址指令中包含有数据存储器地址的低7位(dma)。以dma为偏移地址,与基地址(数据页指针dp或堆栈指针sp)共同构成16位数据存储器的物理地址。

数据指针(dp),当st1中的cpl位=0

堆栈指针(sp),当st1中的cpl位=1

cpl=0,选择数据页指针dp,用dp中的9位作为高位与指令中指定的7位作为低位,共同构成16位数据存储单元的地址。

cpl=1,选择堆栈指针sp,用sp的值与指令中指定的7位正偏移量相加,构成16位数据存储单元的地址。

利用这种寻址方式,可以在不改变数据页指针dp和堆栈指针sp内容的情况下,随机地寻址128个存储单元中的任何一个单元。

直接寻址的优点是寻址速度快且为单字指令。

举例:add dample, b

rsbx cpl;

ld #2,dp

ld 60h,16, a

说明:第一个指令表示:要将地址为sample的存储器单元内容加到累加器b中,此时地址sample的低7为存放在指令**的低7位,高9位有dp或sp提供。

第2条指令是将cpl清零。

第3条指令是将dp指向第二页。

第4条指令是将第二页的60h单元内容装入a高16位。

5、间接寻址。

间接寻址根据8个辅助寄存器ar0—ar7中定义的任一寄存器给出的16位地址寻址。每一个寄存器都可以用来寻址64k字数数据存储空间中的任何一个单元。

间接寻址很灵活,不仅能从存储器中读或写一个单16-bit数据操作数,而且能在一条指令中访问两个数据存储器单元(即从两个独立的存储器单元读数据,或读一个存储器单元同时写另一个存储器单元,或读写两个连续的存储器单元)。

vc5402有两个辅助寄存器算术运算单元arau0和arau1,它们与8个。

辅肋辅助寄存器一起,可以进行无符号数算术运算,实现16种单操作数间接寻址方式。

5.1单操作数寻址。

概念:这种寻址是一个指令中有一个存储器的操作数。

举例:ld ar2+ ,a

说明:(1)表示将有ar2寄存器内容所执行的数据存储器单元中的数据存储器单元中的数据传送到累加器a中,然后ar2中的地址加1.。

(2)间接寻址时:间址寄存器前加*号。

号在前,修改生成新值后再寻址。

号在后,寻址后再修改生成新值。

有0符号,与ar0有关。

有b符号,位倒序寻址。

有%符号,循环寻址。

5.2循环寻址。

概念:循环寻址用%表示,器辅助寄存器使用规则与其他寻址方式相同。

在卷积、相关、fir滤波算法中,要求在存储器中设置一个缓冲区作为滑动窗,保存最新一批数据。循环寻址过程中,不断有新的数据覆盖旧的数据,从而实现循环缓冲区寻址。

循环缓冲区长度bk决定缓冲区的大小,循环寻址时首先应将缓冲区的长度值r加载至循环缓冲区长度寄存器bk。

stm#lk,bk设置循环缓冲区长度。

循环缓冲区从n位的地址边界(n位0)开始,r<2n。若r=40,则n=6,开始地址为:

xxxxxxxxxx000000。

循环寻址时用一个arx指向缓冲区。

算法:if0≤index+stepindex+step≥bk:index=index+step-bk;elseif

index+step<0:index=index+step+bk;

其中,index是arx的低n位(缓冲区偏移地址)。

举例:256点16阶fir滤波器。

.sect“fir-prog”

stm#255,brc块重复计数器重复256次。

rptbdfir_filter_loop

stm#16,bk ;fir循环缓冲区大小。

ld*ar7+,a ; 装入输入值。

stla,*ar4+%;用新值覆盖旧值。

rptza,#

mac*ar4+0%,*ar3+0%,a ;滤波。

stha,*ar5+ ;覆盖旧的缓冲区的值。

(2)补偿小于或等于循环缓冲区的长度。

(3)所使用的辅助寄存器必须指向缓冲区单元。

3ARM指令寻址方式

第三章 arm指令的特点和寻址方式。所有计算机的操作都是按照指令的要求进行操作的。指令应包含如下的信息 1 指明计算机的有关部件执行什么操作 2 指明参加操作的是什么数 3 指明这些操作数存放的位置,以及通过什么方式才能找到它们 4 指明后继指令从 取出。一条指令通常由两部分组成 一部分是操作码,指...

DSP作业

51 以ya i1ixi为例,编写完整的。asm汇编源程序以及。cmd命令文件,写出程序注释,并叙述在ccs2.0集成开发环境下,调试程序的基本步骤。其中a和x的值由自己确定。解 title mpy mmregs 将存储映像寄存器导入列表。stack 10h 给堆栈段分配空间。bssa,5 将11个...

DSP作业

1 以y ax为例,编写完整的。asm汇编源程序以及。cmd命令文件,写出程序注释,iii1 并叙述在ccs2.0集成开发环境下,调试程序的基本步骤。其中a和x的值由自己确定。解 title mpy mmregs 将存储映像寄存器导入列表。stack 10h 给堆栈段分配空间。bssa,5 将11个...