《“DSP技术”第3章寻址方式和指令系统》由会员分享,可在线阅读,更多相关《“DSP技术”第3章寻址方式和指令系统(75页珍藏版)》请在金锄头文库上搜索。
1、第3章:TMS320C24x 寻址方式和指令系统,3.1 寻址方式3.2 指令集3.3 典型指令说明,第3章: TMS320C24x 寻址方式和指令系统,重点: 掌握TMS320LF240x DSP 寻址方式及指令集合中的重要指令难点: 理解TMS320LF240x DSP不同寻址方式的含义、操作原理和作用,3.1 寻址方式,存储器寻址方式立即寻址直接寻址间接寻址,3.1 寻址方式,1、立即寻址含义:指令中已包含有执行指令所需的操作数;说明: 在数值或符号前加#表示立即数; 立即数有两种形式:短和长例如:采用短立即寻址RPT指令RPT #99 ;将紧跟在后面的语句重复99+1次采用长立即寻址A
2、DD指令ADD #65534, 2 ;将数据65534左移两位后,再将结果加至 ;累加器,3.1 寻址方式,2、直接寻址含义:用指令中包含的数据存储器地址的低7位+基地址 16位数据存储器地址。基地址: DP_ 数据页指针指令寄存器的内容: 位158:指示指令类型(操作码)和指令所访问的数据值的移位信息。 位7: 直接/间接指示符。0直接寻址;1间接寻址。 位60: 指示指令访问的数据存储器的偏移量。,DP作为基地址的直接寻址方式,数据存储器地址以128为单位被分成若干块,这些块被称为数据页。64K的数据存储器总共包含512个数据页,标号从0511。数据页由状态寄存器ST0中的9位数据页指针D
3、P值决定。偏移地址由指令中操作数的7位最低有效位提供。,如采用直接寻址方式访问数据地址0050H,则:,DP0000 0000 0,偏移量101 0000,数据存储器页图,3.1 寻址方式,2、直接寻址步骤: 设置数据页面:将适当的值(0511)加载到DP。可利用LDP或任何能将数值加载到ST0的指令。 指定偏移地址:给出7位偏移地址作为指令的操作数。注:不必在每条使用直接寻址的指令前都设置数据页面。如果代码块内的所有指令都访问同一数据页面,只须在该指令块的前面加载一个DP。必须保证在访问新的数据页面前改变DP。,3.1 寻址方式,2、直接寻址例: 使用直接寻址的ADD指令LDP 4 ;将数据
4、页面设置为4ADD 9h,5 ;数据存储器地址0209h中的内容左移5位与累 ;加器的内容相加,数据地址的产生,3.1 寻址方式,2、直接寻址例: 使用直接寻址的ADDC指令LDP 500 ;将数据页面设置为500ADDC 6h ;数据存储器地址FA06h中的内容及进位位(C)的值与累;加器的内容相加,数据地址的产生,3.1 寻址方式,3、间接寻址含义:按辅助寄存器(AR)中的内容寻址数据存储器用途:主要用在需要存储器地址以步进方式连续变化的场合。 说明:(1)当前辅助寄存器 通过向状态寄存器ST0中的3位辅助寄存器指针(ARP)在装入07,可选择特定的辅助寄存器。ARP可由MAR、LST或任
5、何支持间接寻址的指令装载。ARP所指的寄存器被作为当前寄存器(AR)。执行指令时,当前AR的内容用作被访问的数据存储器地址。,3.1 寻址方式,3、间接寻址(2)间接寻址选项不加也不减:指令使用当前AR的内容作为数据存储器的地址,但当前AR的内容既不增加也不减少。加1或减1:指令使用当前AR的内容作为数据存储器的地址,但当前AR的内容加1或减1。加或减一个变址量:指令使用当前AR的内容作为数据存储器的地址,然后使当前AR的内容加或减一个变址量,该变址量为AR0中的值。加或减一个变址量且反向进位:指令使用当前AR的内容作为数据存储器的地址,然后使当前AR的内容加或减一个变址量,该变址量为AR0中
6、的值,采用反向进位方式(用于FFT)。,3.1 寻址方式,3.1 寻址方式,3、间接寻址(3)辅助寄存器除了更新当前AR内容外,某些指令还可以指明下一个AR。例:MAR*,AR1;将当前AR设为AR1LACL*,AR2;将AR1所指向的地址中的内容装载到;ACC累加器的低16位,AR1内容加1,使 ;AR2为当前ARSACL *;将ACC的低16位存于AR2所指向的地址;单元,AR2内容加1,3.1 寻址方式,3、间接寻址(5)修改辅助寄存器的内容特定指令:LAR、ADRK、SBRK和MAR。LAR装载AR;ADRK、SBRK从AR中加上、减去一个立即数;MAR使AR值增加/减少1或增加/减少
7、一个索引量。,3.1 寻址方式,3、间接寻址例: 不加也不减的间接寻址指令ADD *,8;将当前AR指定的DM单元的值向左移8位后;加到ACC中,间接寻址时指令寄存器的内容,3.1 寻址方式,3、间接寻址例: 加1的间接寻址指令ADD *,8,AR4;将当前AR指定的DM单元的值向左移8位后;加到ACC中,当前AR加1,且AR4变为下一AR,间接寻址时指令寄存器的内容,3.1 寻址方式,3、间接寻址(4)间接寻址操作码格式指令寄存器的内容:位158:指定指令类型及与数据移位相关的信息。位7:直接/间接指示。1为间接寻址方式,0为直接寻址方式。位64:AR更新代码ARU,确定是否对AR进行更新以
8、及将其增加还是减少,将ACC的低16位存于AR所指向的地址。位3:下一AR指示符N。指定该指令是否改变ARP的值,0ARP内容不变;1NAR的内容加载到ARP,原ARP的值加载到ST1的ARB。位20:下一AR的值NAR。,当前AR中ARU代码的作用,3.2 指令集,按功能分为6大类累加器、算术和逻辑指令(表3.3)辅助寄存器和数据页面指针指令(表3.4)TREG、PREG和乘法指令(表3.5)转移指令(表3.6)控制指令(表3.7)I/O和存储器操作(表3.8),3.2 指令集,ACC累加器ARxLAR和SAR指令中使用的3位值,指定被操作的辅助寄存器CM2位数值,CMPR指令根据CM的值进
9、行比较:CM=00,测试是否当前AR=AR0;CM=01,测试是否当前ARAR0;CM=11,测试是否当前ARAR0。,AR辅助寄存器BITX4位数值,表示BIT指令要测试数据存储器值的哪一位SHIFT4位右移量TP条件执行指令的2位数值:BIO引脚为低,TP=00;TC=1,TP=01;TC=0,TP=10;无条件,TP=11。,符号定义,3.3 典型指令说明,1、对累加器的加操作ADD指令 ADD指令执行的操作是将数据存储器单元的数或立即数左移后加至累加器。移位时,低位填0,高位在SXM=1时为符号扩展,在SXM=0时填0。结果存在累加器中。寻址短立即数时,加操作不受SXM的影响,且不能重
10、复执行。,3.3 典型指令说明,1、对累加器的加操作ADD指令 举例:(1) ADD5, 2;(DP=4:0200h027Fh)将数据存储器单元205;的内容左移2位之后与ACC相加,结果存;ACC,3.3 典型指令说明,1、对累加器的加操作ADD指令(2) ADD*+, 2, AR0;(ARP=4, AR4=282)将数据存储器;单元282的内容左移2位之后与;ACC相加,结果存在ACC,3.3 典型指令说明,1、对累加器的加操作ADD指令(3) ADD# 2;短立即数2;与ACC相加,;结果存在ACC(4) ADD # 1111h, 2;长立即数;1111h左移2位;后与ACC相;加,结存
11、在;ACC,例,2、和累加器逻辑“与”操作指令AND,语法,说明:如果是直接或间接寻址,数据存储单元中的数和累加器的低16位进行与运算,结果放在累加器的低16位,累加器的高16位清0。如果是立即数寻址,长立即数可以先左移,再和累加器进行运算。没有被左移后的值覆盖的低位和高位都清0。指令不受SXM影响。例如:,3.3 典型指令说明,AND指令用来实现被寻址单元的内容和连接器的逻辑“与”操作,以及长立即数经过移位之后和连接器进行逻辑“与”操作。逻辑“与”操作之后的结果保存在累加器中。举例:(1)AND16;(DP=4:0200027Fh)将数据存储器单元210h的内容;与ACC的内容进行逻辑“与”
12、操作,结果保留在;ACC中,3.3 典型指令说明,2、和累加器逻辑“与”操作指令AND(2)AND *;(ARP=0,AR0=0301h)将数据存储器单元301h的内容与ACC;的内容进行逻辑“与”操作,结果保留在ACC中(3)AND 00FFh, 4;将立即数00FFh左移4位后与ACC的内容进行逻辑;“与”操作,结果保留在ACC中,3.3 典型指令说明,3、辅助寄存器不等于零转移指令BANZ 若当前辅助寄存器内容不为零,则控制转移至指定的程序存储器地址,否则控制转移到下一条指令。当前AR的缺省修改为减1。该指令可用来实现程序的循环执行。,3.3 典型指令说明,3、辅助寄存器不等于零转移指令
13、BANZ举例:(1)BANZ PGM0;PGM0是程序地址0的标号当AR0的内容不是0,程序转移的目的地址加载到程序计数器(PC),程序从这里继续运行。对当前AR缺省的修改方式是减1,因此执行后AR0的内容是4h。或者当AR0的内容是0,不执行程序转移;而是将PC加2执行BANZ后面的指令。对当前AR缺省的修改方式是减1,因此执行后AR0的内容是FFFFh(-1)。,3.3 典型指令说明,3、辅助寄存器不等于零转移指令BANZ(2)MAR*, AR0;ARP指向AR0 LARAR1, #3;AR1中装入3 LARAR0, #60h;AR0中装入0060hP1 ADD*+, AR1;若AR10则
14、循环 BANZP1, AR0;将AR0所指的数加到ACC,并将;AR0的值增1,3.3 典型指令说明,4、条件转移指令BCND 当所规定的条件符合时,控制转移到指定的程序存储器地址。举例:BCNDP1, LEQ;若ACC的内容0时,程序转到P1处开始执行,3.3 典型指令说明,5、位测试指令BIT 该指令将数据存储器中的指定位的值复制到状态寄存器ST1的TC位。将该指令和BCND指令结合可判断指定位的状态,并根据该位的状态来控制程序的转移。指令中bit code的值与其所对应的数据存储器数值的bit number的关系如下图所示:,3.3 典型指令说明,5、位测试指令BIT举例:(1)BIT
15、0h, 15;(DP=6),测试0300h处的最低有效位(2)BIT *, 0, AR1;测试0310h处的最高有效位,并设ARP=1,3.3 典型指令说明,6、数据存储器间的块传送BLDD把指定的数据存储单元源地址中的字copy到指定的数据存储单元目的地址中。源地址和目的地址可由长立即数地址或数据存储器地址指定。注意: 如果源地址为长立即数,则目的地址只能为直接或间接寻址方式;如果源地址为直接或间接寻址方式,则目的地址只能为长立即数。该指令不能用于存储器映射的寄存器。使用RPT指令重复BLDD操作期间中断被禁止。当BLDD指令重复使用时,由长立即数指定的源(目的)地址被保存在PC中.每次重复过程PC增1,因此可以访问一串源(目的)地址,若使用间接寻址方式指定目的(源)地址,则每次重复时访问一个新目的(源)地址。若使用直接寻址方式,所指定的源(目的)地址不变,每次重复时不能修改。,