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