第4章-汇编语言程序开发工具_第1页
第4章-汇编语言程序开发工具_第2页
第4章-汇编语言程序开发工具_第3页
第4章-汇编语言程序开发工具_第4页
第4章-汇编语言程序开发工具_第5页
已阅读5页,还剩64页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

4.1

TMS320C54x软件开发过程

4.2汇编语言程序的编辑、汇编和链接过程4.3

COFF的一般概念4.4源程序的汇编4.5链接器的使用2026/8/11DSP原理及应用第4章汇编语言程序开发工具4.1TMS320C54x软件开发过程

’C54x的应用软件开发主要完成以下工作:(1)

选择编程语言编写源程序

’C54x提供2种编程语言,即汇编语言和C/C++语言。对于完成一般功能的代码,这两种语言都可使用,但对于一些运算量很大的关键代码,最好采用汇编语言来完成,以提高程序的运算效率。(2)

选择开发工具和环境

’C54x提供了两种开发环境。即非集成开发环境和集成开发环境CCS。

2026/8/12DSP原理及应用第4章汇编语言程序开发工具1.

’C54x应用软件开发流程开发过程的目的是产生一个可以由’C54x目标系统执行的模块。C源文件C编译器汇编源文件汇编器汇编源文件COFF目标文件链接器可执行的COFF文件宏源文件存档器宏库存档器目标文件库建库工具运行时支持库EPROM编程器交叉引用列表器调试工具TMS320C54x绝对地址列表器HEX代码转换工具2026/8/13DSP原理及应用第4章汇编语言程序开发工具2.

’C54x的开发工具(1)代码生成工具:

C编译器:用来将C/C++语言源程序自动编译为’C54x的汇编语言源程序。

汇编器:用来将汇编语言源文件汇编成机器语言COFF目标文件。

链接器:将汇编生成的、可重新定位的COFF目标模块组合成一个可执行的COFF目标模块。

文档管理器:允许用户将一组文件(源文件或目标文件)集中为一个文档文件库。

2026/8/14DSP原理及应用第4章汇编语言程序开发工具2.

’C54x的开发工具

助记符指令—代数式指令翻译器:用来将包含助记符指令的汇编语言源文件转换成包含代数式指令的汇编语言源文件。

建库实用程序:用来建立用户自己使用的、并用C/C++语言编写的支持运行的库函数。

十六进制转换程序:可以很方便地将COFF目标文件转换成TI、Intel、Motorola等公司的目标文件格式。(1)代码生成工具:2026/8/15DSP原理及应用第4章汇编语言程序开发工具2.

’C54x的开发工具(2)代码调试工具:

C/汇编语言源码调试器:与软件仿真器、评价模块、软件开发系统、软件仿真器等配合使用。

软件仿真器:是一种模拟DSP芯片各种功能并在非实时条件下进行软件调试的调试工具,它不需目标硬件支持,只需在计算机上运行。

初学者工具DSK:是TI公司提供给初学者进行DSP编程练习的一套廉价的实时软件调试工具。

2026/8/16DSP原理及应用第4章汇编语言程序开发工具4.2汇编语言程序的编辑、汇编和链接过程示意图汇编器调试程序链接器文本编辑器.asm源文件.obj目标文件.out输出文件.cmd链接命令文件.lst列表文件.map存储器映像文件十六进制转换程序HEX500-

o-

m-

l2026/8/17DSP原理及应用第4章汇编语言程序开发工具4.2汇编语言程序的编辑、汇编和链接过程1.

编辑

利用各种文本编辑器,如笔记本、WORD、EDIT和TC等,可编写汇编语言源程序。

2.

汇编当汇编语言源程序编写好以后,可利用’C54x的汇编器ASM500,对一个或多个源程序分别进行汇编,并生成列表文件(.lst)和目标文件(.obj)。

2026/8/18DSP原理及应用第4章汇编语言程序开发工具4.2汇编语言程序的编辑、汇编和链接过程2.

