【教学课件】第7章汇编语言程序设计.ppt

上传人:wuy****n92 文档编号:69866270 上传时间:2023-01-10 格式:PPT 页数:171 大小:1.34MB
返回 下载 相关 举报
【教学课件】第7章汇编语言程序设计.ppt_第1页
第1页 / 共171页
【教学课件】第7章汇编语言程序设计.ppt_第2页
第2页 / 共171页
点击查看更多>>
资源描述

《【教学课件】第7章汇编语言程序设计.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第7章汇编语言程序设计.ppt(171页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第第7章章 汇编语言程序设计汇编语言程序设计n7.1 程序流程控制程序流程控制n7.2 数据块传送数据块传送n7.3 定点数的基本算术运算定点数的基本算术运算n7.4 长字运算和并行运算长字运算和并行运算n7.5 FIR滤波器的滤波器的DSP实现实现n7.6 IIR数字滤波器的数字滤波器的DSP实现实现n7.7 FFT运算的运算的DSP实现实现7.1 程序流程控制程序流程控制n7.1.1 程序存储器地址生成程序存储器地址生成n7.1.2 条件操作条件操作n7.1.3 分支转移分支转移n7.1.4 调用与返回调用与返回n7.1.5 重复操作重复操作n7.1.6 TMS320C54x中断系统中断系

2、统n7.1.7 堆栈的使用堆栈的使用返回首页7.1.1 程序存储器地址生成程序存储器地址生成程序存储器中存放指令代码、参数表和立即数。程序程序存储器中存放指令代码、参数表和立即数。程序地址产生逻辑(地址产生逻辑(PAGEN),),包括以下包括以下5个寄存器(如图个寄存器(如图7-1所示):所示):程序计数器(程序计数器(PC););重复计数器(重复计数器(RC););块重复计数器(块重复计数器(BRC););块重复起始地址寄存器(块重复起始地址寄存器(RSA););块重复结束地址寄存器(块重复结束地址寄存器(REA)。)。图7-1 程序地址产生逻辑(PAGEN)寄存器返回本节7.1.2 条件操

3、作条件操作表7-1 条件指令中的各种条件操作符号条 件说 明操作符号条 件说 明AEQA=0累加器A等于0 AOVAOV=1累加器A溢出 BEQB=0累加器B等于0 BOVBOV=1累加器B溢出 ANEQA 0累加器A不等于0 ANOVAOV=0累加器A不溢出 BNEQB 0累加器B不等于0 BNOVBOV=0累加器B不溢出 ALTA0累加器A小于0 CC=1ALU进位位置1 BLTB0累加器A大于0 BIOBIO低 BIO信号电平为低 BGTB0累加器B大于0 NBIOBIO高 BIO信号电平为高 AGEQA 0累加器A大于等于0 UNC无无条件操作 BGEQB 0累加器B大于等于0 表7-

4、2 多条件指令中的条件组合返回本节 可以使用多个条件作为条件指令的操作数可以使用多个条件作为条件指令的操作数可以使用多个条件作为条件指令的操作数可以使用多个条件作为条件指令的操作数,只,只,只,只有所有条件有所有条件有所有条件有所有条件满满满满足足足足时时时时才被才被才被才被认为认为认为认为是是是是满满满满足条件。足条件。足条件。足条件。这种多个这种多个这种多个这种多个条件的组合就构成了指令的多重条件,但必须是特条件的组合就构成了指令的多重条件,但必须是特条件的组合就构成了指令的多重条件,但必须是特条件的组合就构成了指令的多重条件,但必须是特定的条件组合。定的条件组合。定的条件组合。定的条件组

5、合。第1组第2组A类B类A类B类C类 EQ NEQ LEQ GEQ LT GTOVNOVTCNTCCNCBIONBIO 选选选选用用用用多重多重多重多重条件条件条件条件时应时应时应时应当注意以下几点:当注意以下几点:当注意以下几点:当注意以下几点:第第第第1 1 1 1组:分为两类,最多可选择两个条件,组:分为两类,最多可选择两个条件,组:分为两类,最多可选择两个条件,组:分为两类,最多可选择两个条件,组内两类条件可以与组内两类条件可以与组内两类条件可以与组内两类条件可以与/或构成多重条件,但或构成多重条件,但或构成多重条件,但或构成多重条件,但不能用组内同类条件构成不能用组内同类条件构成不能

6、用组内同类条件构成不能用组内同类条件构成与与与与/或或或或多重条件。多重条件。多重条件。多重条件。当选择两个条件时,累加器必须是同一个。当选择两个条件时,累加器必须是同一个。当选择两个条件时,累加器必须是同一个。当选择两个条件时,累加器必须是同一个。例如,可以同时选择例如,可以同时选择例如,可以同时选择例如,可以同时选择AGTAGTAGTAGT和和和和AOVAOVAOVAOV,但不能同时选但不能同时选但不能同时选但不能同时选择择择择AGTAGTAGTAGT和和和和BOVBOVBOVBOV。第第第第2 2 2 2组:分为三类,组:分为三类,组:分为三类,组:分为三类,最多可选三个条件,最多可选三

7、个条件,最多可选三个条件,最多可选三个条件,可可可可以在每类中各选一个条件进行与以在每类中各选一个条件进行与以在每类中各选一个条件进行与以在每类中各选一个条件进行与/或构成多或构成多或构成多或构成多重条件,但不能在同类选两个条件。重条件,但不能在同类选两个条件。重条件,但不能在同类选两个条件。重条件,但不能在同类选两个条件。例如,可以同时测试例如,可以同时测试例如,可以同时测试例如,可以同时测试TCTCTCTC、C C C C和和和和BIOBIOBIOBIO,但不能同时但不能同时但不能同时但不能同时测试测试测试测试NTCNTCNTCNTC、C C C C和和和和NCNCNCNC。【例例例例7-

8、17-17-17-1】条件条件条件条件操作程序操作程序操作程序操作程序。BCsubBCsub,BLEQBLEQ ;条件分支转移条件分支转移条件分支转移条件分支转移 若累加器若累加器若累加器若累加器B0B0,则转至则转至则转至则转至subsub,否则,往下执行否则,往下执行否则,往下执行否则,往下执行 CCstartCCstart,AGEQAGEQ,AOVAOV ;条件调用条件调用条件调用条件调用 若累加器若累加器若累加器若累加器A0A0且溢出且溢出且溢出且溢出,则调用则调用则调用则调用startstart,否则往下执行否则往下执行否则往下执行否则往下执行 RCNTCRCNTC ;条件返回条件返

9、回条件返回条件返回 若若若若TC=0TC=0,则返回,否则往下执行则返回,否则往下执行则返回,否则往下执行则返回,否则往下执行 注意:注意:注意:注意:注意:注意:若需要多个条件相与时,用单条指令表示。若需要多个条件相与时,用单条指令表示。若需要多个条件相与时,用单条指令表示。若需要多个条件相与时,用单条指令表示。如:如:如:如:BC new,AGT,AOVBC new,AGT,AOVBC new,AGT,AOVBC new,AGT,AOV 转移条件:转移条件:转移条件:转移条件:AGTAGTAGTAGT和和和和AOVAOVAOVAOV的与逻辑的与逻辑的与逻辑的与逻辑 若需要两个条件相或时,需

10、用两条指令分若需要两个条件相或时,需用两条指令分若需要两个条件相或时,需用两条指令分若需要两个条件相或时,需用两条指令分别表示。别表示。别表示。别表示。如:如:如:如:若累加器若累加器若累加器若累加器A A A A大于大于大于大于0 0 0 0或溢出或溢出或溢出或溢出,则转移至则转移至则转移至则转移至subsubsubsub 转移条件:转移条件:转移条件:转移条件:AGTAGTAGTAGT和和和和AOVAOVAOVAOV的或逻辑的或逻辑的或逻辑的或逻辑 BC sub,AGTBC sub,AGTBC sub,AGTBC sub,AGT BC sub,AOVBC sub,AOVBC sub,AOV

11、BC sub,AOV7.1.3 分支转移分支转移 通通通通过传过传过传过传送控制到程序存送控制到程序存送控制到程序存送控制到程序存储储储储器的其他位置,分支器的其他位置,分支器的其他位置,分支器的其他位置,分支转转转转移会中断移会中断移会中断移会中断连续连续连续连续的指令流。的指令流。的指令流。的指令流。分支转移指令通过改写分支转移指令通过改写分支转移指令通过改写分支转移指令通过改写PCPCPCPC值,使程序改变流向。值,使程序改变流向。值,使程序改变流向。值,使程序改变流向。其指令分为无条件分支转移、条件分支转移和远分支其指令分为无条件分支转移、条件分支转移和远分支其指令分为无条件分支转移、

12、条件分支转移和远分支其指令分为无条件分支转移、条件分支转移和远分支转移三类。转移三类。转移三类。转移三类。三者都可以带延时操作和不带延时操作。三者都可以带延时操作和不带延时操作。三者都可以带延时操作和不带延时操作。三者都可以带延时操作和不带延时操作。分支转移指令 分 类 指 令 说 明 无条件分支转移 BD 用该指令指定的地址加载PC BACCD 用累加器的低16位指定的地址加载PC 条 件分支转移 BCD 若满足指令给定条件,用该指令指定的地址加载PC BANGD 若当前选择辅助寄存器不等于0,用该指令指定的地址加载PC 远 程分支转移 FBD 用该指令指定的地址加载PC和XPC FBACC

13、D 用累加器的低23位指定的地址加载PC和XPC 无条件分支转移:无条件执行分支转移;无条件分支转移:无条件执行分支转移;无条件分支转移:无条件执行分支转移;无条件分支转移:无条件执行分支转移;条件分支转移:要在满足用户一个或多个条件时条件分支转移:要在满足用户一个或多个条件时条件分支转移:要在满足用户一个或多个条件时条件分支转移:要在满足用户一个或多个条件时才执行分支转移;才执行分支转移;才执行分支转移;才执行分支转移;远程分支转移:允许分支转移到扩展存储器。远程分支转移:允许分支转移到扩展存储器。远程分支转移:允许分支转移到扩展存储器。远程分支转移:允许分支转移到扩展存储器。【例【例【例【

14、例7-27-27-27-2】分支转移举例。分支转移举例。分支转移举例。分支转移举例。STM#88HSTM#88HSTM#88HSTM#88H,AR0AR0AR0AR0 LD#1000HLD#1000HLD#1000HLD#1000H,A A A A zhong zhong zhong zhong:SUB AR0 SUB AR0 SUB AR0 SUB AR0,A A A A BC zhongBC zhongBC zhongBC zhong,AGTAGTAGTAGT,AOVAOVAOVAOV ;将操作数将操作数将操作数将操作数#88#88#88#88H H H H装入装入装入装入AR0AR0AR

15、0AR0 ;将操作数将操作数将操作数将操作数#1000#1000#1000#1000H H H H装入装入装入装入ACCACCACCACC ;将将将将A A A A中的内容减去中的内容减去中的内容减去中的内容减去AR0AR0AR0AR0中中中中的的的的 ;内容结果装入;内容结果装入;内容结果装入;内容结果装入A A A A ;若累加器若累加器若累加器若累加器A0A0A0A0且溢出,且溢出,且溢出,且溢出,;则转至则转至则转至则转至zhong,zhong,zhong,zhong,否则往下执行否则往下执行否则往下执行否则往下执行 【例【例【例【例7-37-3】比较操作后条件分支转移比较操作后条件分

16、支转移比较操作后条件分支转移比较操作后条件分支转移 STM#5,AR1STM#5,AR1STM#5,AR1STM#5,AR1 ;AR1=5AR1=5AR1=5AR1=5 STMSTMSTMSTM#10,AR0#10,AR0#10,AR0#10,AR0 ;AR0=10AR0=10AR0=10AR0=10 loop:loop:loop:loop:*AR1+AR1+AR1+AR1+;AR1=AR1+1AR1=AR1+1AR1=AR1+1AR1=AR1+1 CMPR LT,AR1CMPR LT,AR1CMPR LT,AR1CMPR LT,AR1 ;若若若若AR1-AR0AR1-AR0AR1-AR0AR

17、1-AR0 0 0 0 0,则则则则TC=1TC=1TC=1TC=1,否则为否则为否则为否则为0 0 0 0 BC loop,TCBC loop,TCBC loop,TCBC loop,TC ;若若若若AR1-AR0AR1-AR0AR1-AR0AR1-AR0 RAM1RAM1RAM1RAM1 .data data data data :RAM1 RAM1 RAM1 RAM1 .vars vars vars vars :SPRAM1SPRAM1SPRAM1SPRAM1 .STACK:SPRAM2 .STACK:SPRAM2 .STACK:SPRAM2 .STACK:SPRAM2 7.1.7 堆栈

18、的使用堆栈的使用堆栈被用于保存中断程序、调用子程序的返堆栈被用于保存中断程序、调用子程序的返回地址,也用于保护和恢复用户指定的寄存器和回地址,也用于保护和恢复用户指定的寄存器和数据,还可用于程序调用时的参数传递。返回地数据,还可用于程序调用时的参数传递。返回地址是由址是由DSP自动保存的。自动保存的。用户编写的压栈指令和出栈指令将指定的内用户编写的压栈指令和出栈指令将指定的内容压入和弹出堆栈,容压入和弹出堆栈,SP总是指向最后压入堆栈的总是指向最后压入堆栈的数据,压栈之前数据,压栈之前SP减减1,出栈之后,出栈之后SP加加1。C54x支支持持软软件件堆堆栈栈,在在用用户户指指定定的的存存储储区

19、区开开辟辟一一块块存存储储区区作作为为堆堆栈栈存存储储器器。堆堆栈栈的的定定义义及及初初始化步骤为:始化步骤为:1)声明具有适当长度的未初始化段;)声明具有适当长度的未初始化段;2)将堆栈指针指向栈底;)将堆栈指针指向栈底;3)在在链链接接命命令令文文件件(.cmd)中中将将堆堆栈栈段段放放入入内部数据存储区。内部数据存储区。返回本节1.1.1.1.堆栈的设置堆栈的设置堆栈的设置堆栈的设置 size .set 120size .set 120size .set 120size .set 120 stack .usect “STACK”stack .usect “STACK”stack .use

