DSP例程学习教程.pptx
《DSP例程学习教程.pptx》由会员分享,可在线阅读,更多相关《DSP例程学习教程.pptx(117页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、3.1 TMS320LF240 x的寻址方式 DSPDSP系统也具有计算机的一般特性,其完成的任务是采样、运算和输出的功系统也具有计算机的一般特性,其完成的任务是采样、运算和输出的功能,即从某个地址单元能,即从某个地址单元(片内或片外片内或片外)取数据,然后按照一定的规则进行运算,最取数据,然后按照一定的规则进行运算,最后将运算的结果存放到某个地址单元来输出。因此,在程序中如何寻址和表达数后将运算的结果存放到某个地址单元来输出。因此,在程序中如何寻址和表达数据的地址是软件系统的关键问题。据的地址是软件系统的关键问题。TMS320LF240 x TMS320LF240 x的程序采用了三种基本的寻
2、址方式:立即寻址、直接寻址和的程序采用了三种基本的寻址方式:立即寻址、直接寻址和间接寻址。间接寻址。3.1.1 立即寻址方式 指令操作所需要的数就在本指令中,这个数也称为立即数。立即寻址的操指令操作所需要的数就在本指令中,这个数也称为立即数。立即寻址的操作数分为短立即数和长立即数,因此相应的寻址方式也有短立即数寻址和长立作数分为短立即数和长立即数,因此相应的寻址方式也有短立即数寻址和长立即数寻址。即数寻址。第1页/共117页【例1】采用采用8 8位短立即数寻址的位短立即数寻址的RPTRPT指令,需要重复执行的次数包含在指令操指令,需要重复执行的次数包含在指令操作码后。作码后。RPT#k ;8R
3、PT#k ;8位短立即数寻址位短立即数寻址 第2页/共117页【例2】采用采用9 9位短立即数寻址的位短立即数寻址的RPTRPT指令,需要重复执行的次数包含在指令操指令,需要重复执行的次数包含在指令操作码后。作码后。RPT#k ;9RPT#k ;9位短立即数寻址位短立即数寻址 第3页/共117页【例3】采用采用1313位短立即数寻址的位短立即数寻址的RPTRPT指令,需要重复执行的次数包含在指令指令,需要重复执行的次数包含在指令操作码后。操作码后。RPT#k ;13RPT#k ;13位短立即数寻址位短立即数寻址 第4页/共117页【例4】采用采用1616位长立即数寻址的位长立即数寻址的ADDA
4、DD指令。指令。ADD#1k,2 ;ADD#1k,2 ;将立即数将立即数1k1k左移左移2 2位后与累加器中位后与累加器中 ;的内容相加,结果存累加器中的内容相加,结果存累加器中 第5页/共117页3.1.2 直接寻址方式 操作地址就在指令中,按照该地址可以直接访问寄存器,这个地址也称为直操作地址就在指令中,按照该地址可以直接访问寄存器,这个地址也称为直接地址。接地址。在在DSPDSP程序中,直接寻址通常是将指令中的程序中,直接寻址通常是将指令中的数据页指针数据页指针DPDP和操作数合并起和操作数合并起来来作为被访问的地址。每页的具体操作地址的高作为被访问的地址。每页的具体操作地址的高9 9位
5、是由数据页指针位是由数据页指针DPDP决定;低决定;低7 7位位(又称偏移地址量又称偏移地址量)是由指令操作数决定,它处于指令寄存器的最低是由指令操作数决定,它处于指令寄存器的最低7 7位有效位有效位上。位上。DPDP指针与偏移地址量共同构成指针与偏移地址量共同构成1616位的指令操作地址。位的指令操作地址。第第15158 8位为指令的操作码;第位为指令的操作码;第7 7位为直接位为直接/间接寻址指示符,为间接寻址指示符,为0 0是直接寻址;是直接寻址;第第6 60 0位为偏移地址量。位为偏移地址量。第6页/共117页因此,在使用直接寻址方式时,应按下述步骤进行:因此,在使用直接寻址方式时,应
6、按下述步骤进行:(1)(1)设置数据页面。设置数据页面。将页值加载到将页值加载到DPDP,加载时可使用,加载时可使用LDPLDP指令。指令。LDPLDP指令可直接加指令可直接加载载DPDP而不影响而不影响ST0ST0的其他位,该指令明确指出加载到的其他位,该指令明确指出加载到DPDP的值,例如把当前数据页的值,例如把当前数据页设置成设置成32(32(地址地址1000h1000h107Fh)107Fh),可使用如下指令。,可使用如下指令。LDP#32 ;LDP#32 ;加载数据页指针加载数据页指针(2)(2)指定偏移量。指定偏移量。提供提供7 7位偏移量作为指令的操作数。例如将当前数据页的第位偏
7、移量作为指令的操作数。例如将当前数据页的第2 2个个地址中的数据加到地址中的数据加到ACCACC时。时。ADD 1h;ADD 1h;将当前数据页中偏移量为将当前数据页中偏移量为1 1处的数据加到处的数据加到ACCACC 如果在一段代码块中所有的指令都访问的是同一数据页,则只需在该块代码如果在一段代码块中所有的指令都访问的是同一数据页,则只需在该块代码的前面加载一次的前面加载一次DPDP即可;如果代码块中需要访问不同的数据页,则每当访问新的即可;如果代码块中需要访问不同的数据页,则每当访问新的数据页时需确保加载相应的数据页时需确保加载相应的DPDP。第7页/共117页【例5】采用直接寻址的采用直
8、接寻址的ADDADD指令。指令。LDP#4 ;LDP#4 ;设置数据页为设置数据页为4(4(地址地址0200h-027Fh)0200h-027Fh)ADD 9h,5 ;ADD 9h,5 ;将数据地址将数据地址0209h0209h单元的内容左移单元的内容左移5 5位后加至位后加至ACCACC第8页/共117页【例6】使用直接寻址的使用直接寻址的ADDCADDC指令。指令。LDP#500;LDP#500;设置数据页为设置数据页为500(500(地址地址FA00h-FA7Fh)FA00h-FA7Fh)ADDC 6h ;ADDC 6h ;数据寄存器地址数据寄存器地址FA06hFA06h单元的内容和进位
9、值单元的内容和进位值(C)(C);一起加至累加器中一起加至累加器中第9页/共117页3.1.3 间接寻址方式 指令中给出的操作数既不是立即数也不是直接地址,而是将这个操作数做指令中给出的操作数既不是立即数也不是直接地址,而是将这个操作数做地址的内存单元的内容作为访问地址,即指令中的操作数是一个间接地址。间接地址的内存单元的内容作为访问地址,即指令中的操作数是一个间接地址。间接寻址为系统的编程带来了很大的灵活性和方便性。寻址为系统的编程带来了很大的灵活性和方便性。DSP DSP芯片内有芯片内有8 8个辅助寄存器个辅助寄存器AR0-AR7AR0-AR7和辅助寄存器算术单元和辅助寄存器算术单元ARA
10、UARAU,这些资源专,这些资源专用于间接寻址,它可以访问用于间接寻址,它可以访问64KB64KB的寻址空间而不受数据页的限制。因此,的寻址空间而不受数据页的限制。因此,DSPDSP的间的间接寻址能力非常灵活和强大,而且寻址的速度非常快。接寻址能力非常灵活和强大,而且寻址的速度非常快。在间接寻址时,当前在间接寻址时,当前ARAR的内容用作将被访问的数据存储器的地址。因此,当的内容用作将被访问的数据存储器的地址。因此,当前辅助寄存器中的内容才是真正被访问的数据地址。前辅助寄存器中的内容才是真正被访问的数据地址。在进行间接寻址操作的同时可以对当前辅助寄存器中的内容在进行间接寻址操作的同时可以对当前
11、辅助寄存器中的内容(即操作地址即操作地址)进进行修改,甚至可以改变行修改,甚至可以改变ARPARP的值,为下一次的间接寻址操作做准备,从而极大地的值,为下一次的间接寻址操作做准备,从而极大地提高了寻址速度。提高了寻址速度。第10页/共117页TMS320LF240 xTMS320LF240 x提供了对提供了对ARAR的内容进行四种运算的选择:的内容进行四种运算的选择:操作数操作数选选 项项操作数操作数选选 项项*不增加也不减少不增加也不减少*0 0减少变址量减少变址量*+增加增加1 1*BR0+BR0+按反方进位增加变按反方进位增加变址量址量*减少减少1 1*BR0BR0按反向进位减少变按反向
12、进位减少变址量址量*0+0+增加变址量增加变址量第11页/共117页【例7】当前当前ARAR不增不减不增不减 ADD *,8 ;ADD *,8 ;把当前把当前ARAR指定的数据存储单元的内容左移指定的数据存储单元的内容左移8 8位位 ;后加至累加器中后加至累加器中【例8】当前当前ARAR增加增加1 1 ADD *+,8,AR4 ;ADD *+,8,AR4 ;把当前把当前ARAR指定的数据存储单元的内容左指定的数据存储单元的内容左 ;移移8 8位后加至累加器中,当前位后加至累加器中,当前ARAR内容加内容加1 1,;指定下条指令的当前辅助寄存器为指定下条指令的当前辅助寄存器为AR4AR4【例9】
13、当前当前ARAR减去减去1 1 ADD *ADD *,8 ;,8 ;把当前把当前ARAR指定的数据存储单元的内容左移指定的数据存储单元的内容左移8 8 ;位后加至累加器中,当前位后加至累加器中,当前ARAR内容减内容减1 1第12页/共117页【例10】当前当前ARAR增加一个变址量增加一个变址量 ADD *0+,8 ;ADD *0+,8 ;把当前把当前ARAR指定的数据存储单元的内容左移指定的数据存储单元的内容左移8 8 ;位后加至累加器中,位后加至累加器中,AR0AR0的内容加到当前的内容加到当前AR AR【例11】当前当前ARAR减去一个变址量减去一个变址量 ADD *0ADD *0,8
14、 ;,8 ;把当前把当前ARAR指定的数据存储单元的内容左移指定的数据存储单元的内容左移8 8 ;位后加至累加器中,当前位后加至累加器中,当前ARAR的内容减去的内容减去AR0AR0 ;内容内容第13页/共117页3.2 TMS320LF240 x的汇编指令 汇编语言是汇编语言是DSPDSP应用软件的基础,使用汇编语言时必须要符合规定的格式,应用软件的基础,使用汇编语言时必须要符合规定的格式,只有这样汇编器才能将源文件转换为机器语言的目标文件。只有这样汇编器才能将源文件转换为机器语言的目标文件。1 1汇编语言源程序的标准格式汇编语言源程序的标准格式 汇编语句格式一般包含汇编语句格式一般包含4
15、4部分:标号、指令、操作数和注释,以助记符指令部分:标号、指令、操作数和注释,以助记符指令为例,格式如下为例,格式如下 标号标号:指令指令 操作数操作数 ;注释注释 其中其中 内的内容为可选项。内的内容为可选项。在编写汇编语句时,必须遵循以下格式:在编写汇编语句时,必须遵循以下格式:(1)(1)语句必须以标号、空格、星号或分号开始。语句必须以标号、空格、星号或分号开始。第14页/共117页(2)(2)若使用标号,则必须从第若使用标号,则必须从第1 1列开始。标号长度最多为列开始。标号长度最多为3232个字符,由个字符,由A-ZA-Z、a-za-z、0-90-9、_ _和和$等组成,但第等组成,
16、但第1 1个字符不能为数字。标号后可以跟一个冒号个字符不能为数字。标号后可以跟一个冒号(:)(:),但并,但并不作为标号的一部分。不作为标号的一部分。(3)(3)每部分必须由每部分必须由1 1个或多个空格分开。个或多个空格分开。(4)(4)开始于第开始于第1 1列的注释须用星号列的注释须用星号(*)(*)或分号或分号(;)(;)标示,但在其他列开始的注释前标示,但在其他列开始的注释前面只能用分号。面只能用分号。(5)(5)指令一定不能从第指令一定不能从第1 1列开始,否则将被视为标号。指令包括助记符指令、汇列开始,否则将被视为标号。指令包括助记符指令、汇编伪指令编伪指令(如如.data.dat
17、a,.set).set)等。等。(6)(6)操作数可以为列表形式,汇编器允许使用常数、符号或表达式作为地址、操作数可以为列表形式,汇编器允许使用常数、符号或表达式作为地址、立即数或间接寻址。当操作数为立即数时,使用立即数或间接寻址。当操作数为立即数时,使用#号作为前缀;操作数为间接号作为前缀;操作数为间接寻址时,使用寻址时,使用*号,将操作数的内容作为地址。号,将操作数的内容作为地址。第15页/共117页2 2汇编语言的指令集汇编语言的指令集 TMS320LF240 x TMS320LF240 x的汇编语言共的汇编语言共8686条,分为条,分为6 6大类,分别是累加器、算术和逻大类,分别是累加
18、器、算术和逻辑指令;辅助寄存器和数据页指针指令;辑指令;辅助寄存器和数据页指针指令;TREGTREG、PREGPREG和乘法指令;跳转指令;和乘法指令;跳转指令;控制指令;控制指令;I/OI/O和存储器操作指令。和存储器操作指令。3 3汇编指令的语法和说明汇编指令的语法和说明 在介绍汇编指令之前,先把所用到的主要操作数做一规定:在介绍汇编指令之前,先把所用到的主要操作数做一规定:dmadma:数据存储器地址的低:数据存储器地址的低7 7位位(LSB)(LSB)shiftshift:左移位数:左移位数0 01515n n:指定下一次的辅助寄存器:指定下一次的辅助寄存器ARPARP值值(0(07)
19、7)k k:8 8位短立即数位短立即数1k1k:1616位长立即数位长立即数indind:是一个间接寻址变量,可取:是一个间接寻址变量,可取*、*+、*、*0+0+、*0 0、*BR0+BR0+、*BR0BR0第16页/共117页(1)ABS(1)ABS(累加器取绝对值累加器取绝对值)语法语法:ABSABS 说明说明:计算计算ACCACC的绝对值,进位位的绝对值,进位位C C置置0 0。指令受。指令受OVMOVM状态标志位影响,执行的结果状态标志位影响,执行的结果影响影响C C和和OVOV。如果。如果ACCACC的内容大于或等于的内容大于或等于0 0,执行指令后其内容不变;,执行指令后其内容不
20、变;若累加器内若累加器内容小于容小于0 0,执行指令后用其对,执行指令后用其对2 2的补码数的补码数(即它的绝对值即它的绝对值)取代原来的值取代原来的值。ACC=8000 0000h ACC=8000 0000h时为特殊情况,若溢出方式位时为特殊情况,若溢出方式位OVM=0OVM=0,对,对8000 0000h8000 0000h取绝对值取绝对值(执行执行ABSABS指令指令)的结果是的结果是8000 0000h8000 0000h;若溢出方式位;若溢出方式位OVM=1OVM=1,对,对8000 0000h8000 0000h取绝对取绝对值的结果是值的结果是7FFF FFFFh7FFF FFF
21、Fh,无论哪种情况下,状态位,无论哪种情况下,状态位OVOV都置都置1 1。第17页/共117页【例例3-143-14】ABS【例例3-153-15】ABS ;(OVM=0)ABS ;(OVM=0)第18页/共117页(2)ADD (2)ADD 累加器加累加器加 语法语法:ADD dma,shift ADD dma,shift 直接寻址直接寻址 ADD dma,16 ADD dma,16 左移左移1616位直接寻址位直接寻址 ADD ind,shift,ARn ADD ind,shift,ARn 间接寻址间接寻址 ADD ind,16,ARn ADD ind,16,ARn 左移左移1616位间
22、接寻址位间接寻址 ADD#k ADD#k 短立即数寻址短立即数寻址 ADD#1k,shift ADD#1k,shift 长立即数寻址长立即数寻址 说明说明:被寻址的数据单元的内容或一个立即数左移后加到累加器,在移位时被寻址的数据单元的内容或一个立即数左移后加到累加器,在移位时低位填低位填0 0。如果符号扩展方式位。如果符号扩展方式位SXM=1SXM=1,则高位进行符号扩展;如果,则高位进行符号扩展;如果SXM=0SXM=0,则,则高位填高位填0 0。如果采用间接寻址并更新如果采用间接寻址并更新ARPARP的值,此时必须指定一个的值,此时必须指定一个shift(shift(移位移位)操作操作数。
23、如果不希望产生移位,则将数。如果不希望产生移位,则将0 0作为操作数,例如作为操作数,例如ADD *+,0,AR2ADD *+,0,AR2。第19页/共117页 通常,如果相加的结果产生进位时,通常,如果相加的结果产生进位时,C=1C=1;不产生进位时,;不产生进位时,C=0C=0。但是,但是,当左移当左移1616位进行相加时,如果相加的结果产生进位,则位进行相加时,如果相加的结果产生进位,则C=1C=1;不产生进位时,;不产生进位时,则则C C不受影响。这样,在把不受影响。这样,在把3232位数加到累加器时,可使累加器产生正确的符号位数加到累加器时,可使累加器产生正确的符号进位。进位。【例例
24、3-17 3-17】ADD 1,1 ;DP=6:ADD 1,1 ;DP=6:地址地址0300h0300h037Fh037Fh 第20页/共117页【例例3-18 3-18】ADD *+,0,AR0ADD *+,0,AR0【例例3-19 3-19】ADD#1h ;ADD#1h ;加短立即数加短立即数 第21页/共117页(3)ADDC (3)ADDC 带进位的累加器加带进位的累加器加 语法:语法:ADDC dma ADDC dma 直接寻址直接寻址 ADDC ind,ARn ADDC ind,ARn 间接寻址间接寻址 说明:说明:将数据存储单元的内容和进位位将数据存储单元的内容和进位位C C的值
25、加到累加器中,符号不扩展,进的值加到累加器中,符号不扩展,进位位受正常方式影响位位受正常方式影响。指令受溢出方式位。指令受溢出方式位OVMOVM位影响,执行指令的结果影响位影响,执行指令的结果影响C C和溢出标志位和溢出标志位OVOV。【例例3-21 3-21】ADDC 0 ;DP=6:ADDC 0 ;DP=6:地址地址0300h0300h037Fh037Fh 第22页/共117页【例例3-22 3-22】ADDC *ADDC *,AR4 ;OVM=0,AR4 ;OVM=0 第23页/共117页(5)ADDT TREG(5)ADDT TREG指定移位的累加器加指定移位的累加器加 语法语法:AD
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DSP 例程 学习 教程
限制150内