文档介绍:第三章 DSP软件体系
‘C54x寻址方式
‘C54x特殊寻址方式说明
‘C54x指令集
‘C54x特殊指令使用说明
立即数寻址: 指令中嵌有一个固定的数
绝对地址寻址: 指令中有一个固定的地址
累加器寻址: 按累加器内的地址去访问程序存储器中
的一个单元
直接寻址: 指令中的7bits是一个数据页内的偏移地址,
而所在的数据页由数据页指针DP或SP决定。
该偏移加上DP和SP的值决定了在数据存储器
中的实际地址。
间接寻址: 按照辅助寄存器中的地址访问存储器。
存储器映射寄存器寻址: 修改存储器映射寄存器中的值,
而不影响当前DP或SP的值。
堆栈寻址: 把数据压入和弹出系统堆栈。
§3-1 TMS320C54x的寻址方式
在立即数寻址中,指令里包括了立即操作数。在一条指令中可对两种立即数编码。一种是短立即数(3、5、8或9bits),另一种是16bits的长立即数。立即数可包含在单字或双字指令中。3-,5-,8-或9-bit值在单字指令中,16-bit值在双字指令中。
1 . 立即数寻址
立即数寻址的其他例子:
LD #0,ARP ;ARP=2(#k3)
LD #3,ASM ;ASM=3(#k5)
LD #50,DP ;DP=50(#k9)
LD #1234,A ;A=1234(#k)
STM #FFFFh,IMR
;IMR=FFFFh(#lk)
短立即数RPT
长立即数RPT
在直接寻址中,指令代码包含了数据存储器地址的低七位。这7-bit dma作为偏移地址与数据页指针(DP)或堆栈指针(SP)相结合共同形成16-bit的数据存储器实际地址。如右图所示。
2. 直接寻址
CPL=0:dma与9-bit的DP相结合形成数据存储器地址。
以DP为基准的直接寻址
DP
9-bit
9-bit的DP指向数据存储空间的512个数据页中的一页
0
1
2
510
511
编程举例:
编程举例:
直接寻址编程:
.mmregs
.bss x, 4, 1
a0 .word 012h
a1 .word 3211h
a2 .word fe11h
a3 .word ff03h
.sect “program”
LD #0, A
LD #X, DP
LD #a0, T
MAC x,A
LD #a1,T
MAC X+1,A
LD #a2,T
MAC X+2,A
…..
以SP为基准的直接寻址
CPL=1:dma加上SP基地址形成数据存储器地址。(st1中)
使用以SP为基址的直接寻址:
AND sample, A
LD sample, A
ADD sample, B ;……..
3. 间接寻址
在间接寻址中,64K数据空间任意单元都可通过一个辅助寄存器中的16-bit地址进行访问。‘C54x有8个16-bit辅助寄存器(AR0-AR7)。两个辅助寄存器算术单元(ARAU0和ARAU1),根据辅助寄存器的内容进行操作,完成无符号的16-bit算术运算。间接寻址很灵活,不仅能从存储器中读或写一个单16-bit数据操作数,而且能在一条指令中访问两个数据存储器单元(即从两个独立的存储器单元读数据,或读一个存储器单元同时写另一个存储器单元,或读写两个连续的存储器单元)。
单操作数寻址