汇编常用的汇编命令:

asm500%1-s-1-x调用汇编器命令

源文件名

将程序所有定义的符号放在目标文件的符号表中

生成一个列表文件.lst

生成一个交叉汇编表

2026/8/19DSP原理及应用第4章汇编语言程序开发工具4.2汇编语言程序的编辑、汇编和链接过程3.

链接所谓链接,就是利用’C54x的链接器LNK500,根据链接器命令文件(.cmd)对已汇编过的一个或多个目标文件(.obj)进行链接,生成输出文件(.out)和存储器映像文件(.map)

常用的汇编器命令:

lnk500%1.cmd

lnk500:

调用链接器命令

%1.cmd:

链接命令文件名,该文件须指明目标文件、输入文件、输出文件、链接选项和存储器配置要求等。2026/8/110DSP原理及应用第4章汇编语言程序开发工具4.3

COFF的一般概念

汇编器和链接器生成的目标文件,是一个可以由’C54x器件执行的文件。这些目标文件的格式称之为公共目标文件格式(COFF)。

在编写汇编语言程序时,COFF采用代码段和数据段的形式,以便于模块化的编程,使编程和管理变得更加方便。

这些代码段和数据段简称为段。汇编器和链接器提供一些伪指令来建立和管理各种各样的段。2026/8/111DSP原理及应用第4章汇编语言程序开发工具4.3

COFF的一般概念

4.3.1

COFF文件的基本单元

COFF文件有3种类型:COFF0、COFF1、COFF2。

每种类型的COFF文件,其标题格式都有所不同,但数据部分是相同的。

链接器能够读/写所有类型的COFF文件,默认时链接器生成的是COFF2文件,采用-vn链接选项可以选择不同类型的COFF文件。

’C54x汇编器和C编译器产生的是COFF2文件。

2026/8/112DSP原理及应用第4章汇编语言程序开发工具4.3.1

COFF文件的基本单元

1.

段(sections)

段——是存储器中占据相邻空间的代码或数据块。一个目标文件中的每个段都是分开的和各不相同的。

COFF目标文件都包含以下3种形式的段:

.text

段(文本段),通常包含可执行代码;.data

段(数据段),通常包含初始化数据;.bss

段(保留空间段),通常为未初始化变量保留存储空间。2026/8/113DSP原理及应用第4章汇编语言程序开发工具4.3.1

COFF文件的基本单元

2.

段的基本类型

COFF目标文件中的段有两种基本类型。

初始化段

未初始化段(1)

初始化段初始化段中包含有数据或程序代码。主要有:

.text段——已初始化段;

.data段——已初始化段;.sect段——已初始化段,由汇编器伪指令建立的自定义段。

2026/8/114DSP原理及应用第4章汇编语言程序开发工具4.3.1

COFF文件的基本单元

2.

段的基本类型

(2)

未初始化段

在存储空间中,为未初始化数据保留存储空间。它包括:

.bss段——未初始化段;.usect段——未初始化段,由汇编命令建立的命名段(自定义段)。2026/8/115DSP原理及应用第4章汇编语言程序开发工具3.

段与目标存储器的对应关系目标文件中的段与目标存储器之间的关系

目标文件目标存储器.bss.data.textRAME2PROMROM2026/8/116DSP原理及应用第4章汇编语言程序开发工具4.3.2

汇编器对段的处理

未初始化段就是在’C54x存储器中保留空间,通常它们被定位在RAM区。在目标文件中,这些段中没有确切的内容。

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

1.未初始化段

2026/8/117DSP原理及应用第4章汇编语言程序开发工具(1).bss伪指令1.未初始化段

用于在bss段中保留若干个空间。

格式:

.bss

符号,字数符号——对应于保留的存储空间第一个字的变量名称。可以让其他段引用,也可以用.global命令定义为全局符号。

字数——表示在bss段或标有名字的段中保留若干个存储单元。2026/8/118DSP原理及应用第4章汇编语言程序开发工具1.未初始化段

