欢迎来到天天文库
浏览记录
ID:21981225
大小:1.56 MB
页数:187页
时间:2018-10-21
《dsp汇编语言程序设计》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第4章DSP汇编语言程序设计4.1TMS320C54x汇编语言的基本概念4.2TMS320C54x汇编语言程序设计的基本方法4.3TMS320C54x汇编语言程序的编辑、汇编与链接过程4.4汇编器4.5链接器4.6汇编程序举例1.汇编语言源程序的句法格式要点以.asm为扩展名每一行由4个部分组成格式[标号][:]空格[助记符]空格[操作数]空格[;注释][]中的内容为可选择部分供本程序的其它部分或其它程序调用。标号是任选项,标号后面可以加也可以不加冒号“:”。4.1TMS320C54x汇编语言的基本概念要点1.标号必须从第
2、1列写起,2.标号最多可达32个字符,可以是A~Z,a~z,0~9,_,以及$,但标号的第1个字符不能是数字。3.引用标号时,标号的大小写必须一致。4.标号的值就是段程序计数器SPC的值。5.如果不用标号,则第一个字母必须为空格、分号或星号(*)。要点建议[标号][:]空格[助记符]空格[操作数]空格[;注释]可以是助记符指令、汇编指令、宏指令和宏调用命令。1.助记符指令,一般用大写;2.汇编命令和宏命令,以句号“.”开始,且为通常用小写。要点[标号][:]空格[助记符]空格[操作数]空格[;注释]1.指令中的操作数或汇编
3、命令中定义的内容2.操作数之间必须用逗号“,”分开。1.从分号“;”开始2.可以放在指令或汇编命令后面,也可以放在单独的一行或数行。要点2.汇编语言源程序的数据型式二进制:如1110001b或1111001B;八进制:226q或572Q;十进制:1234或+1234或-1234(缺省型)十六进制:0A40h或0A40H或0xA40浮点数:1.623e-23(仅C语言程序中能用,汇编程序不能用)字符:‘D’,每位字符由8位ASCII码表示;字符串:“thisisastring”符号用作标号、常数和替代符号。符号名可以是长达2
4、00个字符的字母(A~Z,a~z)、数字(0~9)加上$或下划线(_)。第一个字符不能是数字,符号中间不能有空格。符号分大小写,例如:Abc。3.汇编语言源程序的符号4.表达式1)运算顺序影响表达式运算顺序的三个主要因素是:圆括号、优先级和同级运算顺序。圆括号内的表达式最先运算,不能用{}或[]来代替()。TMS320C54x汇编器的优先级使用与C语言类似,优先级高的运算先执行。表4-1给出了表达式中可用的运算符及优先级。表4-1表达式的运算符及优先级符号操作计算顺序+、−、~取正、取负、按位求补从右到左*、/、%乘、除、
5、求模从左到右<<、>>左移、右移从左到右+、−加、减从左到右<、<=、>、>=小于、小于等于、大于、大于等于从左到右!=、=不等于、等于从左到右&按位与从左到右^按位异或从左到右
6、按位或从左到右2)表达式的合法性表达式在使用符号时,汇编器对符号在表达式中的使用具有一些限制,由于符号的属性不同(即定义不同),使表达式存在合法性问题。符号按属性可分为三种:外部符号、可重定位符号和绝对符号。外部符号是那些在一个模块定义而被另一个模块引用的符号。(一般用.global定义)在汇编和执行阶段,符号值、符号地址不同的是可重定位符号,相
7、同的是绝对符号。含有乘、除法的表达式中只能使用绝对符号(其值不能改变)。表达式中不能使用未定义的符号。表4-2表达式符号的合法性若A为…若B为…则A+B为…则A−B为…绝对绝对绝对绝对绝对外部外部非法绝对可重新定位可重新定位非法可重新定位绝对可重新定位可重新定位可重新定位可重新定位非法绝对可重新定位外部非法非法外部绝对外部外部外部可重新定位非法非法外部外部非法非法4.1.3TMS320C54x伪指令TMS320C54x伪指令给程序提供数据、控制汇编过程。具体实现以下任务:(1)将数据和代码汇编到特定的段。(2)为未初始化的
8、变量保留存储空间。(3)控制展开列表的形式。(4)存储器初始化。(5)汇编条件块。(6)定义全局变量。(7)指定汇编器可以获得宏的特定库。(8)检查符号调试信息。表4-3常用伪指令伪指令句法作用title.title“string”标题名。例如:.title“example.asm”end.end结束伪指令,放在汇编语言源程序的最后text.text[段起点]包含可执行程序代码data.data[段起点]包含初始化数据int.intvalue1[,…,valuen]设置16位无符号整型量word.wordvalue1[,…
9、,valuen]设置16位带符号整型量bss.bss符号,字数为未初始化的变量保留存储空间sect.sect“段名”[,段起点]建立包含代码和数据的自定义段usect符号.usect“段名”,字数为未初始化的变量保留存储空间的自定义段def.def变量1[,…,变量n]在当前模块中定义,并可在别的模块中
此文档下载收益归作者所有