第5章 C54x汇编语言程序设计.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第5章 C54x汇编语言程序设计

第5章 TMS320C54x汇编语言程序设计 内容提要 汇编语言程序设计是应用软件设计的基础,主要任务是利用汇编指令和伪指令编写源程序以完成指定的功能。 本章将结合例子介绍TMS320C54x汇编语言源程序设计的基本方法,涉及的内容包括: 汇编语言源程序的格式 常数、字符串、符号和表达式的规定 堆栈的使用方法 分支、调用、返回控制程序 加法、乘法、除法、长字和并行运算程序 单指令、块重复、循环嵌套等重复操作程序 数据块传送程序 小数运算程序和浮点运算程序 5.1 概述 TMS320C54x汇编语言源程序由源语句组成。这些语句可以包含汇编语言指令、汇编伪指令和注释。程序的编写必须符合一定的格式,以便汇编器将源文件转换成机器语言的目标文件。 本节将介绍汇编语言源程序的格式、各种常数、符号、字符串和表达式的规定。 汇编语言程序以.asm为扩展名,可以用任意的编辑器编写源文件。一条语句占源程序的一行,长度可以是源文件编辑器格式允许的长度,但汇编器每行最多读200个字符。因此,语句的执行部分必须限制在200个字符以内。 5.1.1 汇编语言源程序格式 1. 源文件格式 助记符指令源语句的每一行通常包含4个部分:标号区、助记符区、操作数区和注释区。 助记符指令语法格式: [标号][:] 助记符 [操作数] [; 注释] 【例5.1.1】 助记符指令源语句举例。 语句的书写规则: ① 所有语句必须以标号、空格、星号或分号(*或;)开始; ② 标号是可选项,若使用标号,则标号必须从第一列开始; ③ 所有包含有汇编伪指令的语句必须在一行完成指定; ④ 各部分之间必须用空格分开,Tab字符与空格等效; ⑤ 程序中注释是可选项。如果注释在第一列开始时,前面必须标上星号或分号,在其他列开始的注释前面必须以分号开头; ⑥ 如果源程序很长,需要书写若干行,可以在前一行用反斜杠字符(\)结束,余下部分接着在下一行继续书写。 2.标号 所有汇编指令和大多数汇编伪指令都可以选用标号,供本程序或其它程序调用。 ① 标号必须从语句的第1列写起,其后的冒号“:”可任选; ② 标号为任选项,若不使用标号,则语句的第一列必须是空格、星号或分号; ③ 标号是由字母、数字以及下划线和美元符号等组成,最多可达32个字符; ④ 标号分大小写,且第一个字符不能是数字。 在使用标号时,标号的值是段程序计数器SPC的当前值。 例如,若使用.word伪指令初始化几个字,则标号将指到第一个字。 【例5.1.2】 标号格式举例。 … … 9 000000 ;假设汇编了某个其他代码 10 000040 000A Start: .word 0Ah,3,7 000041 0003 └──标号,值为40h 000042 0007 3.助记符 助记符用来表示指令所完成的操作,可以是汇编语言指令、汇编伪指令、宏伪指令。 助记符指令:一般用大写,不能从第一列开始 ; 汇编伪指令:用来为程序提供数据和控制汇编进程。以句号“.”开始,且用小写; 宏伪指令:用来定义一段程序,以便宏调用来调用这段程序。以句号“.”开始,且用小写; 宏调用:用来调用由宏伪指令定义的程序段。 4.操作数 操作数是指指令中参与操作的数值或汇编伪指令定义的内容,紧跟在助记符的后面,由一个或多个空格分开。 ? 操作数之间必须用逗号“,”分隔; 操作数可以是常数、符号或表达式; 操作数中的常数、符号或表达式可用来作为地址、立即数或间接地址; (1) 指令的操作数前缀 ? 汇编器允许指定的常数、符号或表达式作为地址、立即数或间接地址。 作为操作数的前缀有三种情况: 使用“#”符号作为操作数的前缀; 使用“*”符号作为操作数的前缀; 使用“@” 符号作为操作数的前缀。 ① 用“#” 作前缀 使用“#”号作为前缀,汇编器将操作数作为立即数处理。即使操作数是寄存器或地址,也将作为立即数。 如果操作数是地址,汇编器将把地址处理为一个数值,而不使用地址的内容。 例如: Label: ADD # 99, B 操作数# 99是一个立即数。 ② 用“*”作前缀 使用“*”符号作为前缀,汇编器将操作数作为间接地址,即把操作数的内容作为地址。 例如:Label: LD * AR3, B 操作数*AR3指定一个间接地址。该指令将引导汇编器找到寄存器AR3的内容作为地址,然后将该地址中的内容装入指定的累加器B中。 ③ 用“@”作前缀 使用“@

文档评论(0)

317960162 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档