- 1、本文档共187页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
DSP汇编语言程序的设计
第4章 DSP汇编语言程序设计 ;1.汇编语言源程序的句法格式 ;要 点;要点;要点;2.汇编语言源程序的数据型式 ; ; 4.表达式
1) 运算顺序
影响表达式运算顺序的三个主要因素是:圆括号、优先级和同级运算顺序。
圆括号内的表达式最先运算,不能用{ }或[ ]来代替( )。
TMS320C54x汇编器的优先级使用与C语言类似,优先级高的运算先执行。 表4-1给出了表达式中可用的运算符及优先级。 ;表4-1 表达式的运算符及优先级 ; 2) 表达式的合法性
表达式在使用符号时,汇编器对符号在表达式中的使用具有一些限制,由于符号的属性不同(即定义不同),使表达式存在合法性问题。
符号按属性可分为三种:外部符号、可重定位符号和绝对符号。
; 外部符号是那些在一个模块定义而被另一个模块引用的符号。 ??一般用.global定义)
在汇编和执行阶段,符号值、符号地址不同的是可重定位符号,相同的是绝对符号。
含有乘、除法的表达式中只能使用绝对符号(其值不能改变)。表达式中不能使用未定义的符号。;表4-2 表达式符号的合法性; 4.1.3 TMS320C54x伪指令
TMS320C54x伪指令给程序提供数据、控制汇编过程。具体实现以下任务:
(1) 将数据和代码汇编到特定的段。
(2) 为未初始化的变量保留存储空间。
(3) 控制展开列表的形式。
(4) 存储器初始化。
(5) 汇编条件块。
(6) 定义全局变量。
(7) 指定汇编器可以获得宏的特定库。
(8) 检查符号调试信息。
;表4-3 常 用 伪 指 令 ; 1.段定义伪指令
段定义伪指令有以下五个:
● .bss(未初始化段)
● .data(已初始化段)
● .sect(已初始化段)
● .text(已初始化段)
● .usect(未初始化段)
; 1) 未初始化段
.bss和 .usect命令建立未初始化段。
.bss伪指令为未初始化变量在.bss段中预留空间;
.usect伪指令在一个未初始化的自定义段中预留空间。 .usect伪指令与.bss类似,但是它可以把预留空间与.bss段分离。
这两条命令的句法如下:
.bss 符号,字数
符号 .usect “段名”,字数
; 2) 已初始化段
.text、.data和 .sect命令建立已初始化段。 这三条命令的句法如下:
.text [段起点]
.data [段起点]
.sect 段名”[,段起点]; .text后是汇编语言程序的正文。经汇编后,.text后的是可执行程序代码,一般存放于程序存储器区域中。
.data后是已初始化数据,有int和word两种数据形式。由命令文件可以将定义的数据存放于程序或数据存储器中。
.sect建立包含代码和数据的自定义段,常用于定义中断向量表。 ; 2.常数初始化伪指令
(1) .bes和 .space。汇编器对这些保留的位填0,将位数乘以16来实现保留字。当标号与.space连用时,标号指向保留位的第一个字;当标号与.bes连用时,标号指向保留位的最后一个字。
(2) .field。此指令可以把多个域打包成一个字,汇编器不会增加SPC的值,直至填满一个字。
(3) .float和 .xfloat。这两个指令将32位浮点数存放在当前段的连续字中,高位字先存。.float伪指令能自动按长字(偶地址)边界排列,但 .xfloat不能。
; (4) .long和 .xlong。这两个指令将32位数存放在当前段的连续字中,高位字先存。.long伪指令能自
文档评论(0)