第四章 汇编语言程序开发工具

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

0000 0000 0001 0002
0044 0055 0066
7 8 9 10 11 12 13 14
0000
0003
0456
********************************** ** 在.bss段中为变量保留空间 ** ********************************** .bss buffer,8 ********************************** ** 仍然在.data 段中 ** ********************************** prt .word 0456h
【例4.3.1】段命令应用举例。
汇编语言源程序: .data coeff .word .bss prt .word .text add: LD aloop:SUB BC .data ivals .word
;初始化数据段
044h,055h,066h buffer,8 0456h
0Dh,A #1,A aloop,ANEQ
第四章 汇编语言程序的开发工具
主要内容

C54X软件开发过程 汇编语言程序的编辑、汇编和链接过程 COFF的一般概念 源程序的汇编 链接器的使用
C54x的应用软件开发主要完成以下工作:
(1)选择编程语言编写源程序 C54x提供2种编程语言:汇编语言和C/C++语言


完成一般功能的代码---两种语言 运算量很大的关键代码---汇编语言以提高运算效率
(2)代码调试工具

评估EVM板:低成本的开发板,可进行DSP芯片评价、性能
评估和有限的系统调试。

软件仿真器Simulator:模拟DSP芯片各种功能并在非实时 条件下进行软件调试的调试工具,不需目标硬件支持,只
需在计算机上运行。
旺旺丗你是爱我的天使
汇编语言源程序可以使用任何一种文本编辑器。 当汇编语言源程序编写完成后,还必须经过汇编和链接后
;3组数据放入.data段
;在.bss段保留8个单元 ;0456h放入.data段
;初始化文本段
;1字指令
;2字指令
;2字指令
共计5个字
;初始化数据段
0CCh,0DDh,0EEh
;3组数据放入.data段
旺旺丗你是爱我的天使
var2
inbuf
.usect “newvars”,2 ;建立newvars命名段,保留2个单元
(2) 选择开发工具和环境 C54x的开发环境:非集成和集成开发环境CCS
开发过程的目的是产生一个可以由C54X目标 系统执行的模块。
1.用C/C++语言或汇编语言编写源文件(.c /.asm) ; 2.经C编译器、汇编器生成COFF格式的目标文件(.obj) ;
3.用链接器进行链接,生成可执行目标代码(.out) ; 4.利用调试工具对可执行代码进行仿真和调试,
39 40 41 42 43
0000 0000 0001
0044 0088
目标 代码
**************************************** ** 为中断向量.vectors定义一个自定义段 ** **************************************** .sect “vectors” .word 044h,088h
别进行汇编,并生成列表文件(.lst)和目标文件(.obj)。
3.链接
利用C54x的链接器LNK500,根据链接器命令文件 (.cmd)对已汇编过的一个或多个目标文件(.obj)进行链 接,生成输出文件(.out)和存储器映像文件(.map)。
旺旺丗你是爱我的天使

COFF:汇编器和链接器生成的目标文件,称为公共目标文件 格式。
.usect “newvars”,8 ;在newvars段保留8个单元 .text
;初始化文本段
mpy:
LD
0Ah,B
;1字指令
mloop: MPY BC
#0Ah,B mloop,BNOV
;2字指令
;2字指令
共计5个字
.sect “vectors” .word 044h,088h
;建立vectors命名段
RAM E PROM
2
ROM
旺旺丗你是爱我的天使

汇编器对段的处理是通过段伪指令来区别各个段,并将段 名相同的语句汇编在一起。

汇编器有5个段伪指令:
.bss、.usect、.text、.data和.sect 一个程序可以由几个不同的段组成,一个段又可以划分

为子段,以提高存储器利用率。
注:如果没有使用任何段伪指令,在默认的情况下,汇编器把
旺旺丗你是爱我的天使

伪指令语法格式 .bss 用于在bss段中保留若干个空间。
格式:.bss
符号,字数
符号---对应于保留的存储空间第一个字的变量名称。
可让其他段引用,也可以用.global定义为全局符号; 字数---表示在.bss段或标有名字的段中保留若干个存储单元;
.usect 用于为指定的命名段保留若干个空间。
BC aloop,AGEQ
0004 0004 0005 0006
00cc 00dd 00ee
********************************** ** 汇编另一个初始化表到.data 段 ** ********************************** .data ivals .word 0CCh,0DDh,0EEh
旺旺丗你是爱我的天使
32 33 34 35 36 37 38
0005 0005 0006 0007 0008 0009
110a f166 000a f868 0006’
**************************************** ** 汇编更多代码到.text段 ** **************************************** .text mpy: LD 0Ah,B mloop MPY #0Ah,B BC mloop,BNOV
COFF以段的形式存储数据和代码。 这些代码段和数据段简称为段,汇编器和链接器提供一些伪