20、ct “STACK”stack .usect “STACK”,sizesizesizesize STM#STM#STM#STM#stackstackstackstack+sizesizesizesize,SPSPSPSP 在数据在数据在数据在数据RAMRAMRAMRAM空空空空间间间间开辟一个堆开辟一个堆开辟一个堆开辟一个堆栈栈栈栈区。区。区。区。在在在在RAMRAMRAMRAM中定义一个中定义一个中定义一个中定义一个STACKSTACKSTACKSTACK的保留空的保留空的保留空的保留空间间间间,共,共,共,共120120120120个个个个单单单单元元元元 设置堆栈指针,设置堆栈指针,设置

21、堆栈指针,设置堆栈指针,#stackstackstackstack+sizeSPsizeSPsizeSPsizeSP。保留区的高地址赋给保留区的高地址赋给保留区的高地址赋给保留区的高地址赋给SPSPSPSP,作为堆栈的栈底作为堆栈的栈底作为堆栈的栈底作为堆栈的栈底 若程序中要使用堆栈,必须先进行设置,如:若程序中要使用堆栈,必须先进行设置,如:若程序中要使用堆栈,必须先进行设置,如:若程序中要使用堆栈,必须先进行设置,如:设置好堆栈后,就可以使用堆栈了,如:设置好堆栈后,就可以使用堆栈了,如:设置好堆栈后,就可以使用堆栈了,如:设置好堆栈后,就可以使用堆栈了,如:CALL pmad CALL

