DSP原理与应用周彦课件第5章'C54x的汇编语言程序设计

上传人:E**** 文档编号:90580885 上传时间:2019-06-13 格式:PPT 页数:153 大小:2.44MB
返回 下载 相关 举报
DSP原理与应用周彦课件第5章'C54x的汇编语言程序设计_第1页
第1页 / 共153页
DSP原理与应用周彦课件第5章'C54x的汇编语言程序设计_第2页
第2页 / 共153页
DSP原理与应用周彦课件第5章'C54x的汇编语言程序设计_第3页
第3页 / 共153页
DSP原理与应用周彦课件第5章'C54x的汇编语言程序设计_第4页
第4页 / 共153页
DSP原理与应用周彦课件第5章'C54x的汇编语言程序设计_第5页
第5页 / 共153页
点击查看更多>>
资源描述

《DSP原理与应用周彦课件第5章'C54x的汇编语言程序设计》由会员分享,可在线阅读,更多相关《DSP原理与应用周彦课件第5章'C54x的汇编语言程序设计(153页珍藏版)》请在金锄头文库上搜索。

1、2019年6月13日,DSP原理及应用,1,第5章 TMS320C54x汇编语言程序设计,内容提要 汇编语言程序设计是应用软件设计的基础,主要任务是利用汇编指令和伪指令编写源程序以完成指定的功能。 本章将结合例子介绍TMS320C54x汇编语言源程序设计的基本方法,涉及的内容包括: 汇编语言源程序的格式 常数、字符串、符号和表达式的规定 堆栈的使用方法 分支、调用、返回控制程序 加法、乘法、除法、长字和并行运算程序 单指令、块重复、循环嵌套等重复操作程序 数据块传送程序 小数运算程序和浮点运算程序,2019年6月13日,DSP原理及应用,2,第5章 TMS320C54x汇编语言程序设计,5.1

2、 概述 5.2 堆栈的使用方法 5.3 控制程序 5.4 算术运算程序 5.5 重复操作程序 5.6 数据块传送程序 5.7 小数运算程序 5.8 浮点运算程序,2019年6月13日,DSP原理及应用,3,第5章 TMS320C54x汇编语言程序设计,5.1 概述,TMS320C54x汇编语言源程序由源语句组成。这些语句可以包含汇编语言指令、汇编伪指令和注释。程序的编写必须符合一定的格式,以便汇编器将源文件转换成机器语言的目标文件。 本节将介绍汇编语言源程序的格式、各种常数、符号、字符串和表达式的规定。,2019年6月13日,DSP原理及应用,4,第5章 TMS320C54x汇编语言程序设计,

3、5.1 概述,汇编语言程序以.asm为扩展名,可以用任意的编辑器编写源文件。一条语句占源程序的一行,长度可以是源文件编辑器格式允许的长度,但汇编器每行最多读200个字符。因此,语句的执行部分必须限制在200个字符以内。,5.1.1 汇编语言源程序格式,2019年6月13日,DSP原理及应用,5,第5章 TMS320C54x汇编语言程序设计,1. 源文件格式,5.1.1 汇编语言源程序格式,助记符指令源语句的每一行通常包含4个部分:标号区、助记符区、操作数区和注释区。,标号: 助记符 操作数 ; 注释,助记符指令语法格式:,【例5.1.1】 助记符指令源语句举例。 NANHUA .set 1 ;

4、 符号NANHUA1 Begin: LD #NANHUA,AR1 ; 将1加载到AR1,标 号,助记符,操作数,注 释,2019年6月13日,DSP原理及应用,6,第5章 TMS320C54x汇编语言程序设计,1. 源文件格式,语句的书写规则:, 所有语句必须以标号、空格、星号或分号(*或;)开始; 标号是可选项,若使用标号,则标号必须从第一列开始; 所有包含有汇编伪指令的语句必须在一行完成指定; 各部分之间必须用空格分开,Tab字符与空格等效;,2019年6月13日,DSP原理及应用,7,第5章 TMS320C54x汇编语言程序设计,1. 源文件格式,语句的书写规则:, 程序中注释是可选项。

