第4章 TMS320C55x汇编语言

合集下载

第四章汇编工具

第四章汇编工具

例子
TMS320C54x Assembly Language Tools User’s Guide Page 4-14
5、段程序计数器(SPC)定位指令
SPC用于记录每个段的当前的指针位置, 便于编译器分配各个段 .align其后只能是20-27间的2的幂值, 其后不带参数,默认为128,即对准页 边界,为1表示对准字边界,为2表示对 准偶数边界,为N表示对准页内的第N 个字边界 通常作用是使SPC对准字边界,偶地址 边界或者页边界
TMS320C54x Assembly Language Tools User’s Guide Page 4-10
4、常数初始化
对于初始化段,可以使用下列伪指令定义初 始化数据 .long .word/.int .byte .string 例子同前页 对于未初始化段,可以使用下列伪指令来保 留空间 .space 例如: lable: .space 19 表示当前段中保留19bit空间,首地址为lable。 也可以如前面例子中 .bss sym, 19 ; Reserve space in .bss
注释域:
如果从第一列开始,可以使用;或者*, 否则使用;。 每行所以字符不可以超过200个,否则 200个以后的自动截去。
三、常用汇编伪指令
1、汇编伪指令的作用 将代码和数据汇编进特定的段; 为未初始化的变量保留存储空间; 存储器初始化; 定义全局变量
2、COFF文件格式
TMS320C54x Assembly Language Tools User’s Guide Page A-2,A-3
TMS320C54x Assembly Language Tools User’s Guide PAGE1-2

第4章软件开发

第4章软件开发

第4章 TMS320C54x的软件开发
C 源文件 宏源文件 C 编译器 助记符指令 转换为 代数指令
归档器 汇编源文件