22、pmad CALL pmad CALL pmad;(SP)-1SP,(PC)+2TOS(SP)-1SP,(PC)+2TOS(SP)-1SP,(PC)+2TOS(SP)-1SP,(PC)+2TOS,pmadPCpmadPCpmadPCpmadPC RET RET RET RET ;(TOS)PC,(SP)+1SP(TOS)PC,(SP)+1SP(TOS)PC,(SP)+1SP(TOS)PC,(SP)+1SP 2.2.2.2.堆栈区大小的确定堆栈区大小的确定堆栈区大小的确定堆栈区大小的确定 先开辟一个先开辟一个先开辟一个先开辟一个较较较较大的堆大的堆大的堆大的堆栈栈栈栈区,用已知数充填区,用已知数

23、充填区,用已知数充填区,用已知数充填,如,如,如,如:LD#LD#LD#LD#-9224-9224-9224-9224,B B B B STM#STM#STM#STM#lengthlengthlengthlength,AR1AR1AR1AR1 MVMM SP MVMM SP MVMM SP MVMM SP,AR4AR4AR4AR4 loop loop loop loop:STL B STL B STL B STL B,*AR4-*AR4-*AR4-*AR4-BANZ loopBANZ loopBANZ loopBANZ loop,*AR1AR1AR1AR1-堆堆堆堆栈栈栈栈区的大小可以按照以下