(2).usect伪指令

用于为指定的命名段保留若干个空间。

格式:符号.usect

“段名”,字数段名——程序员为未初始化的命名段定义的名字。2026/8/119DSP原理及应用第4章汇编语言程序开发工具已初始化命令的句法:

2.

已初始化段

.text[段起点]

.data[段起点]

.sect“段名”[,段起点]段起点——是任选项。若选用,它为段程序计数器SPC定义一个起始值。若默认,则SPC从0开始。

2026/8/120DSP原理及应用第4章汇编语言程序开发工具4.3.2

汇编器对段的处理

当汇编器遇到.text或.data或.sect命令时,将停止对当前段的汇编(相当于一条结束当前段汇编的命令),然后将紧接着的程序代码或数据汇编到指定的段中,直到再遇到另一条.text、.data或.sect命令为止。

当汇编器遇到.bss或.usect命令时,并不结束当前段的汇编,只是暂时从当前段脱离出来,并开始对新的段进行汇编。.bss和.usect命令可以出现在一个已初始化段的任何位置,而不会对它的内容发生影响。2026/8/121DSP原理及应用第4章汇编语言程序开发工具4.3.2

汇编器对段的处理

命名段由用户指定,与默认的.text,.data和.bss段的使用相同,但它们被分开汇编。

可用.usect和.sect两个伪指令产生命名段。3.

命名段(自定义段)2026/8/122DSP原理及应用第4章汇编语言程序开发工具

.usect伪指令产生类似.bss的段,为变量在RAM中保留存储空间。.sect伪指令产生类似.text和.data的段,可以包含代码或数据。.sect伪指令产生可重新定位地址的命名段。3.

命名段产生命名段伪指令格式:

符号

.usect“段名”,字数

.sect“段名”

可以产生多达32767个不同的命名段。段名可长达200个字符。

2026/8/123DSP原理及应用第4章汇编语言程序开发工具4.3.2

汇编器对段的处理

子段是较大段中的小段。链接器可以像处理其他段一样处理子段。

子段结构可用来对存储器空间进行更紧凑的控制,可以使存储器空间分配更加紧密。

4.

子段子段命名格式:基段名:子段名

子段名前为基段名,随后为冒号,最后为子段名。

2026/8/124DSP原理及应用第4章汇编语言程序开发工具4.3.2

汇编器对段的处理

汇编器为每个段都安排了一个单独的程序计数器称之为段程序计数器SPC。

SPC表示在程序代码或数据段内当前的地址。开始时汇编器将每个SPC置0。当汇编器将程序代码或数据加到段内时,增加相应的SPC值。若再继续对某个段汇编,则相应的SPC就在先前的数值上继续增加。

链接器在链接时要对每个段进行重新定位。5.

段程序计数器SPC2026/8/125DSP原理及应用第4章汇编语言程序开发工具

汇编语言源程序经过汇编后,共建立了5个段:

.text段——文本段,段内有10个字可执行

的程序代码。

.data段——已初始化的数据段,段内有7

个字的数据。

vectors段——用.sect命令生成的命名段,

段内有2个字的初始化数据。

.bss段——未初始化的数据段,在存储器中

为变量保留8个存储单元。

newvars段——用.usect命令建立的命名段,为变量保留10个存储单元。

2026/8/126DSP原理及应用第4章汇编语言程序开发工具经汇编后,得列表文件(部分):2*******************************3

**汇编一个初始化表到.data段**4

*******************************5

0000.data6

0000

0044

coeff.word044h,055h,066h

00010055

000200667*******************************8**在.bss段中为变量保留空间**9*******************************10

0000.bssbuffer,811*******************************12**仍然在.data段中**13*******************************14

00030456

prt

.word0456h目标代码段名100df0100001f8420001110af166000aF8680006004400550066045600cc00dd00ee00440088

