DSP第五章概要1
第五章 TMS320C5000系列DSP芯片的汇编语言 在程序执行过程中,操作数可能在运算部件的某个寄存器中或存储器中,也可能就在指令中。组成程序的指令代码,一般是在存储器中。 寻址方式:是确定本条指令的数据地址及下一条要执行的指令地址的方法。 寻址方式:分为数据寻址和程序寻址。 数据寻址:对数据存储空间进行寻址 程序寻址:对程序存储空间进行寻址(程序存储空间可能存有指令及参数等) 第一节 数据寻址方式 TMS320C54x寻址的存储器有16位和32位两种,但只有双精度和长字指令才能寻址32位。在32位数寻址时,高有效字先处理,低有效字后处理。如果寻址的第1个字处在偶地址,那么第2个字就处在下一个(较高的)地址;如果第1个字处在奇地址,那么第2个字就处在前一个(较低的)地址。 例如: DST B,*AR3+ 表示把源累加器B中的内容00 4AB2 CC22存放到AR3寄存器所指向的长数据存储器单元中,然后AR3寄存器的内容加2。本例中,数据存储器单元的地址为0100,第1个字处在偶地址0100h,故第2个字就处在下一个(较高的)地址0101h。执行后,第1个字0100h的内容为4AB2,第2个字0101h的内容为CC22。 DST B,*AR3- 表示把源累加器B中的内容00 4AB2 CC22存放到AR3寄存器所指向的长数据存储器单元中,然后AR3寄存器的内容减2。本例中,数据存储器单元的地址为0101,第1个字处在奇地址0101h,故第2个字就处在前一个(较低的)地址0100h。执行后,第1个字0101h的内容为4AB2,第2个字0100h的内容为CC22。 在寻址中常会用到下列缩写: Smem:16位单寻址(单数据存储器)操作数。 Xmem:16位双寻址操作数,用于双操作数指令及 某些单操作数指令。从DB数据总线上读出。 Ymem:16位双寻址操作数,用于双操作数指令。 从CB数据总线上读出。 dmad: 16位立即数表示的数据存储器地址, 地址范围为0~65535。 pmad: 16位立即数表示的程序存储器地址, 地址范围为0~65535。 PA: 16位立即数,I/O口地址, 地址范围为0~65535。 src: 源累加器(A或B)。 dst: 目的累加器(A或B)。 lk:16位长立即数。 1.立即数寻址: 指令中已经包含有执行指令所需要的操作数。CPU不必再去寻找数据。 立即数分为短立即数(3、5、8或9)和长立即数(16位)两种。短立即数可包含在单字或双字指令中,长立即数在双字指令中。 在操作数前面需要加#字号来说明该操作数为立即数。否则会把该操作误认为是一个地址,从而把立即数寻址变成绝对地址寻址。 例如指令: LD #93h,A 把立即数93h送入累加器A LD 93h,A 把地址为93h单元中的数装到累加器A,而不是把93h送入累加器A。 RPT #99: 将紧跟在RPT后面的指令循环执行100次 操作数是短立即数,与操作码在同一字中。 1 1 1 0 1 1 0 0 8-bit constant 操作数是16-bit长立即数的指令是双字指令操作码占一个,操作数紧跟其后也占一个字。 RPT #0FFFh; 将紧跟在RPT后面的指令循环执行1000h次。 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 16-bit constant 2.绝对地址寻址: 利用一个16位数标识地址,这个16位的地址可以用其所在单元的地址标号或者16位符号常数来表示。有4种类型的绝对地址寻址。 ⑴数据存储器地址(damd)寻址:它是用一个符号或一个数来确定数据空间的一个地址。 例如,把数据空间SAMPLE标注的地址里的数复制到由AR3所指定的数据存储单元中去: MVKD SAMPLE,*AR3 SAMPLE标注的地址
原创力文档

文档评论(0)