欢迎来到天天文库
浏览记录
ID:50354647
大小:6.93 MB
页数:99页
时间:2020-03-08
《DSP技术及应用 教学课件 作者 江金龙 第5-8章_第5章.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第5章TMS320C54xDSP汇编指令5.1汇编程序格式5.2汇编表达式5.3指令中的符号及缩写5.4指令系统5.5可重复和不可重复执行的指令5.6汇编伪指令汇编语言源程序文件包含三大汇编语言要素:汇编指令、汇编伪指令和宏命令,它们之间的有机组合可完成特定的程序功能。 汇编语言编程有助记符指令集和代数指令集两种,但这两种指令集不能混用。本章介绍助记符指令集,后续章节使用的也是助记符指令。DSP汇编源程序的后缀为.asm,就是assembler(汇编)的缩写。5.1汇编程序格式助记符指令一般由以下四部分(字段)组成,其中有中括号([])的部分为可选项。 [标号
2、][:]助记符[操作数,…][;注释]助记符指令的书写规则如下:(1)所有包含伪指令的语句必须在一行内列出;(2)对于其他指令,如果某行的最后加了反斜杠(\),表示下一行是该行的继续;(3)所有语句必须以标号、空格或分号开始;(4)标号为可选项,如果使用,必须从一行的第一列位置(行首)开始,标号的冒号(:)为可选项,不作为标号的一部分;(5)各字段之间必须用一个或多个空格分开,制表符Tab键等效于空格,而且能实现自动对齐;(6)注释为可选项,如果使用则以分号(;)开始。 以上除注释可以使用中文字符外,其他均为英文字符。1.标号 标号由A~Z、a~z、0~
3、9、_和$等符号组成,区分大小写,最长可达32个字符,但第一个字符不能是数字。标号后面可以带冒号(:),但冒号不作为标号的一部分。 如果使用标号,标号的值就是段程序计数器(SPC)的当前值,也就是该行代码开始存储的地址。例5.1中是一段用汇编语言编写的FIR滤波函数程序,其中_FIR是一个标号,表示这段代码的入口地址。标号_FIR以下划线(_)开始,可以在C语言程序文件中进行调用。因为C文件的函数名经编译后,会自动在函数名前加下划线(_)。例5.1一段FIR滤波函数程序。_FIR:;保护子程序用到的辅助寄存器FRAME-1;FRAME用于开辟局部帧,保护主函数传递来
4、的局部变量PSHMAR2PSHMAR3PSHMST1;ST1含有SXM、FRCT、OVM等控制位STM#_input_mix,input_mix_PLD*input_mix_P,A;将当前采样值载入到A中CALLfir;滤波结果也返回至A中;恢复辅助寄存器和原来的运算状态POPMST1POPMAR3POPMAR2FRAME1RET2.助记符 助记符不能从一行的第一列开始书写,否则被认为是标号。助记符中还包括伪指令或宏调用。3.操作数 操作数字段是一个操作数列表,根据指令要求操作数可以有一个或多个,也可能没有操作数。操作数之间用逗号(,
5、)隔开,它可以是常数、符号或符号表达式,其前缀规定如下所述。 前缀#:表示其后的操作数为立即数。 前缀*:表示其后的操作数为间接寻址。ADD#123,B;将立即数123(十进制)加到累加器B上LD*AR1,A;将AR1所指向的单元内容装载到累加器A中各种数据的前后缀规定如下: 二进制整数,其后加B或b,最多16位,不足16位,其高位用0填充。 八进制整数,其后加Q或q,或者在其前面加数字0,最多6位,不足6位,其高位用符号位填充。十进制整数,由十进制字符组成,范围为-32768~65535。 十六进制整数,其后加H或h,或者在其前面加字符0x
6、,必须以数字0~9开始,最多4位,不足4位,其高位用符号位填充。 浮点数,IEEE-32bit格式,输入格式如下: [±][nnn.nnn]e[±nnn]数据范围从1.175494e-38到3.40282346e38,除非写成整数形式,否则小数点不能省略。如3.e5合法,而3e5则非法,编译器不能识别。nnn均为十进制字符,指数为以10为底的指数。 操作数可以使用以下符号来表示。(1)用.global、.def和.ref定义的全局标号,用$或name?定义的局部标号。全局标号具有系统唯一性,不能重新定义;局部标号只有局部意义,在同一个汇编程序中可重新定义
7、和使用。(2)用.set定义的符号常数。(3)用.mmregs定义的映射寄存器符号。(4)用.asg定义的替代符号等。4.注释 注释可以从一行的任意列开始,除第一符号是分号(;)外。注释中可以使用ASCII字符、空格以及中文字符,建议多加注释,以增加程序的可读性。5.2汇编表达式表达式是由运算符组合起来的常数或符号构成的,它的值必须是唯一或绝对的,有效值范围为-32768~32767。表5.1列出了汇编表达式中可用的运算符,C54x汇编器使用和C语言一样的优先级表示,用小括号(())可以改
此文档下载收益归作者所有