24、步区的大小可以按照以下步区的大小可以按照以下步区的大小可以按照以下步骤骤骤骤来确定:来确定:来确定:来确定:;堆栈区要充填的数堆栈区要充填的数堆栈区要充填的数堆栈区要充填的数0 0 0 0DBF8hDBF8hDBF8hDBF8h加载加载加载加载B B B B ;设置循环次数设置循环次数设置循环次数设置循环次数;设置数据指针设置数据指针设置数据指针设置数据指针AR4AR4AR4AR4,SPAR4SPAR4SPAR4SPAR4;循环,充填数据循环,充填数据循环,充填数据循环,充填数据 数据RAMDDDDDSPDDBF8DBF8DBF8DBF8DBF8DBF8DBF8DBF8DBF8DBF8DBF8

25、DBF8AR4AR4lengthlength2.2.2.2.堆栈区大小的确定堆栈区大小的确定堆栈区大小的确定堆栈区大小的确定 先开辟一个先开辟一个先开辟一个先开辟一个较较较较大的堆大的堆大的堆大的堆栈栈栈栈区,用已知数充填区,用已知数充填区,用已知数充填区,用已知数充填。堆堆堆堆栈栈栈栈区的大小可以按照以下步区的大小可以按照以下步区的大小可以按照以下步区的大小可以按照以下步骤骤骤骤来确定:来确定:来确定:来确定:数据RAMAR4DBF8DBF8DBF8DBF8DBF8SPDBF86B146B1400130013SPSP 运行程序,执行所有堆栈操作。运行程序,执行所有堆栈操作。运行程序,执行所有