5、如果注释在第一列开始时,前面必须标上星号或分号,在其他列开始的注释前面必须以分号开头; 如果源程序很长,需要书写若干行,可以在前一行用反斜杠字符()结束,余下部分接着在下一行继续书写。,2019年6月13日,DSP原理及应用,8,第5章 TMS320C54x汇编语言程序设计,2.标号,所有汇编指令和大多数汇编伪指令都可以选用标号,供本程序或其它程序调用。, 标号必须从语句的第1列写起,其后的冒号“:”可任选; 标号为任选项,若不使用标号,则语句的第一列必须是空格、星号或分号; 标号是由字母、数字以及下划线和美元符号等组成,最多可达32个字符; 标号分大小写,且第一个字符不能是数字。,2019年

6、6月13日,DSP原理及应用,9,第5章 TMS320C54x汇编语言程序设计,2.标号,在使用标号时,标号的值是段程序计数器SPC的当前值。 例如,若使用.word伪指令初始化几个字,则标号将指到第一个字。,【例5.1.2】 标号格式举例。 9 000000 10 000040 000A Start: .word 0Ah,3,7 000041 0003 000042 0007,;假设汇编了某个其他代码,标号,值为40h,2019年6月13日,DSP原理及应用,10,第5章 TMS320C54x汇编语言程序设计,3.助记符,助记符用来表示指令所完成的操作,可以是汇编语言指令、汇编伪指令、宏伪指

7、令。,助记符指令:一般用大写,不能从第一列开始 ;,汇编伪指令:用来为程序提供数据和控制汇编进程。以句号“.”开始,且用小写;,宏伪指令:用来定义一段程序,以便宏调用来调用这段程序。以句号“.”开始,且用小写;,宏调用:用来调用由宏伪指令定义的程序段。,2019年6月13日,DSP原理及应用,11,第5章 TMS320C54x汇编语言程序设计,4.操作数,操作数是指指令中参与操作的数值或汇编伪指令定义的内容,紧跟在助记符的后面,由一个或多个空格分开。, 操作数之间必须用逗号“,”分隔; 操作数可以是常数、符号或表达式; 操作数中的常数、符号或表达式可用来作为地址、立即数或间接地址;,2019年

8、6月13日,DSP原理及应用,12,第5章 TMS320C54x汇编语言程序设计,4.操作数,(1) 指令的操作数前缀, 使用“#”符号作为操作数的前缀; 使用“*”符号作为操作数的前缀; 使用“” 符号作为操作数的前缀。,汇编器允许指定的常数、符号或表达式作为地址、立即数或间接地址。 作为操作数的前缀有三种情况:,2019年6月13日,DSP原理及应用,13,第5章 TMS320C54x汇编语言程序设计,(1) 指令的操作数前缀, 用“#” 作前缀,例如: Label: ADD # 99, B,使用“#”号作为前缀,汇编器将操作数作为立即数处理。即使操作数是寄存器或地址,也将作为立即数。 如

9、果操作数是地址,汇编器将把地址处理为一个数值,而不使用地址的内容。,操作数# 99是一个立即数。,2019年6月13日,DSP原理及应用,14,第5章 TMS320C54x汇编语言程序设计,(1) 指令的操作数前缀, 用“*”作前缀,例如: Label: LD * AR3, B,使用“*”符号作为前缀,汇编器将操作数作为间接地址,即把操作数的内容作为地址。,操作数*AR3指定一个间接地址。该指令将引导汇编器找到寄存器AR3的内容作为地址,然后将该地址中的内容装入指定的累加器B中。,2019年6月13日,DSP原理及应用,15,第5章 TMS320C54x汇编语言程序设计,(1) 指令的操作数前

10、缀, 用“”作前缀,例如: Label: LD x, A,使用“”符号作为前缀,汇编器将操作数作为直接地址,即操作数由直接地址码赋值。,只要DP=0,将直接地址x中的内容装入指定的累加器A中。,2019年6月13日,DSP原理及应用,16,第5章 TMS320C54x汇编语言程序设计,4.操作数,(2) 伪指令的立即数,例如: SUB # 18, B ; 操作数#18为立即数,将“#”加在数值之前而构成的立即数方式,主要用在指令中。,通常,立即数在伪指令中用的较少,但在某些情况下,立即数也可以作为伪指令的操作数。,例如: .byte 18,立即数方式没有使用,但汇编器认为操作数是一个数值18(