汇编器
汇编源文件
归档器
COFF 目标文件
建立可用库 调试工具
目标文件库
链接器
运行支持库
可执行 COFF 文件 Hex 格式转换
EPROM 编程器
绝对列表
交叉引用列表
C54x
第4章 TMS320C54x的软件开发
第4章 TMS320C54x的软件开发
基本段
所有的COFF目标文件都包含以下 3种形式的段
.text 段 .data 段 .bss 段 存储空间)。 (此段通常包含可执行代码); (此段通常包含初始化数据); (此段通常为未初始化变量保留
第4章 TMS320C54x的软件开发
4.4.2 汇编器对段的处理
vectors
共 建 立 了 5 个 段 。 目 标 代 码 图
第4章 TMS320C54x的软件开发
4.4.3 链接器对段的处理 !!!
1. 将由汇编器产生的COFF格式的一个或多
个.obj文件链接成一个可执行的.out文件;
2. 重新定位,将输出的段分配到相应的存储
器空间。
第4章 TMS320C54x的软件开发
4.4 公共目标文件格式——COFF
• COFF (Common Object File Format,COFF)
汇编器和链接器所创建的目标文件 。 • COFF的核心概念 使用代码块(段)和数据块(段)编程,而不是指令 或数据简单的顺序编写。
第4章 TMS320C54x的软件开发
采用段形式的优缺点

第4章_TMS320C54x的软件开发过程

第4章_TMS320C54x的软件开发过程

2015年6月26日
DSP原理及应用
8
第4章 TMS320C54x的软件开发过程
2. ’C54x的开发工具
(2)代码调试工具:
C/汇编语言源码调试器:与软件仿真器、评价模块 、软件开发系统、软件模拟器等配合使用。 软件仿真器:一种模拟DSP芯片各种功能并在非实时 条件下进行软件调试的调试工具,它不需目标硬件支持 ,只需在计算机上运行。
2015年6月26日 DSP原理及应用 7
第4章 TMS320C54x的软件开发过程
2. ’C54x的开发工具
(1)代码生成工具:
绝对制表程序(Absolute lister):将链接后的 目标文件作为输入,生成.abs输出文件。 交叉引用制表程序(Cross-reference lister): 利用目标文件生成一个交叉引用清单,列出链接的源文件 中的符号以及它们的定义和引用情况。
2015年6月26日 DSP原理及应用 6
第4章 TMS320C54x的软件开发过程
2. ’C54x的开发工具
(1)代码生成工具:
助记符指令—代数式指令翻译器(Mnemonic-toalgbraic translator utility):将包含助记符指令的汇 编语言源文件转换成包含代数式指令的汇编语言源文件。 建库实用程序(Library-build utility):建立用 户自己使用的、并用C/C++语言编写的支持运行的库函数。 十六进制转换程序(Hex conversion utility): 可以很方便地将COFF目标文件转换成TI、Intel、Motorola 等公司的目标文件格式。
集成开发环境(CCS):提供了环境设置、源文件编 辑、程序调试、跟踪和分析的工具,可帮助用户在软件 环境下完成编辑、编译、链接、数据分析等工作。

第4章 汇编语言

第4章 汇编语言

44
例:4.15
A EQU THIS WORD B DB 1,2,3,4,5,6,7,8 等价于: B EQU THIS BYTE
A DW 0201H,0403H,0605H,0807H
相似功能:

AARRAY
BARRAY
LABEL伪指令
Hale Waihona Puke 100个字 空间……
例如:
BARRAY LABEL BYTE AARRAY DW 100 DUP(?)
22 0 0 0 22 0 0 0 66 55 44 33
55
数据定义伪指令的几点说明:

伪指令的性质决定所定义变量的属性; 定义超过两个字符的字符串必须用DB伪指令;

例: 41H 42H 43H 44H 66H
取得其后变量或标号的段地址
取变量或标号的类型 取所定义存储区的长度(规定) 取所定义存储区的字节数 (LENGTH值和TYPE值的乘积)
36
取值运算符例
MOV AX,SEG DATA MOV DS,AX
MOV BX,OFFSET DATA
等价于
LEA BX,DATA
39
取值运算符例

若BUFFER存储区用如下伪指令定义: BUFFER DW 200 DUP(0)

汇编语言 源程序
汇编程序
(8086宏汇编程序为MASM.EXE)
机器语言 目标程序
9
三、 汇编语言程序设计与执行过程


输入汇编语言源程序(EDIT)
汇编(MASM)
源文件 . ASM
目标文件 .OBJ 可执行文件.EXE


链接(LINK)
调试(DEBUG)

DSP技术 第5章 TMS320C54x DSP的汇编语言程序设计

DSP技术 第5章 TMS320C54x DSP的汇编语言程序设计
如1682416824表达式表达式2018年1月25日dsp原理及应用10序号序号运算操作运算操作求值顺序求值顺序11取正取负按位求补逻辑负取正取负按位求补逻辑负乘法除法求模乘法除法求模加法减法加法减法指数指数从左到右从左到右55左移右移左移右移小于小于等于小于小于等于大于大于等于大于大于等于不等于等于不等于等于按位与运算按位与运算1010按位异或运算按位异或运算1111按位或运算按位或运算表中运算符的优先级是从上到下同级是从左到右
A B T FRCT
指令执行前 00 0000 1000H 00 0000 0000H
0400H 1
A B T FRCT
指令执行后 00 0000 1000H 00 001A 3800H 0400H 1
【例13】 MACR *AR3+,*AR4+,A,B
A B T FRCT AR3 AR4 数据存储器 0100H 0200H
表5.8 乘加和乘减指令
【例11】 MAC #345H,A,B
A B T FRCT
指令执行前 00 0000 1000H 00 0000 0000H 0400H 0
A B T FRCT
指令执行后 00 0000 1000H 00 000D 2400H 0400H 0
【例12】 MAC #345H,A,B
表达式可以是常数、符号,或者是由算术运算符 分开的一系列常数和符号。
有效表达式的值: -32 768~32 767 影响表达式的主要因素:
① 圆括号( )。圆括号内的表达式最先计算; ② 优不先能级用。大’括C号5{4x}汇或编中器括使号用[ ]代与替C语圆言括相号似( 的)。优
先级,优先级高的先计算;
0101H 0201H

第四章_TMS320C54x的软件开发_1

第四章_TMS320C54x的软件开发_1

指令数目:C54x汇编器共有64条汇编伪指令。
汇编伪指令用以形成常数和变量,当用它控制汇编 和链接过程时,可以不占存储空间。
.data .text
汇编伪指令分成8类(根据功能):
1. 对各种段进行定义的伪指令; 2. 对常数(数据和存储器)进行初始化的伪指令; 3. 调整SPC(段寄存器)的指令; 4. 输出列表文件格式伪指令;
段中。这样虽然程序中是多个.data段分散在各处,但汇编器只创建一 个.data段,它可以连续地被分配到内存中。
2. 常数初始化伪指令(共有24条)
.int和.word 把一个或多个16位数存放到当前段的连 续字中。.int为无符号整型量,.word为带符号整型量。
.byte 把一个或多个8位的值放入当前段的连续字中。
RPT
#7
;move 8 values
;from program memory into ; data memory
MVPD table, *AR1+
CALL SUM
end: B end
;call SUM subroutine
SUM: STM
#a, AR3
;The subroutine implement
已经定位于选定的边界,它就不会增加了。.align伪指令的
操作数必须等于20~216之间的一个2的幂值(尽管超过27的值 没有意义)。不同的操作数代表了不同的边界定位要求。
操作数为1是让SPC对准字边界;
操作数为2是让SPC对准长字(偶地址)边界; 操作数为128是让SPC对准页边界; 不带操作数时,其默认值为128,即对准页边界。
• 以下是字符串的例子:
"sample program"定义了一个长度为14的字符串: sample program; "PLAN""C"""定义了一个长度为7的字符串:PLAN"C"。 CH4-2

【学习】第4章TMS320C54x的软件开发与设计

整理课件
十六进制转换公用程序(Hex Conversion Utility) 将COFF目标文件转换成为若干种标准的文件格式: ❖ ASCII-十六进制 ❖Extended Tektronix ❖Intel MCS-86 ❖Motorola Exorciser
整理课件
整理课件
⊙全汇编编程:
代码效率高,可直接对硬件设置;代码量较大,可读性差。
⊙全C编程:
提高软件开发速度和可读性,方便软件移植;代码效率较低,硬件控 制不方便。
⊙混合编程
✓ 混合编程几种方法:
(1)独立编写C/C++程序和汇编程序,分开编译或汇编形成各自 的目标模块,再用链接器将C/C++模块和汇编模块链接起来。 (2)在C/C++程序中直接内嵌汇编语句。 (3)将C程序编译生成相应的汇编程序,手工修改和优化C编译器 生成的汇编代码。
整理课件
⊙混合编程说明:
▪ 变量和函数命名规则
✓ 无论是变量还是函数,在C语言和汇编中均需要说明为全局的。 在C语言中需要有准确的函数原型说明。
✓ 在C语言中保持“自然”的命名,而在汇编语言中该名字需加一 个下划线作为前缀。
例: C语言部分: extern int product(int *x, int *y); extern int i;
整理课件
⊙混合编程说明:
▪ 程序调用规则
✓参数传递说明: (1)函数调用前,将参数以逆序压入运行堆栈,即最右边的参数 最先入栈,然后自右向左将参数依次入栈,最后是返回地址入栈。 第一个参数(最左边)放入累加器A中进行传递。 (2)函数调用结束后,将返回值置于累加器A中。
编程实例
以32位乘法运算为例。虽然用C/C++语言表达乘法运算较为方便和明了 ,但由于C/C++语言无法很好利用DSP汇编语言为实现各种乘法运算而 提供的指令,使得C/C++程序效率低下。所以这里用汇编语言完成乘法 运算,再用C/C++程序调用它。

第4章 基于C54x汇编语言程序开发工具


11
第4章 汇编语言程序开发工具
4.2 汇编语言程序的编辑、汇编和链接过程 汇编语言程序的编辑、
1. 编辑 利用各种文本编辑器,如笔记本、WORD、EDIT 利用各种文本编辑器,如笔记本、WORD、 和TC等,可编写汇编语言源程序。 TC等 可编写汇编语言源程序。 2. 汇编 当汇编语言源程序编写好以后,可利用’ 当汇编语言源程序编写好以后,可利用’C54x 的汇编器ASM500 的汇编器ASM500,对一个或多个源程序分别进行汇 ASM500, 编,并生成列表文件(.lst)和目标文件(.obj)。 并生成列表文件(.lst)和目标文件(.obj) (.lst)和目标文件(.obj)。
13
第4章 汇编语言程序开发工具
4.2 汇编语言程序的编辑、汇编和链接过程 汇编语言程序的编辑、
3. 链接 所谓链接,就是利用’C54x的链接器LNK500, 的链接器LNK500 所谓链接,就是利用’C54x的链接器LNK500, 根据链接器命令文件(.cmd)对已汇编过的一个或多 (.cmd) 根据链接器命令文件(.cmd)对已汇编过的一个或多 个目标文件(.obj)进行链接 生成输出文件(. (.obj)进行链接, (.out) 个目标文件(.obj)进行链接,生成输出文件(.out) 和存储器映像文件(. (.map) 和存储器映像文件(.map) 。 常用的汇编器命令: 常用的汇编器命令: lnk500 %1.cmd
4
第4章 汇编语言程序开发工具
2. ’C54x的开发工具 C54x的开发工具 C54x (1)代码生成工具 代码生成工具: (1)代码生成工具: C编译器:用来将C/C++语言源程序自动编译为 编译器:用来将C/C++语言源程序自动编译为 C/C++ C54x的汇编语言源程序 的汇编语言源程序。 ’C54x的汇编语言源程序。 汇编器: 汇编器:用来将汇编语言源文件汇编成机器语 COFF目标文件 目标文件。 言COFF目标文件。 链接器:将汇编生成的、可重新定位的COFF COFF目 链接器:将汇编生成的、可重新定位的COFF目 标模块组合成一个可执行的COFF目标模块。 COFF目标模块 标模块组合成一个可执行的COFF目标模块。 文档管理器:允许用户将一组文件( 文档管理器:允许用户将一组文件(源文件或 目标文件)集中为一个文档文件库。 目标文件)集中为一个文档文件库。

第4章_C55x处理器的软件设计

但如果要利用处理器同时完成多个任务,应用嵌入式操 作系统是十分有必要的,这是因为嵌入式操作系统可以将应 用分解为多个任务,简化了应用系统软件设计,更为重要的
是良好的多任务设计有助于提高系统的稳定性和可靠性。
2019/10/24
DSP原理及应用原理及应用
5
第4章 C55x处理器的软件设计
4.1.中1断程自序1我; 调度程序的基本结构 ……
2019/10/24
DSP原理及应用原理及应用
4
第4章 C55x处理器的软件设计
4.1 C55x处理器程序基本结构
根据任务调度的方式不同,C55x处理器程序大体可以分
为两类 :
(1) 由程序自己完成任务调度
程序运行效率高,对硬件中断响应快,程序运行稳定,
适合于任务较为单一,实时性较强的应用;
(2) 由嵌入式操作系统完成任务调度
2019/10/24
பைடு நூலகம்
DSP原理及应用原理及应用
13
第4章 C55x处理器的软件设计
4.1.2 应用嵌入式操作系统
2. 可剥夺型内核
如果是中断服务子程序使一个高优先级的任务进 入就绪状态,中断完成后,被中断的任务被挂起,开 始运行更高级的任务。使用可剥夺型内核可以随时执 行最高级任务,这使得任务的响应时间得以最优化。 使用可剥夺内核要求应用程序不应直接使用不可重入 函数,如果要使用则应满足互斥条件。
2019/10/24
DSP原理及应用原理及应用
10
第4章 C55x处理器的软件设计
4.1.2 应用嵌入式操作系统 1. 不可剥夺型内核
不可剥夺型内核要求每个任务主动放弃CPU使用权,这种 任务的调度方法也可以叫做合作型多任务,每个任务相互合作, 共享一个CPU。

第4章 4.1节

不声明符合——只能在本程序中使用
的符号,用-c选项可以使汇编器不区分大小写;
声明符号——可以在其他程序中使用
DSP内部的寄存器名是汇编器已预先定义的全局符号。
常用汇编命令:
1、 .title: 标识源程序 .title “learn10.asm”
2、 .end: 结束汇编命令,放在程序的最后
3、 .text: 标识汇编程序的开始 可执行程序代码
;code follows… #0,SWWSR #STACK+10H,SP #a,AR1 #7 table, *AR1+ SUM end #a, AR3 #x, AR4 RPTZ #3 *AR3+,*AR4+A A, @y
4.2.2 汇编语言常量 C54x汇编器支持7种类型的常量: 1. 二进制整数:最多由16个二进制数字组成,其后缀为B(或b) . 2. 八进制整数:最多由6个八进制数字组成,其后缀为Q(或q)。 3. 十进制整数:由十进制数字串组成
第4章 DSP软件开发过程
第4章 TMS320C54x的软件开发
TMS320C54x提供两种语言:

汇编语言
C/C++语言。

当源程序编写好后,就要选择开发工具和环境。 TMS320C54x提供两种开发环境:非集成开发环境和 集成开发环境。
C 源文件
宏源文件 C 编译器 助记符指令 转换为 代数指令
其中,标号是任选项:macname为宏名,要写在助记 符的位置上;在宏名的后面是要代真的参数(实参 数),参数的数目应与宏定义中的数目相等。
3.
4.
已初始化段的功能 用于存放可执行程序代码或初始化数据,加载程序 时,这些段中的内容会被存放到C54X的存储器中, 初始化段可重新定位 指令:.text [段起点] .data [段起点] .sect “段名” [,段起点] 汇编器对段的处理过程 汇编器遇到.text、.data或.sect命令时,停止对当前 段的汇编,将紧接着的程序代码汇编到指定的段中, 直到再遇到或命令为止。 汇编遇到.bss或.usect命令时,不结束当前段的汇编, 只是暂时从当前段脱离出来,并开始对新的段汇编。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档