没有数据保留10个字50000.data600000044coeff.word044h,055h,066h100000.bssbuffer,81400030456prt

.word0456h.data

004400550066.bss

没有数据保留8个字04562026/8/127DSP原理及应用第4章汇编语言程序开发工具15********************************16**汇编代码到.text段**17********************************18

0000.text19

0000

100dadd:LD0Dh,A20

0001

f010

aloop:SUB#1,A

0002

0001

21

0003

f842

BCaloop,AGEQ

0004

0001’

22

**********************************23

**汇编另一个初始化表到.data段**

24**********************************25

0004

.data

26

0004

00cc

ivals

.word0CCh,0DDh,0EEh

0005

00dd

0006

00ee27********************************28

**为更多的变量定义另一个段**29********************************30

0000var2.usect“newvars”,231

0001

inbuf

.usect“newvars”,8

目标代码段名100df0100001f8420001110af166000aF8680006004400550066045600cc00dd00ee.data00440088

没有数据保留8个字.bss没有数据保留10个字.text

180000.text190000100dadd:LD0Dh,A100d200001f010aloop:SUB#1,Af0100001210003f842BCaloop,AGEQf8420001250004.data26000400ccivals

.word0CCh,0DDh,0EEh.data

00cc00dd00ee300000var2.usect“newvars”,2newvars

保留2个字310001inbuf

.usect“newvars”,8保留8个字2026/8/128DSP原理及应用第4章汇编语言程序开发工具32

*********************************33

**汇编更多代码到.text段**34*********************************35

0005

.text

36

0005

110a

mpy:LD0Ah,B

370006

f166

mloopMPY#0Ah,B

0007

000a

38

0008

f868BCmloop,BNOV

0009

0006’

39****************************************40

**为中断向量.vectors定义一个自定义段**41****************************************42

0000

.sect“vectors”430000

0044

.word044h,088h0001

0088

目标代码段名100df0100001f8420001110af166000aF8680006.text004400550066045600cc00dd00ee.data00440088

没有数据保留8个字.bss没有数据保留10个字newvars350005.text.text

360005110ampy:LD0Ah,B110a370006f166mloopMPY#0Ah,Bf168000a380008f868BCmloop,BNOVf8680006420000.sect“vectors”vectors

4300000044.word044h,088h004400882026/8/129DSP原理及应用第4章汇编语言程序开发工具4.3.3

链接器对段的处理

链接器是开发’C54x器件必不可少的开发工具之一,它对段处理时有2个主要任务:

将一个或多个COFF目标文件中的各种段作为链接器的输入段,经链接后在一个执行的COFF输出模块中建立各个输出段;

②在程序装入时对其重新定位,为各个输出段选定存储器地址。

2026/8/130DSP原理及应用第4章汇编语言程序开发工具4.3.3

链接器对段的处理

链接器有2条伪指令支持上述任务:

MEMORY伪指令——用来定义目标系统的存储器配置空间,包括对存储器各部分命名,以及规定它们的起始地址和长度。

SECTIONS伪指令——用来指定链接器将输入段组合成输出段方式,以及输出段在存储器中的位置,也可用于指定子段。

若未使用伪指令,则链接器将使用目标处理器默认的方法将段放入存储空间。

2026/8/131DSP原理及应用第4章汇编语言程序开发工具默认的存储器分配:

①将所有.text段组合在一起,形成一个.text段,并分配到程序存储器中;

②将多个目标文件中的.data段组合在一起,分配到紧接着.text段的程序存储空间中;

③将.bss段组合,配置到数据存储器中;

④组合命名段。初始化的命名段按顺序分配到紧随.data段的程序存储器,而未初始化命名段将被配置到紧随.bss段的数据存储器中。