26、堆栈操作。运行程序,执行所有堆栈操作。检查检查检查检查堆堆堆堆栈栈栈栈中的数中的数中的数中的数值值值值。7AB37AB3 用过的堆栈区就是实际需要用过的堆栈区就是实际需要用过的堆栈区就是实际需要用过的堆栈区就是实际需要的堆栈空间。的堆栈空间。的堆栈空间。的堆栈空间。用过的栈区用过的栈区用过的栈区用过的栈区 C54xC54xC54xC54xC54xC54x有有有有有有101010101010条数据传送指令,共分为四类:条数据传送指令,共分为四类:条数据传送指令,共分为四类:条数据传送指令,共分为四类:条数据传送指令,共分为四类:条数据传送指令,共分为四类:(1)(1)(1)(1)(1)(1)数据

27、存储器之间的数据传送数据存储器之间的数据传送数据存储器之间的数据传送数据存储器之间的数据传送数据存储器之间的数据传送数据存储器之间的数据传送 MVDK SmemMVDK SmemMVDK SmemMVDK Smem,dmaddmaddmaddmad MVKD dmadMVKD dmadMVKD dmadMVKD dmad,SmemSmemSmemSmem MVDD XmemMVDD XmemMVDD XmemMVDD Xmem,YmemYmemYmemYmem2 2 2 2字字字字 2 2 2 2周期周期周期周期2 2 2 2字字字字 2 2 2 2周期周期周期周期1 1 1 1字字字字 1

28、1 1 1周期周期周期周期7.2 数据块传送数据块传送(2)(2)(2)(2)(2)(2)数据存储器与数据存储器与数据存储器与数据存储器与数据存储器与数据存储器与MMRMMRMMRMMRMMRMMR之间的数据传送之间的数据传送之间的数据传送之间的数据传送之间的数据传送之间的数据传送 MVDM dmadMVDM dmadMVDM dmadMVDM dmad,MMRMMRMMRMMR MVMD MMR MVMD MMR MVMD MMR MVMD MMR,dmaddmaddmaddmad MVMM MMRx MVMM MMRx MVMM MMRx MVMM MMRx,MMRyMMRyMMRyMMR

29、y 2 2 2 2字字字字 2 2 2 2周期周期周期周期2 2 2 2字字字字 2 2 2 2周期周期周期周期1 1 1 1字字字字 1 1 1 1周期周期周期周期(3)(3)(3)(3)(3)(3)程序存储器和数据存储器之间的数据传送程序存储器和数据存储器之间的数据传送程序存储器和数据存储器之间的数据传送程序存储器和数据存储器之间的数据传送程序存储器和数据存储器之间的数据传送程序存储器和数据存储器之间的数据传送 MVPD pmadMVPD pmadMVPD pmadMVPD pmad,SmemSmemSmemSmem MVDP SmemMVDP SmemMVDP SmemMVDP Smem

30、,pmadpmadpmadpmad READA SmemREADA SmemREADA SmemREADA Smem WRITA Smem WRITA Smem WRITA Smem WRITA Smem 2 2 2 2字字字字 3 3 3 3周期周期周期周期2 2 2 2字字字字 4 4 4 4周期周期周期周期1 1 1 1字字字字 5 5 5 5周期周期周期周期1 1 1 1字字字字 5 5 5 5周期周期周期周期(4)(4)(4)(4)(4)(4)从从从从从从PAPAPAPAPAPA口读口读口读口读口读口读/写数据写数据写数据写数据写数据写数据 PORTR PAPORTR PAPORTR

