




已阅读5页,还剩64页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第第5 5章章 TMS320C54xTMS320C54x汇编语言程序设计汇编语言程序设计 内容提要内容提要 汇编语言程序设计是应用软件设计的基础,主要汇编语言程序设计是应用软件设计的基础,主要 任务是利用汇编指令和伪指令编写源程序以完成指定任务是利用汇编指令和伪指令编写源程序以完成指定 的功能。的功能。 本章将结合例子介绍本章将结合例子介绍TMS320C54xTMS320C54x汇编语言源程汇编语言源程 序设计的基本方法。序设计的基本方法。 Date1DSP原理及应用 第第5 5章章 TMS320C54xTMS320C54x汇编语言程序设计汇编语言程序设计 5.5.1 1 概述概述 5.25.2 堆栈的使用方法堆栈的使用方法 5.35.3 控制程序控制程序 5.45.4 算术运算程序算术运算程序 5.55.5 重复操作程序重复操作程序 5.65.6 数据块传送程序数据块传送程序 5.75.7 小数运算程序小数运算程序 5.85.8 浮点运算程序浮点运算程序 Date2DSP原理及应用 第第5 5章章 TMS320C54xTMS320C54x汇编语言程序设计汇编语言程序设计 5.1 5.1 概述概述 汇编语言程序以汇编语言程序以. .asmasm为扩展名,可以用任意的编为扩展名,可以用任意的编 辑器编写源文件。一条语句占源程序的一行,长度可辑器编写源文件。一条语句占源程序的一行,长度可 以是源文件编辑器格式允许的长度,但汇编器每行最以是源文件编辑器格式允许的长度,但汇编器每行最 多读多读200200个字符。个字符。 5 5. .1 1. .1 1 汇编语言源程序格式汇编语言源程序格式 Date3DSP原理及应用 第第5 5章章 TMS320C54xTMS320C54x汇编语言程序设计汇编语言程序设计 1.1. 源文件格式源文件格式 5 5. .1 1. .1 1 汇编语言源程序格式汇编语言源程序格式 助记符指令源语句的每一行通常包含助记符指令源语句的每一行通常包含4 4个部分:个部分: 标号区、助记符区、操作数区和注释区。标号区、助记符区、操作数区和注释区。 标号标号: 助记符助记符 操作数操作数 ; ; 注释注释 助记符指令语法格式:助记符指令语法格式: 【例【例5.1.15.1.1】 助记符指令源语句举例。助记符指令源语句举例。 NANHUANANHUA .set.set 1 1 ; ; 符号符号NANHUANANHUA1 1 Begin:Begin: LDLD #NANHUA#NANHUA,AR1AR1 ; ; 将将1 1加载到加载到AR1AR1 标标 号号 助记符助记符 操作数操作数 注注 释释 Date4DSP原理及应用 第第5 5章章 TMS320C54xTMS320C54x汇编语言程序设计汇编语言程序设计 5.25.2 堆栈的使用方法堆栈的使用方法 当程序调用中断服务程序或子程序时,需要将当程序调用中断服务程序或子程序时,需要将 程序计数器程序计数器PCPC的值和一些重要的寄存器值进行压栈的值和一些重要的寄存器值进行压栈 保护,以便程序返回时能从间断处继续执行。保护,以便程序返回时能从间断处继续执行。 C54xC54x提供一个用提供一个用1616位堆栈指针位堆栈指针SPSP寻址的软件寻址的软件 堆栈。堆栈。 当向堆栈中压入数据时,堆栈是从高地址向低当向堆栈中压入数据时,堆栈是从高地址向低 地址方向填入,堆栈指针地址方向填入,堆栈指针SPSP先减先减1 1,然后将数据压入,然后将数据压入 堆栈。堆栈。 当从堆栈中弹出数据时。数据先从堆栈中弹出当从堆栈中弹出数据时。数据先从堆栈中弹出, , 然后堆栈指针然后堆栈指针SPSP加加1 1。 Date5DSP原理及应用 第第5 5章章 TMS320C54xTMS320C54x汇编语言程序设计汇编语言程序设计 5.25.2 堆栈的使用方法堆栈的使用方法 1.1. 堆栈的设置堆栈的设置 size .set 120size .set 120 stack . stack .usectusect “STACK” “STACK”,sizesize STM # STM # stackstack + + sizesize,SPSP 在数据在数据RAMRAM空间开辟一个堆栈区。空间开辟一个堆栈区。 在在RAMRAM中定义一个中定义一个STACKSTACK 的保留空间,共的保留空间,共120120个单元个单元 设置堆栈指针,设置堆栈指针,# # stackstack + + sizeSPsizeSP。 保留区的高地址赋给保留区的高地址赋给SPSP, 作为堆栈的栈底作为堆栈的栈底 若程序中要使用堆栈,必须先进行设置,如:若程序中要使用堆栈,必须先进行设置,如: 设置好堆栈后,就可以使用堆栈了,如:设置好堆栈后,就可以使用堆栈了,如: CALL CALL pmadpmad ;(SP)-1SP,(PC)+2TOS(SP)-1SP,(PC)+2TOS,pmadPCpmadPC RET RET ;(TOS)PC,(SP)+1SP(TOS)PC,(SP)+1SP Date6DSP原理及应用 第第5 5章章 TMS320C54xTMS320C54x汇编语言程序设计汇编语言程序设计 5.35.3 控制程序控制程序 C54xC54x具有丰富的程序控制指令,利用这些指具有丰富的程序控制指令,利用这些指 令可以执行分支转移、子程序调用、子程序返回,令可以执行分支转移、子程序调用、子程序返回, 条件执行以及循环等控制操作。条件执行以及循环等控制操作。 5 5. .3 3. .1 1 分支操作程序分支操作程序 程序控制中的分支操作包括:程序控制中的分支操作包括: 分支转移程序分支转移程序 子程序调用子程序调用 子程序返回子程序返回 条件操作程序条件操作程序 Date7DSP原理及应用 第第5 5章章 TMS320C54xTMS320C54x汇编语言程序设计汇编语言程序设计 5 5. .3 3. .1 1 分支操作程序分支操作程序 通过传送控制到程序存储器的其他位置,分支转通过传送控制到程序存储器的其他位置,分支转 移会中断连续的指令流。移会中断连续的指令流。 分支转移指令可以改写分支转移指令可以改写PCPC值,使程序改变流向。值,使程序改变流向。 其指令分为无条件分支转移和条件分支转移两类。其指令分为无条件分支转移和条件分支转移两类。两两 者都可以带延时操作和不带延时操作。者都可以带延时操作和不带延时操作。 1.1. 分支转移程序分支转移程序 分支转移指令 分 类类 指 令 说说 明 无条件 分支转转移 BD 用该该指令指定的地址加载载PC BACCD 用累加器的低16位指定的地址加载载PC 条 件 分支转转移 BCD 若满满足指令给给定条件,用该该指令指定的地址加载载PC BANGD 若当前选择辅选择辅 助寄存器不等于0,用该该指令指定的地址加载载 PC 远远 程 分支转转移 FBD 用该该指令指定的地址加载载PC和XPC FBACCD 用累加器的低23位指定的地址加载载PC和XPC Date8DSP原理及应用 第第5 5章章 TMS320C54xTMS320C54x汇编语言程序设计汇编语言程序设计 无条件分支转移:无条件执行分支转移;无条件分支转移:无条件执行分支转移; 条件分支转移:要在满足用户一个或多个条件时条件分支转移:要在满足用户一个或多个条件时 才执行分支转移;才执行分支转移; 远程分支转移:允许分支转移到扩展存储器。远程分支转移:允许分支转移到扩展存储器。 1.1. 分支转移程序分支转移程序 【例【例5.3.15.3.1】 分支转移举例。分支转移举例。 STM #1000HSTM #1000H,AR0AR0 LD #88HLD #88H,A A zhongzhong: SUB *AR0 SUB *AR0,A A BC BC zhongzhong,AGTAGT,AOVAOV ;将操作数将操作数#88#88H H装入装入AR0AR0 ;将操作数将操作数#1000#1000H H装入装入ACCACC ;将将A A中的内容减去中的内容减去AR0AR0中中的的 ;内容结果装入;内容结果装入A A ;若累加器若累加器A0A0且溢出,且溢出, ;则转至则转至zhongzhong, ,否则往下执行否则往下执行 Date9DSP原理及应用 第第5 5章章 TMS320C54xTMS320C54x汇编语言程序设计汇编语言程序设计 5 5. .3 3. .1 1 分支操作程序分支操作程序 当函数的子程序被调用时,紧跟在调用后的下一当函数的子程序被调用时,紧跟在调用后的下一 条指令的地址保存在堆栈中。这个地址用于返回到调条指令的地址保存在堆栈中。这个地址用于返回到调 用程序并继续执行调用前的程序。用程序并继续执行调用前的程序。 子程序调用操作分成两种形式:无条件调用和条子程序调用操作分成两种形式:无条件调用和条 件调用,两者都可以带延时操作和不带延时操作。件调用,两者都可以带延时操作和不带延时操作。 2.2. 子程序调用程序子程序调用程序 Date10DSP原理及应用 第第5 5章章 TMS320C54xTMS320C54x汇编语言程序设计汇编语言程序设计 2.2. 子程序调用程序子程序调用程序 子程序调用指令 分 类类 指 令 说说 明 无条件调调用 CALLD 将返回的地址压压入堆栈栈,并用该该指令指定的地址加载载PC CALAD 将返回的地址压压入堆栈栈,用累加器A或B指定的地址加载载PC 条件调调用 CCD 如果满满足指令给给定条件,将返回的地址压压入堆栈栈,并用该该 指令指定的地址加载载PC 远远程调调用 FCALL D 将XPC和PC压压入堆栈栈,并用该该指令指定的地址加载载PC和XPC FCALA D 将XPC和PC压压入堆栈栈,用累加器的低23位指定的地址加载载 PC和XPC Date11DSP原理及应用 第第5 5章章 TMS320C54xTMS320C54x汇编语言程序设计汇编语言程序设计 2.2. 子程序调用程序子程序调用程序 无条件调用是指无条件执行调用。无条件调用是指无条件执行调用。 条件调用和无条件调用操作相同,但是条件调条件调用和无条件调用操作相同,但是条件调 用要在满足一个或多个条件时才执行用要在满足一个或多个条件时才执行调用。调用。 远程调用允许对扩展存储器的子程序或函数进远程调用允许对扩展存储器的子程序或函数进 行调用。行调用。 Date12DSP原理及应用 第第5 5章章 TMS320C54xTMS320C54x汇编语言程序设计汇编语言程序设计 2.2. 子程序调用程序子程序调用程序 【例【例5.3.25.3.2】 子程序调用举例。子程序调用举例。 STM #1000HSTM #1000H,AR0AR0 LD #2000H LD #2000H,AR1AR1 CALL new CALL new STL A,*AR1 STL A,*AR1 end: B endend: B end newnew:MPY *AR0MPY *AR0,*AR1*AR1,A A RETRET ;将操作数将操作数# #1000H1000H装入装入AR0AR0 ;将操作数将操作数# #2000H2000H装入装入AR1AR1 ;调子程序调子程序newnew ;将将A A的内容存入的内容存入*AR1*AR1 ;AR0AR0与与AR1AR1所指所指的内容相乘的内容相乘, ,结果放入结果放入A A中中 ;子程序返回子程序返回 Date13DSP原理及应用 第第5 5章章 TMS320C54xTMS320C54x汇编语言程序设计汇编语言程序设计 5 5. .3 3. .1 1 分支操作程序分支操作程序 C54xC54x的一些指令只有在满足一个或是多个条的一些指令只有在满足一个或是多个条 件后才被执行件后才被执行,如条件分支转移、条件调用和条件,如条件分支转移、条件调用和条件 返回等指令。返回等指令。 这些指令这些指令都用条件来限制分支转移、调用和返都用条件来限制分支转移、调用和返 回操作。这些条件可用条件算符来表示。回操作。这些条件可用条件算符来表示。 3.3. 条件条件 Date14DSP原理及应用 第第5 5章章 TMS320C54xTMS320C54x汇编语言程序设计汇编语言程序设计 3.3. 条件条件 条 件 算 符 操作符号条 件说说 明操作符号条 件说说 明 AEQA=0累加器A等于0 AOVAOV=1 累加器A溢出 BEQB=0累加器B等于0 BOVBOV=1 累加器B溢出 ANEQA0累加器A不等于0 ANOVAOV=0 累加器A不溢出 BNEQB0累加器B不等于0 BNOVBOV=0 累加器B不溢出 ALTA0累加器A大于0 BIOBIO低 BIO信号电电平为为低 BGTB0累加器B大于0 NBIOBIO高 BIO信号电电平为为高 AGEQA0累加器A大于等于0 UNC无无条件操作 BGEQB0累加器B大于等于0 Date15DSP原理及应用 第第5 5章章 TMS320C54xTMS320C54x汇编语言程序设计汇编语言程序设计 3.3. 条件条件 在条件操作时也可以要求在条件操作时也可以要求有多个条件,只有所有多个条件,只有所 有条件满足时才被认为是满足条件。这种多个条件有条件满足时才被认为是满足条件。这种多个条件 的组合就构成了指令的多重条件。的组合就构成了指令的多重条件。 多重条件算符 第1组组第2组组 A类类B类类A类类B类类C类类 EQ NEQ LEQ GEQ LT GT OV NOV TC NTC C NC BIO NBIO Date16DSP原理及应用 第第5 5章章 TMS320C54xTMS320C54x汇编语言程序设计汇编语言程序设计 【例例5.3.35.3.3】 条件操作程序。条件操作程序。 BC subBC sub,BLEQBLEQ ; ; 条件分支转移条件分支转移 若累加器若累加器B0B0,则转至则转至subsub, 否则,往下执行否则,往下执行 CC startCC start,AGEQAGEQ,AOVAOV ; ; 条件调用条件调用 若累加器若累加器A0A0且溢出且溢出, 则调用则调用startstart,否则往下执行否则往下执行 RC NTCRC NTC ; ; 条件返回条件返回 若若TC = 0TC = 0,则返回,否则往下执行则返回,否则往下执行 Date17DSP原理及应用 第第5 5章章 TMS320C54xTMS320C54x汇编语言程序设计汇编语言程序设计 5 5. .3 3. .1 1 分支操作程序分支操作程序 4.4. 比较转移程序比较转移程序 利用比较指令利用比较指令CMPRCMPR可实现比较转移操作。可实现比较转移操作。 比较操作指令:比较操作指令: CMPR CMPR 测试条件,辅助寄存器测试条件,辅助寄存器ARxARx 指令功能:指令功能:辅助寄存器辅助寄存器ARxARx与与AR0AR0进行比较,进行比较, 若比较结果使所给定的测试条件成立若比较结果使所给定的测试条件成立, , 则则TCTC位置位置1 1。 实现方法:实现方法: 通过通过CMPRCMPR的比较结果得的比较结果得TCTC值;值; 根据根据TCTC值,由条件转移指令实现分值,由条件转移指令实现分 支转移。支转移。 Date18DSP原理及应用 第第5 5章章 TMS320C54xTMS320C54x汇编语言程序设计汇编语言程序设计 例如:例如:比较操作后条件分支转移比较操作后条件分支转移 STM #1000H,AR1STM #1000H,AR1 ; ; AR1=5AR1=5 STMSTM #1005H,AR0#1005H,AR0 ; ; AR0=10AR0=10 loop: loop: * *AR1+AR1+ ; ; AR1=AR1+1AR1=AR1+1 CMPR LT,AR1CMPR LT,AR1 ; ;若若AR1-AR0AR1-AR0 | |除数除数| | 例例: : 编写编写1638451216384512的程序的程序 . .bssbss num,1 num,1 . .bssbss den,1 den,1 . .bssbss quot,1 quot,1 . .datadata tabletable .word 16.word 16 384 384 .word 512 .word 512 .text .text start: STM #num,AR1 start: STM #num,AR1 RPT #1 RPT #1 MVPD table,*AR1+ MVPD table,*AR1+ ;1616 384384 ;512512 ;传送传送2 2个数据至分子、分母单元个数据至分子、分母单元 Date30DSP原理及应用 第第5 5章章 TMS320C54xTMS320C54x汇编语言程序设计汇编语言程序设计 5 5. .4 4. .2 2 除法运算除法运算 | |被除数被除数| | | |除数除数| | 例例: : 编写编写1638451216384512的程序的程序 LD den,16,ALD den,16,A MPYA num MPYA num ABS A ABS A STH A,den STH A,den LD num,A LD num,A ABS A ABS A RPT #15 RPT #15 SUBC den,A SUBC den,A XC 1,BLT XC 1,BLT NEG A NEG A STL STL A,quotA,quot ;将分母移到累加器将分母移到累加器A A(3131 1616) ;(num)(num)* *A(32A(32 16)16)B B, ,获取商的符号获取商的符号 ;分母取绝对值分母取绝对值 ;分母绝对值存回原处分母绝对值存回原处 ;分子分子ALAL ;分子取绝对值分子取绝对值 ;1616次减法重复操作,完成除法次减法重复操作,完成除法 ;如果如果B B | |除数除数| | 例例: : 编写编写1638451216384512的程序的程序 运行结果:运行结果: 被除数 除 数 商(十六进进制) 商(十进进制) 16 384 512 0xC020 32 66*32 768/100(0.66) -33*32 768/100(-0.33) 0xFFFE -2 注意:注意:SUBCSUBC指令仅对无符号数进行操作,因此先对被除数和指令仅对无符号数进行操作,因此先对被除数和 除数取绝对值,然后利用乘法操作获取商的符号,最除数取绝对值,然后利用乘法操作获取商的符号,最 后通过条件操作指令给商加上适当的符号。后通过条件操作指令给商加上适当的符号。 Date32DSP原理及应用 第第5 5章章 TMS320C54xTMS320C54x汇编语言程序设计汇编语言程序设计 5.45.4 算术运算程序算术运算程序 5 5. .4 4. .3 3 长字运算和并行运算长字运算和并行运算 长字指令:长字指令: DLD DLD Lmem,dstLmem,dst DST DST src,Lmemsrc,Lmem DADD DADD Lmem,src,dstLmem,src,dst DSUB DSUB Lmem,src,dstLmem,src,dst DRSUB DRSUB Lmem,src,dstLmem,src,dst 1.1.长字运算长字运算 ; ;dstdst= =LmemLmem 单周期单周期 ; ;LmemLmem= =srcsrc 双周期双周期 ; ;dstdst= =src+Lmemsrc+Lmem 单周期单周期 ; ;dstdst= =src-Lmemsrc-Lmem 单周期单周期 ; ;dstdst= =Lmem-srcLmem-src 单周期单周期 C54xC54x可以利用可以利用3232位长操作数进行长字运算。位长操作数进行长字运算。 Date33DSP原理及应用 第第5 5章章 TMS320C54xTMS320C54x汇编语言程序设计汇编语言程序设计 1.1.长字运算长字运算 长字的排列方式长字的排列方式 偶地址排列偶地址排列 奇地址排列奇地址排列 (1)(1) 偶地址排列偶地址排列 如:如: DLD *AR3+,ADLD *AR3+,A 执行前:执行前:A A 0000000000 AR3AR3 0100 数据存储储器 0100h6 C A C 0101hB D 9 0 高字高字 低字低字 执行后:执行后:A A 0000000000 AR3AR3 0100 6 6CACCAC 01010101 BD90BD90 01020102 指令中给出的地址为偶地址,则存储器低地址指令中给出的地址为偶地址,则存储器低地址 存放高存放高1616位操作数。位操作数。 Date34DSP原理及应用 第第5 5章章 TMS320C54xTMS320C54x汇编语言程序设计汇编语言程序设计 1.1.长字运算长字运算 (1)(1) 偶地址排列偶地址排列 【例【例5.4.55.4.5】 偶地址排列法举例。偶地址排列法举例。 . .bssbss a a,2 2 . .bssbss y y,2 2 . .datadata table: .word 06CACH table: .word 06CACH,0BD90H0BD90H .text .text STM #a STM #a,AR1AR1 RPT #1 RPT #1 MVPD table MVPD table,*AR1+*AR1+ STM #a STM #a,AR3AR3 DLD DLD * *AR3+AR3+,A A 执行前:执行前: A A = = 0000 00000000 0000h0000h AR3AR3 = = 0100h0100h (0100(0100h)h)= = 6CACh(6CACh(高字高字) ) (0101(0101h)h)= = BD90h(BD90h(低字低字) ) 执行后执行后: A A = = 0000 6CAC6CAC BD90h BD90h AR3AR3 = = 0102h 0102h (0100(0100h)h)= = 6 6CAChCACh (0101(0101h)h)= = BD90hBD90h Date35DSP原理及应用 第第5 5章章 TMS320C54xTMS320C54x汇编语言程序设计汇编语言程序设计 1.1.长字运算长字运算 (2)(2) 奇地址排列奇地址排列 如:如: DLD *AR3+,ADLD *AR3+,A 执行前执行前:A A 0000000000 AR3AR3 0101 数据存储储器 0100h6 C A C 0101hB D 9 0 低字低字 高字高字 执行后执行后:A A 0000000000 BD90BD90 6CAC6CAC AR3AR3 0101 0102010201030103 指令中给出的地址为奇地址,则存储器低地址指令中给出的地址为奇地址,则存储器低地址 存放低存放低1616位操作数。位操作数。 Date36DSP原理及应用 第第5 5章章 TMS320C54xTMS320C54x汇编语言程序设计汇编语言程序设计 5 5. .4 4. .3 3 长字运算和并行运算长字运算和并行运算 2.2.并行运算并行运算 并行运算就是并行运算就是同时利用同时利用D D总线和总线和E E总线,通过并总线,通过并 行指令来实现数据的加载和算术运算。行指令来实现数据的加载和算术运算。 D D总线用来执行加载或算术运算。总线用来执行加载或算术运算。 E E总线用来存放先前的结果。总线用来存放先前的结果。 并行指令并行指令 : 并行加载和乘法指令并行加载和乘法指令 并行加载和存储指令并行加载和存储指令 并行存储和乘法指令并行存储和乘法指令 并行存储和加并行存储和加/ /减指令减指令 Date37DSP原理及应用 第第5 5章章 TMS320C54xTMS320C54x汇编语言程序设计汇编语言程序设计 2.2.并行运算并行运算 LD|MACR LD|MACR LD|MASR LD|MASR 例如:例如: LD Xmem,dst1|MACR Ymem,dst2LD Xmem,dst1|MACR Ymem,dst2 功能:功能:dst1=dst1=XmemXmem(16-ASM);(16-ASM); dstdst= =XmemXmem(16-ASM);(16-ASM); dstdst= =dst+Tdst+T* *XmemXmem。 并行存储和乘法指令:并行存储和乘法指令: Date40DSP原理及应用 第第5 5章章 TMS320C54xTMS320C54x汇编语言程序设计汇编语言程序设计 2.2.并行运算并行运算 ST|ADDST|ADD ST|SUB ST|SUB 例如:例如: ST ST src,Ymemsrc,Ymem |ADD |ADD Xmem,dstXmem,dst 功能:功能:YmemYmem= =srcsrc(16-ASM);(16-ASM); dstdst= =dst+Xmemdst+Xmem。 并行存储和加并行存储和加/ /减指令:减指令: Date41DSP原理及应用 第第5 5章章 TMS320C54xTMS320C54x汇编语言程序设计汇编语言程序设计 2.2.并行运算并行运算 注注 意意 并行指令均为单字单周期指令;并行指令均为单字单周期指令; 并行指令先存储,后加载或算术运算;并行指令先存储,后加载或算术运算; 并行指令的操作均在累加器的高位中并行指令的操作均在累加器的高位中 进行,并且大多数指令受进行,并且大多数指令受ASMASM位的影响。位的影响。 Date42DSP原理及应用 第第5 5章章 TMS320C54xTMS320C54x汇编语言程序设计汇编语言程序设计 2.2.并行运算并行运算 【例例5.4.85.4.8】编写计算编写计算z z= =x+yx+y和和f f= =e+de+d的程序的程序 x y z d e f bssbss x,3 x,3 bssbss d,3 d,3 STM #x,AR5 STM #x,AR5 STM #d,AR2 STM #d,AR2 LD #0,ASM LD #0,ASM LD *AR5+,16,A LD *AR5+,16,A ADD *AR5+,16,A ADD *AR5+,16,A ST A,*AR5 ST A,*AR5 |LD *AR2+,B |LD *AR2+,B ADD *AR2+,16,B ADD *AR2+,16,B STH B,AR2 STH B,AR2 bssbss x,3 x,3 bssbss d,3 d,3 STM #x,AR5STM #x,AR5 LD #0,ASMLD #0,ASM LD *AR5+,16,ALD *AR5+,16,A ADD *AR5+,16,AADD *AR5+,16,A ST A,*AR5ST A,*AR5 |LD *AR2+,BLD *AR2+,B ADD *AR2+,16,BADD *AR2+,16,B STH B,*AR2STH B,*AR2 STM #d,AR2STM #d,AR2 Date43DSP原理及应用 第第5 5章章 TMS320C54xTMS320C54x汇编语言程序设计汇编语言程序设计 5.55.5 重复操作程序重复操作程序 C54xC54x的重复操作是使的重复操作是使CPUCPU重复执行一条指令或重复执行一条指令或 一段指令。可以分为单指令重复和块程序重复。一段指令。可以分为单指令重复和块程序重复。 实现重复操作的指令:实现重复操作的指令: RPT RPT 重复下条指令;重复下条指令; RPTZRPTZ 累加器清累加器清0 0,并重复下条指令;,并重复下条指令; RPTBRPTB 块重复指令。块重复指令。 使用使用RPTRPT、RPTZRPTZ能重复下一条指令;而能重复下一条指令;而RPTBRPTB用用 于重复代码块若干次。于重复代码块若干次。利用重复指令可实现比利用重复指令可实现比BANZBANZ 指令更快的循环程序。指令更快的循环程序。 Date44DSP原理及应用 第第5 5章章 TMS320C54xTMS320C54x汇编语言程序设计汇编语言程序设计 5 5. .5 5. .1 1 单指令重复操作单指令重复操作 【例例5.5.15.5.1】对数组进行初始化,使对数组进行初始化,使x8=0,0,0,0,0,0,0,0x8=0,0,0,0,0,0,0,0。 . .bssbss x, 8 x, 8 STM #x, AR1 STM #x, AR1 LD #0, A LD #0, A RPT #7 RPT #7 STL STL A,*AR1+A,*AR1+ . .bssbss x, 8 x, 8 STM #x, AR1 STM #x, AR1 RPTZ A, #7RPTZ A, #7 STL A, *AR1+STL A, *AR1+ 注意:注意: 对对x8x8中的中的8 8个元素置个元素置0 0,重复次数为,重复次数为7 7,即执行,即执行1 1 次次STL ASTL A, AR1+AR1+指令后,再重复执行指令后,再重复执行7 7次;次; RPTZRPTZ指令设定重复次数后,再对累加器清零。指令设定重复次数后,再对累加器清零。 Date45DSP原理及应用 第第5 5章章 TMS320C54xTMS320C54x汇编语言程序设计汇编语言程序设计 5.55.5 重复操作程序重复操作程序 5 5. .5 5. .2 2 块程序重复操作块程序重复操作 对于整个程序块需要重复操作时,可采用程序对于整个程序块需要重复操作时,可采用程序 块重复操作。块重复操作。 通常通常RPTBRPTB的操作数为程序块的结束地址,而重复的操作数为程序块的结束地址,而重复 次数可用次数可用STMSTM指令对指令对BRCBRC进行设定。进行设定。 Date46DSP原理及应用 第第5 5章章 TMS320C54xTMS320C54x汇编语言程序设计汇编语言程序设计 5 5. .5 5. .2 2 块程序重复操作块程序重复操作 【例【例5.5.25.5.2】对数组对数组x8x8中的每一元素加中的每一元素加1 1。 . .bssbss x, 8 x, 8 begin: LD #1,16,Bbegin: LD #1,16,B STM #7,BRC STM #7,BRC STM #x,AR4 STM #x,AR4 RPTB next-1 RPTB next-1 ADD *AR4,16,B,A ADD *AR4,16,B,A STH A,*AR4+ STH A,*AR4+ next: LD #0,Bnext: LD #0,B ; ; 设置数组空间设置数组空间 ; ; 立即数立即数1 1送入送入BHBH ; ; 设置重复次数设置重复次数, ,BRC=BRC=7 7,循环循环8 8次次 ; ; 数组首地址数组首地址x x送入送入AR4AR4 ; ; 设置循环结束地址设置循环结束地址 ; ; 数组数据左移数组数据左移1616位与位与BHBH相加相加 ; ; 存入数组结果,并修改地址存入数组结果,并修改地址 ; ; B B清清0 0 注注 意意 块结束地址块结束地址REAREA通常取通常取程程 序块最后一条指令的下一序块最后一条指令的下一 条指令地址条指令地址- -1 1; 重复次数为重复次数为7 7次次 RPTBRPTB指令可以响应中断。指令可以响应中断。 Date47DSP原理及应用 第第5 5章章 TMS320C54xTMS320C54x汇编语言程序设计汇编语言程序设计 【例【例5.5.25.5.2】三重循环嵌套程序。三重循环嵌套程序。 STM #L-1,AR7STM #L-1,AR7 ;2T;2T 1st: 1st: 外部外部 STM #M-1,BRCSTM #M-1,BRC ;2T;2T RPTB 2nd-1RPTB 2nd-1 ;4T;4T 中间中间 中间中间 RPT #N-1RPT #N-1 ;1T;1T 内部内部 中间中间 中间中间 2 2ndnd: : 外部外部 外部外部 BANZ 1st,*AR7-BANZ 1st,*AR7- ;4T;4T 内内 层层 中中 层层 外外 层层 Date48DSP原理及应用 第第5 5章章 TMS320C54xTMS320C54x汇编语言程序设计汇编语言程序设计 5.65.6 数据块传送程序数据块传送程序 1. 1. 数据传送指令数据传送指令 用于数据传送指令可分为四类:用于数据传送指令可分为四类: (1)(1) 数据存储器之间的数据传送数据存储器之间的数据传送 MVDK MVDK SmemSmem,dmaddmad MVKD MVKD dmaddmad,SmemSmem MVDD MVDD XmemXmem,YmemYmem 2 2字字 2 2周期周期 2 2字字 2 2周期周期 1 1字字 1 1周期周期 Date49DSP原理及应用 第第5 5章章 TMS320C54xTMS320C54x汇编语言程序设计汇编语言程序设计 1. 1. 数据传送指令数据传送指令 (2)(2) 数据存储器与数据存储器与MMRMMR之间的数据传送之间的数据传送 MVDM MVDM dmaddmad,MMRMMR MVMD MVMD MMRMMR,dmaddmad MVMM MVMM MMRxMMRx,MMRyMMRy 2 2字字 2 2周期周期 2 2字字 2 2周期周期 1 1字字 2 2周期周期 (3)(3) 程序存储器和数据存储器之间的数据传送程序存储器和数据存储器之间的数据传送 MVPD MVPD pmadpmad,SmemSmem MVDP MVDP SmemSmem,pmadpmad READA READA SmemSmem WRITA WRITA SmemSmem 2 2字字 3 3周期周期 2 2字字 4 4周期周期 1 1字字 5 5周期周期 1 1字字 5 5周期周期 Date50DSP原理及应用 第第5 5章章 TMS320C54xTMS320C54x汇编语言程序设计汇编语言程序设计 1. 1. 数据传送指令数据传送指令 (4)(4) 从从PAPA口读口读/ /写数据写数据 PORTR PORTR PAPA,SmemSmem PORTW PORTW SmemSmem,PAPA 2 2字字 2 2周期周期 2 2字字 2 2周期周期 数据传送指令的特点数据传送指令的特点 传送速度比加载和存储指令要快;传送速度比加载和存储指令要快; 数据传送不通过累加器;数据传送不通过累加器; 可寻址程序存储器;可寻址程序存储器; 与与RPTRPT结合,可实现数据块传送。结合,可实现数据块传送。 Date51DSP原理及应用 第第5 5章章 TMS320C54xTMS320C54x汇编语言程序设计汇编语言程序设计 2. 2. 程序存储器至数据存储器的数据传送程序存储器至数据存储器的数据传送 重复执行重复执行MVPDMVPD指令,可以实现程序存储器至数据指令,可以实现程序存储器至数据 存储器的数据传送,在系统初始化过程中十分有用。存储器的数据传送,在系统初始化过程中十分有用。 【例【例5.6.15.6.1】数组数组x8=0,1,2,3,4,5,6,7x8=0,1,2,3,4,5,6,7初始化。初始化。 . . bssbss x,8 x,8 . . datadata TBL TBL: . . word 0,1,2,3,4,5,6,7 word 0,1,2,3,4,5,6,7 . . texttext START START:STM #x,AR5STM #x,AR5 RPT #7 RPT #7 MVPD TBL,*AR5+ MVPD TBL,*AR5+ Date52DSP原理及应用 第第5 5章章 TMS320C54xTMS320C54x汇编语言程序设计汇编语言程序设计 3. 3. 数据存储器之间的数据传送数据存储器之间的数据传送 在数字信号处理时,经常需要将数据存储器中的在数字信号处理时,经常需要将数据存储器中的 一批数据传送到数据存储器的另一个地址空间。一批数据传送到数据存储器的另一个地址空间。 【例【例5.6.25.6.2】进行进行N N点点FFTFFT运算时,为节约存储空间要用到原位运算时,为节约存储空间要用到原位 计算,将数组计算,将数组X16X16赋到数组赋到数组Y16Y16,计算一个蝶计算一个蝶 形后,所得输出数据可以立即存入原输入数据所形后,所得输出数据可以立即存入原输入数据所 占用的存储单元。占用的存储单元。 . .bssbss x x,1616 . .bssbss y y,16 16 STM #xSTM #x,AR2AR2 STM #ySTM #y,AR3AR3 RPT #15RPT #15 MVDD AR2+MVDD AR2+,* *AR3AR3+ + Date53DSP原理及应用 第第5 5章章 TMS320C54xTMS320C54x汇编语言程序设计汇编语言程序设计 5.75.7 小数运算程序小数运算程序 在定点在定点DSPDSP芯片中,采用定点数进行数值运算时芯片中,采用定点数进行数值运算时 ,若操作数采用整型数,则若操作数采用整型数,则DSPDSP芯片给定的字长(一芯片给定的字长(一 般般1616位)决定了整型数的最大范围。位)决定了整型数的最大范围。 1.1.通常,定点通常,定点DSPDSP采用小数乘法。其原因:采用小数乘法。其原因: 乘法器为乘法器为1616位,对于大于位,对于大于1616位的数据难以实位的数据难以实 现乘法递推,且乘积占用存储资源大;现乘法递推,且乘积占用存储资源大; 小数乘法时,既可以存储小数乘法时,既可以存储3232位乘积,也可以位乘积,也可以 存储高存储高1616位乘积,可用较少的资源保存结果位乘积,可用较少的资源保存结果 ; 小数乘法便于乘法递推。小数乘法便于乘法递推。 Date54DSP原理及应用 第第5 5章章 TMS320C54xTMS320C54x汇编语言程序设计汇编语言程序设计 2.2. 小数的表示方法小数的表示方法 如:如: 1 1 7 7FFFHFFFH 0.5 4000H 0.5 4000H 0.25 2000H 0.25 2000H 0 0000H 0 0000H -0.25 E000H -0.25 E000H -0.5 C000H -0.5 C000H -1 8000H -1 8000H 132132 768=7FFFH768=7FFFH 0.5320.532 768=4000H768=4000H 0.25320.2532 768=2000H768=2000H 032032 768=0000H768=0000H (0.2532(0.2532 768)768)补 补=E =E000000H H (0.532(0.532 768)768)补 补= =C000H C000H (132(132 768)768)补 补=8000H =8000H 注意:注意:汇编时,不能直接写成十进制小数汇编时,不能直接写成十进制小数 。 如:如:0.907 0.907 . .word 32word 32 768*907/1000768*907/1000 Date55DSP原理及应用 第第5 5章章 TMS320C54xTMS320C54x汇编语言程序设计汇编语言程序设计 3.3. 小数乘法与冗余符号位小数乘法与冗余符号位 在小数乘法编程时,应事先设置在小数乘法编程时,应事先设置FRCTFRCT位,位, 如:如: SSBX FRCTSSBX FRCT MPY *AR2 MPY *AR2,*AR3*AR3,A A STH A STH A,ZZ 完成了完成了Q15*Q15=Q15Q15*
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安全应急专业知识考试题及答案
- 眼科疾病诊疗与护理考核试题与答案
- 道路运输企业主要负责人模拟试题(含答案)
- 2025年工业园区污水处理站水质监测与安全评估报告
- 解析卷人教版7年级数学上册期中试题及答案详解【基础+提升】
- 2025年数字货币对货币政策传导机制影响下的金融资源配置与金融政策优化报告
- 2025年盐湖提锂技术成本优化策略与产能升级分析报告
- 2025年数字货币与货币政策传导的金融风险防范与治理策略研究报告
- 2025年工业互联网平台网络安全态势感知技术安全事件分析与防范报告
- 银行招聘能力检测试卷及答案详解【典优】
- 2025年餐饮服务从业人员食品安全知识培训考试题及答案
- 已付款返还协议书
- 屋面防水改造项目施工组织设计
- 中医养生课件大纲
- 2025年渔业行业市场趋势分析报告
- 迈瑞注射泵的操作流程
- 2025年电子信息工程专业综合能力考试卷及答案
- 门市转租合同协议书
- 空调系统故障应急预案
- 《探索《资本论》的奥秘》课件
- 临床化疗药物外渗预防及处理护理团体标准
评论
0/150
提交评论