1.默认的存储器分配2026/8/132DSP原理及应用第4章汇编语言程序开发工具默认的存储器分配过程:File1.obj.text1.data1.bss1table_1(初始化的命名段)u_vars1(未初始化的命名段)File2.obj.text2.data2.bss2table_2(初始化的命名段)u_vars2(未初始化的命名段)FFT(初始化的命名段)程序存储器数据存储器.text.text1.text2.data.data1.data2.bss.bss1.bss2tabletable_1table_2u_vars1u_vars1u_vars2FFTFFT没有使用没有配置没有配置没有使用2026/8/133DSP原理及应用第4章汇编语言程序开发工具4.3.3

链接器对段的处理

2.段放入存储器空间若不希望链接器将所有的.text段结合在一起形成单个的.text段,就不能采用默认的方式。由于DSP硬件系统中可能配置多种类型的存储器,若要把某一段分配到特定类型的存储器中,或将命名段配置特定的地址,则需采用MEMORY和SECTIONS伪指令来配置。

若不采用默认的方式,通常需要建立一个链接命令文件,在命令文件中用MEMORY和SECTIONS伪指令定义存储器和配置段地址。

2026/8/134DSP原理及应用第4章汇编语言程序开发工具4.3.5

程序装入

可以采用以下方法装入程序:

使用调试工具转入程序’C54x的调试工具包括软件模拟器,XDS仿真器和集成系统CCS。它们都具有内部的装入器,调用装入器的LOAD命令,装入器将程序复制到目标系统的存储器中。

采用Hex转换工具转入程序可以使用转换工具Hex500,将可执行COFF目标模块转换成几种其他目标格式文件,然后将转换后的文件通过编程器将程序装(烧)进EPROM。

2026/8/135DSP原理及应用第4章汇编语言程序开发工具4.3.6

COFF文件中的符号

COFF文件中有一个符号表,主要用来存储程序中有关符号的信息。链接器在执行程序定位时,要使用符号表提供的信息,而调试工具也要使用该表来提供符号调试。

1.

外部符号

是指在一个模块中定义、而在另一个模块中引用的符号。它可以用伪指令.def、.ref或.global来定义。

●.def在当前模块中定义,并可在别的模块中使用的符号;

●.ref在当前模块中使用,但在别的模块中定义的符号;

●.global可以是上面的任何一种情况。

2026/8/136DSP原理及应用第4章汇编语言程序开发工具1.

外部符号【例4.3.3】说明代码段中外部符号的定义。

x:ADD#56h,ABy.defx

.refy

;定义x

;引用y

;x在此模块中定义,可为别

的模块引用

;y在这里引用,它在别的模

块中定义

2026/8/137DSP原理及应用第4章汇编语言程序开发工具4.4源程序的汇编

汇编器的作用是将汇编语言源程序转换成机器语言目标文件。这些目标文件都是公共目标文件格式(COFF)。

汇编语言源程序文件可以包含汇编命令、汇编语言指令和宏指令。

汇编命令用来控制汇编的过程,包括列表格式、符号定义和将源代码放入块的方式等。2026/8/138DSP原理及应用第4章汇编语言程序开发工具4.4源程序的汇编

汇编器包括如下功能:

将汇编语言源程序汇编成一个可重新定位的目标文件(.obj文件)。

根据需要,可以生成一个列表文件(.lst文件),并对该列表进行控制。

将程序代码分成若干个段,每个段的目标代码都有一个SPC(段程序计数器)管理。

2026/8/139DSP原理及应用第4章汇编语言程序开发工具4.4源程序的汇编

汇编器包括如下功能:

定义和引用全局符号,如果需要可以在列表文件后面附加一张交叉引用表。

对条件程序块进行汇编。

支持宏功能,允许定义宏命令。

为每个目标代码块设置一个程序计数器SPC。

2026/8/140DSP原理及应用第4章汇编语言程序开发工具4.4.3

汇编伪指令

将代码和数据汇编进指定的段●

为未初始化的变量在存储器中保留空间●

控制清单文件是否产生

初始化存储器●

汇编条件代码块

定义全局变量●

为汇编器指定从中可以获得宏的库●