31、 PAPORTR PA,SmemSmemSmemSmem PORTW SmemPORTW SmemPORTW SmemPORTW Smem,PAPAPAPA 2 2 2 2字字字字 2 2 2 2周期周期周期周期2 2 2 2字字字字 2 2 2 2周期周期周期周期数据传送指令的特点:数据传送指令的特点:数据传送指令的特点:数据传送指令的特点:数据传送指令的特点:数据传送指令的特点:传传传传传传送速度比加送速度比加送速度比加送速度比加送速度比加送速度比加载载载载载载和存和存和存和存和存和存储储储储储储指令要快;指令要快;指令要快;指令要快;指令要快;指令要快;数据数据数据数据数据数据传传传传传

32、传送不通送不通送不通送不通送不通送不通过过过过过过累加器;累加器;累加器;累加器;累加器;累加器;可可可可可可寻寻寻寻寻寻址程序存址程序存址程序存址程序存址程序存址程序存储储储储储储器;器;器;器;器;器;与与与与与与RPTRPTRPTRPTRPTRPT结结结结结结合,可合,可合,可合,可合,可合,可实现实现实现实现实现实现数据数据数据数据数据数据块传块传块传块传块传块传送。送。送。送。送。送。1 1编写汇编源程序为编写汇编源程序为 .mmregs .def _c_int00 .dataTBL:.word0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,1 7,

33、18,19 .word 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1PROM:.usect PROM,20 .bss a,20 .bss x,20 .bss y,20DATA:.usectDATA,20 .text_c_int00 b start nop nopstart:STM#a,AR1;a20=0,1,2,3,4,5,6,7,8,9,10,;11,12,13,14,15,16,17,18,19 RPT#39 ;x20=1,1,1,1,1,1,1,1,1,1 MVPD TBL,*AR1+;1,1,1,1,1,1,1,1,1,1 STM#x,AR2;将将数数

34、据据存存储储器器中中的的数数组组x20复复制制到到数数组组y20 STM#y,AR3 RPT#19 MVDD*AR2+,*AR3+STM#a,AR1;将数据存储器中的将数据存储器中的a20写入到程序存储器写入到程序存储器PROM LD#PROM,A STM#19,AR3LOOPP:WRITA *AR1+ADD#1,A,A BANZ LOOPP,*AR3-LD#PROM-1,A ;读程序存储器读程序存储器PROM中中20个数据存入个数据存入DATA STM#DATA,AR1 ST#19,BRC RPTB LOOP2 ADD#1,A,ALOOP2:READA *AR1+;该指令为单字指令该指令为单

35、字指令WAIT:NOP B WAIT2 2建立汇编源程序建立汇编源程序n点点 击击 CCS C5000图图 标标,进进 入入 CCS环环 境境,再再 点点 击击FileNewSource File菜菜单单命命令令,打打开开一一个个空空白白文文档档,将汇编源程序逐条输入。将汇编源程序逐条输入。n单单击击FileSave菜菜单单命命令令,出出现现如如图图7-5所所示示的的窗窗口口,选选择择D:Program Filesti myprojcetsmymove子子目目录录,在在“文文件件名名”一一栏栏中中输输入入mymove,并并选选择择保保存存类类型型为为Assembly Source Files(

36、*.asm),单单击击“保保存存”按按钮钮,以上汇编程序被存盘。以上汇编程序被存盘。3 3建立链接命令文件建立链接命令文件n点点击击FileNewSource File菜菜单单命命令令,打打开开一一个个空空白白文文档,逐条输入链接命令文件。档,逐条输入链接命令文件。mymove.obj -o mymove.out -m mymove.map MEMORY PAGE 0:RAM:origin=1000h,length=800h RAM1:origin=2000h,length=300h PAGE 1:DARAM1:origin=0100h,length=100h DARAM2:origin=02

37、00h,length=100h SECTIONS.data :RAM PAGE 0.text :RAM PAGE 0 PROM:RAM1 PAGE 0.bss:DARAM1 PAGE 1 DATA:DARAM2 PAGE 1n点点 击击 FileSave菜菜 单单 命命 令令,如如 图图 7-5所所 示示,选选 择择D:Program Filestimyprojcetsmymove子子目目录录,在在“文文件件名名”一一栏栏中中输输入入mymove,并并选选择择保保存存类类型型为为TI Command Language File(*.cmd),单单击击“保保存存”按按钮,以上链接命令程序被存盘。