指令建立和管理各种各样的段。
旺旺丗你是爱我的天使
COFF中的段 段是COFF文件中最重要的概念。每个目标文件都分成 若干段,每行汇编语句都从属一个段。 段:存储器中占据相邻空间的代码或数据块。每一个段都 是分开的和各不相同的。 所有COFF文件都包含三种形式的段: .text 文本段,包含可执行代码 .data 数据段,包含初始化数据 .bss 保留空间段,为未初始化变量保留存储空间
才能运行。
. cmd 链接命 令文件
.asm 源文件 .obj 目标文件 .out 输出文件
文本编辑器
汇编器
-l
链接器
-m
-o
调试程序
. lst 列表文件
. map 存储器 映像文件
十六进制 转换程序
旺旺丗你是爱我的天使
1.编辑
利用各种文本编辑器,如记事本、WORD等编写汇编 语言源程序。
2.汇编 利用C54x的汇编器ASM500,对一个或多个源程序分
;2组数据放入vectors命名段
旺旺丗你是爱我的天使
经汇编后,得列表文件(部分):
2 3 4 5 6 ********************************** ** 汇编一个初始化表到.data段 ** ********************************** .data coeff .word 044h,055h,066h
旺旺丗你是爱我的天使
汇编器的任务:在汇编过程中,根据汇编命令用适当的段将 各部分程序代码和数据连在一起,构成目标文件。
链接器的任务:分配存储单元,将目标文件中的段重新定位 到目标系统的存储器中,这一过程称为定位或分配。
旺旺丗你是爱我的天使
目标文件中的段与目标存储器之间的关系
目标文件
目标存储器
.bss .data .text
旺旺丗你是爱我的天使
15 16 17 18 19 20
21 22 23 24 25 26
0000 0000 0001 0002 0003 0004
100d f010 0001 f842 0001’
********************************** ** 汇编代码到.text段 ** ********************************** .text add: LD 0Dh,A aloop: SUB #1, A

旺旺丗你是爱我的天使
1、初始化段包含数据和程序代码,主要有: .text段---已初始化代码段 .data段---已初始化数据段
.sect段---由汇编器伪指令建立的自定义已初始化段
2、未初始化段是为未初始化数据保留存储空间,包括: .bss段---未初始化段
.usect段---汇编器伪指令建立的自定义未初始化段
源程序 段程序 的行号 计数器
汇编语言 源程序
旺旺丗你是爱我的天使
汇编语言源程序经过汇编后,共建立了5个段: ● .text段—文本段,段内有10个字可执行的程序代码。
● .data段—已初始化的数据段,段内有7个字的数据。
● vectors段—用.sect命令生成的命名段,段内有2个字 的初始化数据。 ● .bss段—未初始化的数据段,在存储器中为变量保留8
27 28 29 30 31
0000 0001
********************************** ** 为更多的变量定义另一个段 ** ********************************** var2 .usect “newvars”,2 inbuf .usect “newvars”,8

调试工具 Hex转换工具
EPROM 编程器
绝对 列表器
交叉引用 列表器 C54x DSP
图1 TMS320C54x DSP软件开发流程
TI公司提供的DSP开发环境和工具主要包括以下
三个部分: 代码生成工具
代码调试工具 实时操作系统
(1)代码生成工具


C编译器:将C/C++语言源程序自动编译为C54x的汇编语言 源程序。 汇编器:将汇编源文件汇编成机器语言COFF目标文件。 链接器:将汇编生成的、可重新定位的COFF目标模块组合 成一个可执行COFF目标模块。
格式: .usect “段名”,字数 段名---程序员为自定义未初始化段定义的名字。
旺旺丗你是爱我的天使

由.text、.data和.sect命令生成已初始化段。 包含可执行代码或初始化数据,通常定位到RAM区。 段中的内容都在目标文件中,当程序载入处理器后再放
到C54x的存储器中。

伪指令语法格式 .text [段起点] .data [段起点] .sect “段名” [,段起点]
或固化到EPROM中或加载到用户应用系统,以便DSP目标
系统脱离计算机单独运行。
C源程序
宏源程序 C编译器
归档器
汇编代码
翻译帮助
宏库
编译器 汇编器
汇Baidu Nhomakorabea代码


建立源程序 C编译器
汇编器 链接器
归档器
COFF文件
库建立程序
目标文件库

链接器 实时支持库

可执行 COFF文件 十六进制 转换程序 PC机 测试工具
旺旺丗你是爱我的天使
汇编器为每个段都安排了一个单独的程序计数器,即段程 序计数器SPC。
SPC表示在程序代码或数据段内的当前地址。
开始时汇编器将每个SPC置0。当汇编器将程序代码或数据 加到段内时,SPC值相应增加。若再继续对其它同名段汇编, 则其SPC要在先前数值上继续增加。
旺旺丗你是爱我的天使
程序中所有内容都汇编到.text段。
旺旺丗你是爱我的天使

未初始化段分为默认和命名两种,分别由汇编器伪指令.bss 和.usect产生。

未初始化段是在C54x存储器中保留空间,通常定位到RAM区。


在目标文件中,这些段中没有确切的内容。 由这些段定义的空间仅作为临时存储空间,程序运行时,可
以实时使用这些存储空间创建和保存变量。
个存储单元。
● newvars段—用.usect命令建立的命名段,为变量保留 10个存储单元。
旺旺丗你是爱我的天使
. cmd 链接命 令文件
.asm 源文件 .obj 目标文件 .out 输出文件
文本编辑器
汇编器
-l
链接器
-m
-o
调试程序
. lst 列表文件
. map 存储器 映像文件
十六进制 转换程序
旺旺丗你是爱我的天使
a. 默认的存储器分配过程:
链接器从地址0080H开始,一个段接一个段配置。
① 将多个目标文件中的.text段组合,形成一个.text 段,分配到ROM中;
相关文档
最新文档