考察符号调试信息

汇编器伪指令可完成以下工作:

2026/8/141DSP原理及应用第4章汇编语言程序开发工具4.4.3

汇编伪指令

’C54x汇编器共有64条汇编伪指令,根据它们的功能,可以将其分成8类:

对各种段进行定义的命令

如.bss、.data、.sect、.text、.usect等。

对常数(数据和存储器)进行初始化的命令

如.bes、.byte、.field、.float、.int、.log、.space、.string、.pstring、.xfloat、.xlong、.word等。

2026/8/142DSP原理及应用第4章汇编语言程序开发工具4.4.3

汇编伪指令

调整SPC的指令

如.align等。

对输出列表文件格式化的命令

如.drlist、.drnolist等。

引用其他文件的命令

如copy、.def、.global、.include、.mlib、.ref等。

2026/8/143DSP原理及应用第4章汇编语言程序开发工具4.4.3

汇编伪指令

控制条件汇编的命令

如.break、.else、.elseif、.endif、.endloop、.if、.loop等。

在汇编时定义符号的命令

如.asg、.endstruct、.equ、.eval、.label、.set、.sruct等。

⑻执行其他功能的命令

如.algebraic、.emsg、.end、.mmregs、.mmsg、.newblock、.sblock、.version、.vmsg等。2026/8/144DSP原理及应用第4章汇编语言程序开发工具4.4.3

汇编伪指令

1.定义段的伪指令

用于定义相应的汇编语言程序的段。

助记符及语法格式

说明

.bsssymbol,sizeinwords[,blocking][,alignment]

为未初始化的数据段.bss保留存储空间。

.data

指定.data后面的代码为数据段,通常包含初始化的数据。

.sect

“sectionname”

定义初始化的命名段,可以包含可执行代码或数据。

.text

指定.text后面的代码为文本段,通常包含可执行的代码。

symbol.usect

“sectionname”,sizeinwords[,blocking][,alignmentflag]

为未初始化的命名段保留空间。类似.bss伪指令,但允许保留与.bss段不同的空间。

2026/8/145DSP原理及应用第4章汇编语言程序开发工具【例4.4.2】

段伪指令的使用。

1

************************************

2

*

开始汇编到.text段*

3

************************************

4

000000

.text

5

000000

0001

.word1,2

000001

0002

6

000002

0003

.word3,4

000003

000471.定义段的伪指令

;定义文本段

;初始化值为1,2

;初始化值为3,42026/8/146DSP原理及应用第4章汇编语言程序开发工具【例4.4.2】

段伪指令的使用。

8

************************************

9

*

开始汇编到.data段*

10

************************************

11

000000

.data

12

000000

0009

.word9,10

000001

000A

13

000002

000B

.word11,12

000003

000C141.定义段的伪指令

;定义数据段

;初始化值为9,10

;初始化值为11,122026/8/147DSP原理及应用第4章汇编语言程序开发工具【例4.4.2】

段伪指令的使用。

15

************************************

16

*

开始汇编到命名的初始化段*

17

*

var_defs

*

18

************************************

19

000000

.sect“var_defs”

20

000000

0011

.word17,18

000001

0012

21

1.定义段的伪指令

;定义命名段

;初始化值为17,182026/8/148DSP原理及应用第4章汇编语言程序开发工具【例4.4.2】

段伪指令的使用。

22

************************************

23

*

再继续汇编到.data段*

24************************************

25

000004

.data

26

000004

000D

.word13,14

000005

000E

27

000000

.bsssym,1928

000006

000F

.word15,16

000007

001029

1.定义段的伪指令

;继续汇编数据段

;初始化值为13,14

;定义未初始化段,保留19个空间;仍然在.data段中;初始化值为15,162026/8/149DSP原理及应用第4章汇编语言程序开发工具【例4.4.2】

段伪指令的使用。

30

************************************

31

*

再继续汇编到.text段*

32

************************************

33

000004

.text