11、即立即数),用18数值初始化一个字节。,2019年6月13日,DSP原理及应用,17,第5章 TMS320C54x汇编语言程序设计,5.注释,用来说明指令功能的文字,便于用户阅读。, 注释可位于句首或句尾,位于句首时,以“*”或“;”开始,位于句尾时,以分号“;”开始。, 注释可单独一行或数行; 注释是任选项。,11 00000 .bss sym, ; 保留空间于.bss * * 改变段,允许第五个mylab定义 * *,例如:,2019年6月13日,DSP原理及应用,18,第5章 TMS320C54x汇编语言程序设计,5.1.2 汇编语言中的常数与字符串,汇编器可支持7种类型的常数(常量)。

12、,2019年6月13日,DSP原理及应用,19,第5章 TMS320C54x汇编语言程序设计,5.1.2 汇编语言中的常数与字符串,二进制整型常量最多由16位二进制数字(0或1)组成,后缀为B(或b)。如果数字小于16位,汇编器将其右边对齐,并在前面补零。,1.二进制整数,例如: 10001000B 136(十进制)或88(十六进制) 0111100b 60(十进制)或3C(十六进制) 10b 2(十进制)或2(十六进制) 10001111B 143(十进制)或8F(十六进制),2019年6月13日,DSP原理及应用,20,第5章 TMS320C54x汇编语言程序设计,5.1.2 汇编语言中的

13、常数与字符串,八进制整型常量最多由6位的八进制数字(0到7) 组成,后缀为Q(或q)或前缀为0(零)。,2.八进制整数,例如: 100011Q 32777(十进制)或8009(十六进制) 124q 84 (十进制)或54(十六进制),八进制常数也可使用C语言的记号,即加前缀0。 0100011 32777(十进制)或8009(十六进制) 0124 84 (十进制)或54(十六进制),2019年6月13日,DSP原理及应用,21,第5章 TMS320C54x汇编语言程序设计,5.1.2 汇编语言中的常数与字符串,十进制整型常量由十进制数字串组成,无后缀。取值范围为:32 76832 767或06

14、5 535。,3.十进制整数,例如: 2118 2118(十进制)或846(十六进制) 65535 65535(十进制)或0FFFF(十六进制) 32768 32768(十进制)或8000(十六进制),2019年6月13日,DSP原理及应用,22,第5章 TMS320C54x汇编语言程序设计,5.1.2 汇编语言中的常数与字符串,十六进制整型常量最多由4位十六进制数字组成,带后缀H(或h)。它必须以数字(09)开始,也可以加前缀0x。,4.十六进制整数,例如: 0DH 14(十进制)或000D(十六进制) 12BCH 4796(十进制)或12BC(十六进制),十六进制常数也可用C语言记号,即加

15、前缀0x。 0x0D 14(十进制)或000D(十六进制) 0x12BC 4796(十进制)或12BC(十六进制),2019年6月13日,DSP原理及应用,23,第5章 TMS320C54x汇编语言程序设计,5.1.2 汇编语言中的常数与字符串,浮点整型常量由一串十进制数字组成,可以带小数点、分数和指数部分。,5.浮点常数,浮点数的表示方法: nn E | e n,n为一串十进制数,浮点数前可带加减号(或),且小数点必须指定。,例如: 99.e9有效的数;99e9非法。 合法:.314 ,3.14 , -.314e-19 。,2019年6月13日,DSP原理及应用,24,第5章 TMS320C54x汇编语言程序设计,5.1.2 汇编语言中的常数与字符串,在程序中使用.set伪指令给一个符号赋值,该符号就成为一个汇编时间常数,等效于一个常数。 为了使用表达式中的常数,赋给符号的必须是绝对值。,6. 汇编时间常数,例如:将常数值18赋给符号bei_hua。 bei_hua .set 18 LD # bei_hua,A,2019年6月13日,DSP原理及应用,25,第5章 TMS320C54x汇编语言程序设计,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号