38、钮,以上链接命令程序被存盘。4 4创建一个新工程创建一个新工程n在在 Project菜菜 单单 中中 选选 择择 New项项,弹弹 出出 Project Creation(工工程程创创建建)窗窗口口,如如图图7-6所所示示。在在Project一一栏栏键键入入mymove,然然后后单单击击“完完成成”按按钮钮,CCS将将创创建建一一个个名名为为mymove.pjt的的工工程程,此此文文件件保保存存了了工工程程的的设设置置信信息息及及工工程程中中的的文文件件引引用情况。用情况。图7-5 保存汇编源程序 图7-6 工程创建窗口5 5将有关文件添加到工程中将有关文件添加到工程中n从从Project菜菜

39、单单中中选选取取Add Files to Project命命令令,选选择择文文件件mymove.asm,双双击击将将mymove.asm添加到工程中。添加到工程中。n点点击击ProjectAdd Files to Project菜菜单单命命令令,将将mymove.cmd添加到工程文件中。添加到工程文件中。n逐逐层层打打开开如如图图7-7所所示示。双双击击mymove.asm打打开开文文件,可以观察和修改件,可以观察和修改mymove.asm文件的内容。文件的内容。6汇编、编译和链接产生汇编、编译和链接产生.out文件文件n点点击击Project菜菜单单中中的的Rebuild All。请请注注意

40、意在在监监视视窗窗口口显显示示的的汇汇编编、编编译译和和链链接接的的相相关关信信息息。如如果果没没有有错错误误,将将产产生生mymove.out文文件件;如如果果有有错错,在在监监视视窗窗口口以以红红色色字字体体显显示示出出错错行行,用用鼠鼠标标双双击击该该行行,光光标标跳跳将将至至源源程程序序相相应应的的出出错错行行。修修改改错错误后,重新汇编、链接。误后,重新汇编、链接。7加载并运行加载并运行.out文件文件n执执 行行 菜菜 单单 命命 令令 FileLoad Program,选选 择择mymove.out并并打打开开,将将Rebuild All生生成成的的程程序序加加载载到到DSP中中

41、。CCS将将自自动动打打开开一一个个反反汇汇编编窗窗口口,显示加载程序的反汇编指令。显示加载程序的反汇编指令。n点点击击DebugRun菜菜单单命命令令运运行行程程序序,单单步步执执行行程程序序则则点点击击DebugStepInto菜菜单单命命令令,或或按按F8键。键。8观察运行结果观察运行结果n点点击击ViewMemory菜菜单单命命令令,将将出出现现如如图图7-8所所示示的的选选项项窗窗口口,将将Address改改为为0 x0100,单单击击OK按按钮钮,将将在在汇汇编编窗窗口口显显示示选选定定的的数数据据空空间间的的内内容。容。n当当结结果果数数据据错错误误时时,可可检检查查源源程程序序

42、并并进进行行修修改改。修修改改完完毕毕,可可重重新新汇汇编编、链链接接,再再加加载载运运行行.out文件,直到结果正确。文件,直到结果正确。返回本节7.3 定点数的基本算术运算定点数的基本算术运算n7.3.1 加法、减法和乘法运算加法、减法和乘法运算n7.3.2 定点除法运算定点除法运算返回首页1.1.1.1.定点定点定点定点DSPDSPDSPDSP中数据的表示方法中数据的表示方法中数据的表示方法中数据的表示方法(1 1 1 1)数的定标数的定标数的定标数的定标 采用小数运算时,采用小数运算时,采用小数运算时,采用小数运算时,设设设设定小数点在定小数点在定小数点在定小数点在16161616位中

43、的位置位中的位置位中的位置位中的位置称称称称为为为为定定定定标标标标。小数点在小数点在小数点在小数点在16161616位数中的位置不同,可以表示不同位数中的位置不同,可以表示不同位数中的位置不同,可以表示不同位数中的位置不同,可以表示不同大小和不同精度的小数。大小和不同精度的小数。大小和不同精度的小数。大小和不同精度的小数。数的定标通常有数的定标通常有数的定标通常有数的定标通常有Q Q Q Q表示法,如表示法,如表示法,如表示法,如Q0Q0Q0Q0,Q1Q1Q1Q1,Q15Q15Q15Q15。Q Q Q Q越大,可以表示的数的范围越小,但精度越高。越大,可以表示的数的范围越小,但精度越高。越大