34

000004

0005

.word5,6

000005

0006

35

000000

usym

.usect“xy”,2036

000006

0007

.word7,8

000007

0008

1.定义段的伪指令

;继续汇编文本段

;初始化值为5,6

;定义xy段,保留20个空间

;仍然在.text段中

;初始化值为7,82026/8/150DSP原理及应用第4章汇编语言程序开发工具【例4.4.2】

段伪指令的使用。

.text初始化值为1,2,3,4,5,6,7,8的字;

.data初始化值为9,10,11,12,13,14,15,16的字;

var_defs初始化值为17,18的字;

.bss保留19个字的空间;

.usect保留20个字的空间。1.定义段的伪指令

.bss和.usect伪指令既不结束当前的段也不开始新段,它们保留指定数量的空间,然后汇编器开始将代码或数据汇编进当前的段。

2026/8/151DSP原理及应用第4章汇编语言程序开发工具4.4.3

汇编伪指令

2.初始化常数的伪指令

用于为当前的段汇编常数值。助记符及语法格式

说明

.bytevalue[,…,value]

初始化当前段里的一个或多个连续字。每个值的宽度被限制为8位。即把8位的值放入当前段的连续字。

.charvalue[,…,value]

初始化当前段里的一个或多个连续字。每个值的宽度被限制为8位。即把8位的值放入当前段的连续字。

.field

value[,sizeinbits]

初始化一个可变长度的域。将单个值放入当前字的指定位域中。

.floatvalue[,…,value]

初始化一个或多个IEEE的单精度(32位)浮点数,即计算浮点数的单精度(32位)IEEE浮

.xfloatvalue[,…,value]

初始化一个或多个IEEE的单精度(32位)浮点数,即计算浮点数的单精度(32位)IEEE浮点表示,并将它保存在当前段的两个连续的字中。不自动对准最接近的长字边界。

2026/8/152DSP原理及应用第4章汇编语言程序开发工具2.初始化常数的伪指令助记符及语法格式

说明

.intvalue[,…,value]

初始化一个或多个16位整数。即把16位的值放到当前段的连续的字中。

.shortvalue[,…,value]

初始化一个或多个16位整数。即把16位的值放到当前段的连续的字中。

.wordvalue[,…,value]

初始化一个或多个16位整数。即把16位的值放到当前段的连续的字中。

.doublevalue[,…,value]

初始化一个或多个双精度(64位)浮点数。即计算浮点数的单精度(32位)

浮点表示,并将它存储在当前段的2个连续的字中。该伪指令自动对准长字边界。

.longvalue[,…,value]

初始化一个或多个32位整数。即把32位的值放到当前段的2个连续的字中。

.string“string[,…,“string”]”

初始化一个或多个字符串。把8位字符从一个或多个字符串放进当前段。

2026/8/153DSP原理及应用第4章汇编语言程序开发工具【例4.4.3】比较.byte,.int,.long,.xlong,.float,.xfloat,.word和.string伪指令。

源程序:

.byte

0AAh,0BBh

.word

0CCCh

.xlong

0EEEEFFFh

.long

0EEEEFFFFh

.int

0DDDDh

.xfloat

1.99999

.float

1.99999

.string

“help”

.byte:将一个或多个8位值放入当前段的连续字中。word15

01500,100AA

00BB

.word:将一个或多个16位值放入当前段的连续字中。20CCC

.xlong:将32位值放入当前段的2个连续的字中,先存最高有效位。3,40EEE

EFFF

.long:将32位值放入当前段的2个连续的字中,先存最高有效位。6,7

EEEE

FFFF

.int:将一个或多个16位值放入当前段的连续的字中。8

DDDD

.xfloat:初始化单精度(32位)浮点数,并保存在当前段的两个连续的字中。9,A3FFF

FFAC

.float:初始化单精度(32位)浮点数,并保存在当前段的两个连续的字中。C,D3FFF

FFAC

