Lecture10-第7章-1-C55x汇编语言的DSP软件开发教学课件PPT.ppt
《Lecture10-第7章-1-C55x汇编语言的DSP软件开发教学课件PPT.ppt》由会员分享,可在线阅读,更多相关《Lecture10-第7章-1-C55x汇编语言的DSP软件开发教学课件PPT.ppt(65页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、完整版教学课件完整版教学课件Lecture10-第7章-1-C55x汇编语言的DSP软件开发DSP芯片原理与应用第11讲 C55x汇编语言的DSP芯片软件开发(一)汇编指令目 录CONTENTS1 引言1 C55x汇编语言2 C55x汇编指令系统3 C55x寻址方式1、C55x汇编语言 机器语言 利用机器码来表达程序执行功能的语言 汇编语言 利用助记符指令、代数指令来表达程序执行功能的语言 高级语言 利用自然语言的表达习惯,来表达程序执行功能的语言编程语言1、C55x汇编语言 助记符指令: 利用几个英文字母来表示一条DSP指令,如用ADD来表示加法运算指令, 便于记忆和书写。 代数指令: 利用
2、代数运算符号来表示指令,如利用“+”来表示加法指令 指令较为直观。汇编语言助记符指令集代数指令集1、C55x汇编语言基本组成:源语句汇编语言指令、汇编伪指令、宏伪指令和注释一般一句程序占据编辑器的一行。每行源语句的长度可以是源文件编辑器格式允许的长度,但语句的执行部分的字符长度必须小于200。标号域、指令域、操作数域和注释域标号:指令操作数列表 ; 注释注: 内的部分是可选项。语句必须以标号、空格、星号或分号开始;长度规范:汇编语句格式:1、C55x汇编语言基本组成:源语句汇编语言指令、汇编伪指令、宏伪指令和注释一般一句程序占据编辑器的一行。每行源语句的长度可以是源文件编辑器格式允许的长度,但
3、语句的执行部分的字符长度必须小于200。标号域、指令域、操作数域和注释域标号:指令操作数列表 ; 注释注: 内的部分是可选项。标号为可选项。若要使用标号,则必须从第1列开始。标号长度最多为32个字符,由AZ,az,09,_和$等组成,第1个字符不能为数字。标号后可以跟一个冒号(:),但并不作为标号的一部分;长度规范:汇编语句格式:1、C55x汇编语言基本组成:源语句汇编语言指令、汇编伪指令、宏伪指令和注释一般一句程序占据编辑器的一行。每行源语句的长度可以是源文件编辑器格式允许的长度,但语句的执行部分的字符长度必须小于200。标号域、指令域、操作数域和注释域标号:指令操作数列表 ; 注释注: 内
4、的部分是可选项。每个域必须由1个或多个空格分开,制表符等效于空格;注释是可选项,开始于第1列的注释须用星号或分号(*或;)标示,但在其他列开始的注释前面只能标分号;长度规范:汇编语句格式:1、C55x汇编语言基本组成:源语句汇编语言指令、汇编伪指令、宏伪指令和注释一般一句程序占据编辑器的一行。每行源语句的长度可以是源文件编辑器格式允许的长度,但语句的执行部分的字符长度必须小于200。标号域、指令域、操作数域和注释域标号:指令操作数列表 ; 注释注: 内的部分是可选项。指令域一定不能从第1列开始,否则将被视为标号。指令域包括以下操作码之一:助记符指令、汇编伪指令(如.data,.set)、宏伪指
5、令(如.var,.macro)和宏调用;长度规范:汇编语句格式:1、C55x汇编语言基本组成:源语句汇编语言指令、汇编伪指令、宏伪指令和注释一般一句程序占据编辑器的一行。每行源语句的长度可以是源文件编辑器格式允许的长度,但语句的执行部分的字符长度必须小于200。标号域、指令域、操作数域和注释域标号:指令操作数列表 ; 注释注: 内的部分是可选项。操作数域为操作数的列表。操作数可以是常数、符号或者是表达式。当操作数为立即寻扯时,使用符号作为前缀;操作数为间接寻址时,使用*符号作为前缀,将操作数的内容作为地址。长度规范:汇编语句格式:1、C55x汇编语言* 第1步:分配块* .def x,y,in
6、itx .usect vars,4 ; 为变量x保留4个未初始化的16位内存空间y .usect vars,1 ; 为变量y保留4个未初始化的16位内存空间.sect table ; 创建一个名为“table”的初始化数据块init .int 1,2,3,4 ; 定义一个数组init,包含4个整形数.text ; 创建一个代码块(默认是.text).def start ; 定义代码的起始标号(起始地址)start ; 标号*第2步:初始化处理器模式* BCLR C54CM ; 设置处理器为C55x本地模式BCLR AR0LC ; 设置寄存器AR0处于线性寻址状态BCLR AR6LC ; 设置寄
7、存器AR0处于线性寻址状态汇编语句示例助记符指令标号汇编伪指令操作数注释1、C55x汇编语言*第3步a:复制初始化数据到x中* copy; 标号AMOV #x, XAR0; 寄存器XAR0指向xAMOV #init, XAR6 ; 寄存器XAR6指向初始化数据initMOV *AR6+, *AR0+ ; 将第1个数据从init0复制到x0MOV *AR6+, *AR0+; 将第2个数据从init1复制到x1MOV *AR6+, *AR0+; 将第3个数据从init2复制到x2MOV *AR6, *AR0; 将第4个数据从init3复制到x3汇编语句示例*表示间接寻址标号汇编伪指令立即数1、C5
8、5x汇编语言寄存器的名称:AR1,Arn,XAR2累加器:ACC,BCC比特位的名称:C54CM,AR0LC汇编语言程序中常出现的符号:PC program-counterprogram-counter,16bits16bits寄存器,保存待执行指令的地址寄存器,保存待执行指令的地址XPC 扩展扩展PCPC寄存器,程序区扩展超过寄存器,程序区扩展超过64K64K时,保存高位地址时,保存高位地址SP stack pointer,stack pointer,堆栈指针寄存器堆栈指针寄存器常用寄存器名1、C55x汇编语言寄存器的名称:AR1,Arn,XAR2累加器:ACC,BCC比特位的名称:C54C
9、M,AR0LC汇编语言程序中常出现的符号:1、C55x汇编语言寄存器的名称:AR1,Arn,XAR2累加器:ACC,BCC比特位的名称:C54CM,AR0LC汇编语言程序中常出现的符号: 64K Word 1、C55x汇编语言寄存器的名称:AR1,Arn,XAR2累加器:ACC,BCC比特位的名称:C54CM,AR0LC汇编语言程序中常出现的符号:支持COFF格式的伪指令支持DWARF(Debuging With Attributed Record Formats)调试格式的伪指令汇编语言程序中的伪指令:以”.”开始初始化伪指令内存对齐伪指令符号定义伪指令条件控制伪指令宏定义伪指令1、C55x
10、汇编语言汇编语言程序中的伪指令COFF调试格式 .func和.endfunc指明C函数的开始和终止; .block和.endblock指明C块的边界; .file用来定义符号表中的一个符号,确定当前的源文件名; .line用于指明当前属于C源程序中哪一行; .sym指明全局变量、局部变量或函数的符号调试信息,name放入符号表的变量名,前32字符有效;.sym name, value , type, storage class, size, tag, dims1、C55x汇编语言汇编语言程序中的伪指令COFF调试格式 .func和.endfunc指明C函数的开始和终止; .block和.end
11、block指明C块的边界; .file用来定义符号表中的一个符号,确定当前的源文件名; .line用于指明当前属于C源程序中哪一行; .sym指明全局变量、局部变量或函数的符号调试信息value指定变量的值,可用合法的表达式表示.sym name, value , type, storage class, size, tag, dims1、C55x汇编语言汇编语言程序中的伪指令COFF调试格式 .func和.endfunc指明C函数的开始和终止; .block和.endblock指明C块的边界; .file用来定义符号表中的一个符号,确定当前的源文件名; .line用于指明当前属于C源程序中哪
12、一行; .sym指明全局变量、局部变量或函数的符号调试信息type指定变量的C语言类型.sym name, value , type, storage class, size, tag, dims1、C55x汇编语言汇编语言程序中的伪指令COFF调试格式 .func和.endfunc指明C函数的开始和终止; .block和.endblock指明C块的边界; .file用来定义符号表中的一个符号,确定当前的源文件名; .line用于指明当前属于C源程序中哪一行; .sym指明全局变量、局部变量或函数的符号调试信息storage class指定变量的C存储类型,如结构、枚举、联合、外部定义、外部变
13、量、静态变量等;.sym name, value , type, storage class, size, tag, dims1、C55x汇编语言汇编语言程序中的伪指令COFF调试格式 .func和.endfunc指明C函数的开始和终止; .block和.endblock指明C块的边界; .file用来定义符号表中的一个符号,确定当前的源文件名; .line用于指明当前属于C源程序中哪一行; .sym指明全局变量、局部变量或函数的符号调试信息size指明该变量的比特位数;.sym name, value , type, storage class, size, tag, dims1、C55x汇
14、编语言汇编语言程序中的伪指令COFF调试格式 .func和.endfunc指明C函数的开始和终止; .block和.endblock指明C块的边界; .file用来定义符号表中的一个符号,确定当前的源文件名; .line用于指明当前属于C源程序中哪一行; .sym指明全局变量、局部变量或函数的符号调试信息tag指明这个变量所属类型或结构的名称,这个名称必须已经由.stag、.etag或.utag 声明过;.sym name, value , type, storage class, size, tag, dims1、C55x汇编语言汇编语言程序中的伪指令COFF调试格式 .func和.endf
15、unc指明C函数的开始和终止; .block和.endblock指明C块的边界; .file用来定义符号表中的一个符号,确定当前的源文件名; .line用于指明当前属于C源程序中哪一行; .sym指明全局变量、局部变量或函数的符号调试信息dims由1到4个由逗号分隔的表达式组成,分别表明该变量的维数。.sym name, value , type, storage class, size, tag, dims1、C55x汇编语言汇编语言程序中的伪指令COFF调试格式.stag、.etag和.utag分别定义结构、枚举和联合等的符号调试信息.member用于详指其中的一个成员;.eos与.sta
16、g、.etag和.utag配合,表示该数据结构类型的终止点。.utag name , sizemember definitions.eos.etag name , sizemember definitions.eos.stag name , sizemember definitions.eos1、C55x汇编语言助记符及助记符及语法语法描描述述初始化初始化常数常数.space size in bits在当前块中保留指定数量的位;汇编器在这些保留的位填在当前块中保留指定数量的位;汇编器在这些保留的位填0;也可以;也可以通过用通过用16乘以需保留的字数来保留字;当前面有标号时,其指向保留乘以需保留
17、的字数来保留字;当前面有标号时,其指向保留位的第一个字或字节位的第一个字或字节地址地址对齐对齐.align size使使SPC(sectionprogramcounter)指向)指向1到到128个字的边界;个字的边界;Size的值的值必须为必须为2的整数幂,默认时相当于的整数幂,默认时相当于128.align1 ;SPC指向字的边界;指向字的边界;.align2 ;SPC指向双字(偶数地址)的边界;指向双字(偶数地址)的边界;.align128;SPC指向页的边界指向页的边界符号符号定义定义.struct开始结构体定义开始结构体定义条件条件控制控制.if well-d e f i n e d
18、expression如果条件成立,汇编该块代码如果条件成立,汇编该块代码宏定义宏定义.macro定义宏;可在程序任意部分定义,但在使用宏前必须已定义定义宏;可在程序任意部分定义,但在使用宏前必须已定义汇编语言程序中的伪指令(举例)目 录CONTENTS1 引言1 C55x汇编语言2 C55x汇编指令系统3 C55x寻址方式2、C55x汇编指令系统指令分类2、C55x汇编指令系统指令指令作用作用指令指令作用作用ABDST绝对距离LMS最小均方ABS绝对值MAC乘累加ADD加法MACMZ带延迟的乘累加ADDSUBCC带条件加减、搬移ACCu的内容MAS乘累减ADDSUB2CC带条件加减同时移位MA
19、X比较累加器、辅助寄存器或临时寄存器内容的最大值ADDV带绝对值加MAXDIFF比较选择累加器内容的最大值EXP计算累加器指数MIN比较累加器、辅助寄存器或临时寄存器内容的最小值FIRSADD对称FIR滤波MINDIFF比较选择累加器内容的最小值FIRSSUB反对称FIR滤波MPY乘法算术指令列表2、C55x汇编指令系统指令作用NEG对累加器、辅助寄存器或临时寄存器的内容取相反数ROUND对累加器内容四舍五入SAT对累加器内容饱和运算SQA平方累加SQDST平方距离SQR平方SQS平方差SUB减法SUBC条件减算术指令列表Cont.2、C55x汇编指令系统加法指令语法并行使能 大小 周期 流水
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Lecture10 C55x 汇编语言 DSP 软件 开发 教学 课件 PPT
限制150内