当前位置:文档之家› 第四章 汇编语言程序开发工具

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


旺旺丗你是爱我的天使
汇编器为每个段都安排了一个单独的程序计数器,即段程 序计数器SPC。
SPC表示在程序代码或数据段内的当前地址。
开始时汇编器将每个SPC置0。当汇编器将程序代码或数据 加到段内时,SPC值相应增加。若再继续对其它同名段汇编, 则其SPC要在先前数值上继续增加。
旺旺丗你是爱我的天使
源程序 段序 的行号 计数器
汇编语言 源程序
旺旺丗你是爱我的天使
汇编语言源程序经过汇编后,共建立了5个段: ● .text段—文本段,段内有10个字可执行的程序代码。
● .data段—已初始化的数据段,段内有7个字的数据。
● vectors段—用.sect命令生成的命名段,段内有2个字 的初始化数据。 ● .bss段—未初始化的数据段,在存储器中为变量保留8
个存储单元。
● newvars段—用.usect命令建立的命名段,为变量保留 10个存储单元。
旺旺丗你是爱我的天使
. cmd 链接命 令文件
.asm 源文件 .obj 目标文件 .out 输出文件
文本编辑器
汇编器
-l
链接器
-m
-o
调试程序
. lst 列表文件
. map 存储器 映像文件
十六进制 转换程序
旺旺丗你是爱我的天使
a. 默认的存储器分配过程:
链接器从地址0080H开始,一个段接一个段配置。
① 将多个目标文件中的.text段组合,形成一个.text 段,分配到ROM中;
程序中所有内容都汇编到.text段。
旺旺丗你是爱我的天使

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

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


在目标文件中,这些段中没有确切的内容。 由这些段定义的空间仅作为临时存储空间,程序运行时,可
以实时使用这些存储空间创建和保存变量。
27 28 29 30 31
0000 0001
********************************** ** 为更多的变量定义另一个段 ** ********************************** var2 .usect “newvars”,2 inbuf .usect “newvars”,8
旺旺丗你是爱我的天使

伪指令语法格式 .bss 用于在bss段中保留若干个空间。
格式:.bss
符号,字数
符号---对应于保留的存储空间第一个字的变量名称。
可让其他段引用,也可以用.global定义为全局符号; 字数---表示在.bss段或标有名字的段中保留若干个存储单元;
.usect 用于为指定的命名段保留若干个空间。
格式: .usect “段名”,字数 段名---程序员为自定义未初始化段定义的名字。
旺旺丗你是爱我的天使

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

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


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

链接器 实时支持库

可执行 COFF文件 十六进制 转换程序 PC机 测试工具
【例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
才能运行。
. cmd 链接命 令文件
.asm 源文件 .obj 目标文件 .out 输出文件
文本编辑器
汇编器
-l
链接器
-m
-o
调试程序
. lst 列表文件
. map 存储器 映像文件
十六进制 转换程序
旺旺丗你是爱我的天使
1.编辑
利用各种文本编辑器,如记事本、WORD等编写汇编 语言源程序。
2.汇编 利用C54x的汇编器ASM500,对一个或多个源程序分
别进行汇编,并生成列表文件(.lst)和目标文件(.obj)。
3.链接
利用C54x的链接器LNK500,根据链接器命令文件 (.cmd)对已汇编过的一个或多个目标文件(.obj)进行链 接,生成输出文件(.out)和存储器映像文件(.map)。
旺旺丗你是爱我的天使

COFF:汇编器和链接器生成的目标文件,称为公共目标文件 格式。

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


C编译器:将C/C++语言源程序自动编译为C54x的汇编语言 源程序。 汇编器:将汇编源文件汇编成机器语言COFF目标文件。 链接器:将汇编生成的、可重新定位的COFF目标模块组合 成一个可执行COFF目标模块。
第四章 汇编语言程序的开发工具
主要内容

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


完成一般功能的代码---两种语言 运算量很大的关键代码---汇编语言以提高运算效率
;3组数据放入.data段
;在.bss段保留8个单元 ;0456h放入.data段
;初始化文本段
;1字指令
;2字指令
;2字指令
共计5个字
;初始化数据段
0CCh,0DDh,0EEh
;3组数据放入.data段
旺旺丗你是爱我的天使
var2
inbuf
.usect “newvars”,2 ;建立newvars命名段,保留2个单元
旺旺丗你是爱我的天使
汇编器的任务:在汇编过程中,根据汇编命令用适当的段将 各部分程序代码和数据连在一起,构成目标文件。
链接器的任务:分配存储单元,将目标文件中的段重新定位 到目标系统的存储器中,这一过程称为定位或分配。
旺旺丗你是爱我的天使
目标文件中的段与目标存储器之间的关系
目标文件
目标存储器
.bss .data .text
.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命名段
旺旺丗你是爱我的天使
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
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
BC aloop,AGEQ
0004 0004 0005 0006
00cc 00dd 00ee
********************************** ** 汇编另一个初始化表到.data 段 ** ********************************** .data ivals .word 0CCh,0DDh,0EEh
旺旺丗你是爱我的天使
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
相关主题