.string:将一个或多个字符串中的8位字符放入当前段中。heE,F0068

0065lp10,11006C

00702026/8/154DSP原理及应用第4章汇编语言程序开发工具2.初始化常数的伪指令.field伪指令:

功能:将单个数值放进当前字的指定位域中。

采用.field伪指令,可以将多个字段或域打包成单个字,直到字被填满为止,汇编器不增加SPC。

指令格式:.

field

value

[,sizeinbits]

单个数值当前字的指定位域2026/8/155DSP原理及应用第4章汇编语言程序开发工具2.初始化常数的伪指令

.field伪指令的使用。

源程序:

.field5,3.field9,6.field16,5.field01234h,20

.field01234h,32

.field5,3

.field9,6

.field16,5

.field01234h,20

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

01

0

11

0

10

0

1

0

0

10

0

1

0

0

11

0

0

0

01

0

0

0

0

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

000000001001000110100

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

00123h00000001001000110

0

0

0

0

0

0

1

0

0

1

0

0

0

1

14h01000

1

0

0

.field01234h,320

0

0

0

0

0

0

1

0

0

1

0

0

0

1

1

0

1

0

0

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

00

0

0

1

0

0

1

0

0

0

1

1

0

1

0

00

0

0

1

0

0

1

0

0

0

1

1

0

1

0

00

0

0

0

0

0

0

0

0

0

0

0

0

0

0

00

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0A000hA480hA4C0h0123h4000h0000h1234h2026/8/156DSP原理及应用第4章汇编语言程序开发工具4.4.3

汇编伪指令

6.条件汇编伪指令用来通知汇编器按照表达式计算出的结果的真假,决定是否对某段代码进行汇编。有两组伪指令用于条件代码块的汇编:

(1).if/.elseif/.else/.endif伪指令

用于通知汇编器按照表达式的计算结果,对某段代码块进行条件汇编。要求表达式和伪指令必须完全在同一行指定。

(2).loop/.break/.endloop伪指令

用于通知汇编器按照表达式的计算结果重复汇编一个代码块。要求表达式和伪指令必须完全在同一行指定。

2026/8/157DSP原理及应用第4章汇编语言程序开发工具6.条件汇编伪指令助记符及语法格式

说明

.ifwell-definedexpression标记条件块的开始。仅当.if条件为真时,对紧接着的代码块进行汇编。.elseifwell-definedexpression

若.if条件为假,而.elseif条件为真时,

对紧接着的代码块进行汇编。

.elsewell-definedexpression

若.if条件为假,对紧接着的代码块进行汇编。

.endif标记条件代码块的结束,并终止该条件代码块。.loop[well-definedexpression]按照表达式确定的次数进行重复汇编的代码块的开始。表达式是循环的次数。.break[well-definedexpression]

若.break表达式为假,通知汇编器继续重复汇编;而当表达式为真时,跳到紧接着.endloop后面的代码。

.endloop

标记代码块的结束。

2026/8/158DSP原理及应用第4章汇编语言程序开发工具4.4.3

汇编伪指令

8.汇编时间符号伪指令用于使符号名与常数值或字符串等价。助记符及语法格式

说明

.asg[”]characterstring[”],substitutionsymbol

把一个字符串赋给一个替代符号。替代符号也可以重新被定义。

.evalwell-definedexpresion,substitutionsymbol计算一个表达式,将其结果转换成字符,并将字符串赋给替代符号。用于操作计数器。

.labelsymbol定义一个特殊的符号,用来指向在当前段内的装载时间地址。

symbol.setvalue用于给符号赋值。符号被存放在符号表中,而且不能被重新定义。

2026/8/159DSP原理及应用第4章汇编语言程序开发工具8.汇编时间符号伪指令助记符及语法格式

说明

.struct

设置类似C语言的结构体。

.tag伪指令把结构体赋给一个标号。

.endstruct

结束结构体。.union建立类似C语言的union(联合)定义

.enduni

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论