44、,可以表示的数的范围越小,但精度越高。越大,可以表示的数的范围越小,但精度越高。在具体的定点程序中,必须根据具体情况适当在具体的定点程序中,必须根据具体情况适当在具体的定点程序中,必须根据具体情况适当在具体的定点程序中,必须根据具体情况适当选择合适的定标。选择合适的定标。选择合适的定标。选择合适的定标。7.3.1 加法、减法和乘法运算加法、减法和乘法运算表7-10 Q表示、S表示及数值范围(2 2 2 2)小数的表示方法)小数的表示方法)小数的表示方法)小数的表示方法 C54x C54x C54x C54x采用基于采用基于采用基于采用基于2 2 2 2的的的的补码补码补码补码小数表示形式。每个

45、小数表示形式。每个小数表示形式。每个小数表示形式。每个16161616位位位位数用数用数用数用1 1 1 1个符号位个符号位个符号位个符号位(最高位最高位最高位最高位)、Q Q Q Q个整数位、个整数位、个整数位、个整数位、15-15-15-15-Q Q Q Q个小数位个小数位个小数位个小数位来表示。来表示。来表示。来表示。采用采用采用采用2 2 2 2的的的的补码补码补码补码小数小数小数小数(Q Q Q Q15151515格式格式格式格式),其位,其位,其位,其位权值为权值为权值为权值为:MSB LSB MSB LSB MSB LSB MSB LSB MSB LSB MSB LSB -1.2

46、-1.2-1.2-1.2-1.2-1.2-1-1-1-1-1-1 2 2 2 2 2 2-2-2-2-2-2-2 2 2 2 2 2 2-3-3-3-3-3-3 2 2 2 2 2 2-15-15-15-15-15-15 例如:例如:例如:例如:00000010.1010000000000010.1010000000000010.1010000000000010.101000002 2 2 21 1 1 1+2+2+2+2-1-1-1-1+2+2+2+2-3-3-3-3=2.6252.6252.6252.625 Q15Q15Q15Q15格式格式格式格式2 2 2 2的补码小数的补码小数的补码小

47、数的补码小数表示方法:表示方法:表示方法:表示方法:将将将将十十十十进进进进制制制制小小小小数数数数乘乘乘乘以以以以32323232 768768768768,并并并并将将将将整整整整数数数数乘乘乘乘积积积积转转转转换换换换成成成成16161616进制数。进制数。进制数。进制数。正数:正数:正数:正数:正数:正数:乘以乘以乘以乘以乘以乘以323232323232 768768768768768768,整数转换成,整数转换成,整数转换成,整数转换成,整数转换成,整数转换成161616161616进制数;进制数;进制数;进制数;进制数;进制数;负数:负数:负数:负数:负数:负数:其绝对值乘以其绝对

48、值乘以其绝对值乘以其绝对值乘以其绝对值乘以其绝对值乘以323232323232 768768768768768768,整数取反加,整数取反加,整数取反加,整数取反加,整数取反加,整数取反加1 1 1 1 1 1。图7-9 DSP定点运算中小数的表示 如:如:如:如:如:如:1 1 1 1 1 1 7 7 7 7 7 7FFFHFFFHFFFHFFFHFFFHFFFH 0.5 4000H 0.5 4000H 0.5 4000H 0.5 4000H 0.5 4000H 0.5 4000H 0.25 2000H 0.25 2000H 0.25 2000H 0.25 2000H 0.25 2000H

49、0.25 2000H 0 0000H 0 0000H 0 0000H 0 0000H 0 0000H 0 0000H -0.25 E000H -0.25 E000H -0.25 E000H -0.25 E000H -0.25 E000H -0.25 E000H -0.5 C000H -0.5 C000H -0.5 C000H -0.5 C000H -0.5 C000H -0.5 C000H -1 8000H -1 8000H -1 8000H -1 8000H -1 8000H -1 8000H132132132132132132 768=7FFFH768=7FFFH768=7FFFH768=

50、7FFFH768=7FFFH768=7FFFH0.5320.5320.5320.5320.5320.532 768=4000H768=4000H768=4000H768=4000H768=4000H768=4000H0.25320.25320.25320.25320.25320.2532 768=2000H768=2000H768=2000H768=2000H768=2000H768=2000H032032032032032032 768=0000H768=0000H768=0000H768=0000H768=0000H768=0000H(0.2532(0.2532(0.2532(0.2532

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