第5章TMS320C54x的汇编语言程序设计基础_第1页
第5章TMS320C54x的汇编语言程序设计基础_第2页
第5章TMS320C54x的汇编语言程序设计基础_第3页
第5章TMS320C54x的汇编语言程序设计基础_第4页
第5章TMS320C54x的汇编语言程序设计基础_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

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

文档简介

2023年2月6日DSP原理及应用1内容提要

可编程DSP芯片开发需要一套完整的软、硬件开发工具。通常可分成代码生成工具和代码调试工具两大类。

本章主要介绍代码生成工具,包括:汇编语言程序的编辑、汇编、链接过程,COFF段的一般概念,汇编器、链接器对段的处理方法,链接器对程序的重新定位、程序装入等。

第5章TMS320C54x的汇编语言程序设计基础2023年2月6日DSP原理及应用25.1

汇编语言程序的编辑、汇编、链接过程5.2COFF的一般概念第5章TMS320C54x的汇编语言程序设计基础√2023年2月6日DSP原理及应用3第5章TMS320C54x的汇编语言程序设计基础5.1汇编语言程序的编辑、汇编、链接过程

汇编语言源程序可以在任何一种文本编辑器中进行。如:WORD、EDIT、TC等。

当汇编语言源程序编写完成后,必须经过汇编和链接后才能运行。

2023年2月6日DSP原理及应用4汇编语言程序的编辑、汇编、链接过程示意图汇编器调试程序链接器文本编辑器.asm源文件.obj目标文件.out输出文件.cmd链接命令文件.lst列表文件.map存储器映像文件十六进制转换程序HEX500-

o-

m-

l第5章TMS320C54x的汇编语言程序设计基础2023年2月6日DSP原理及应用55.1汇编语言程序的编辑、汇编、链接过程1.

编辑

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

2.

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

第5章TMS320C54x的汇编语言程序设计基础2023年2月6日DSP原理及应用65.1汇编语言程序的编辑、汇编、链接过程2.

汇编常用的汇编命令:

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

源文件名

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

生成一个列表文件.lst

生成一个交叉汇编表

第5章TMS320C54x的汇编语言程序设计基础2023年2月6日DSP原理及应用75.1汇编语言程序的编辑、汇编、链接过程3.

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

常用的汇编器命令:

lnk500%1.cmdlnk500:

调用链接器命令

%1.cmd:

链接命令文件名,该文件须指明目标文件、输入文件、输出文件、链接选项和存储器配置要求等。第5章TMS320C54x的汇编语言程序设计基础2023年2月6日DSP原理及应用85.1汇编语言程序的编辑、汇编、链接过程4.

调试对输出文件(.out)

调试主要采用以下手段:(1)利用软件仿真器进行调试

第5章TMS320C54x的汇编语言程序设计基础(2)利用硬件仿真器进行调试

(3)利用评价模块进行调试

2023年2月6日DSP原理及应用95.1汇编语言程序的编辑、汇编、链接过程4.

调试

第5章TMS320C54x的汇编语言程序设计基础2023年2月6日DSP原理及应用105.1汇编语言程序的编辑、汇编、链接过程5.

固化用户程序第5章TMS320C54x的汇编语言程序设计基础2023年2月6日DSP原理及应用115.1

汇编语言程序的编辑、汇编、链接过程5.2COFF的一般概念第5章TMS320C54x的汇编语言程序设计基础√2023年2月6日DSP原理及应用125.2

COFF的一般概念

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

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

这些代码段和数据段简称为段。汇编器和链接器提供一些伪指令来建立和管理各种各样的段。

了解COFF段的一般概念,有助于理解汇编语言程序的编辑、汇编和链接过程。

第5章TMS320C54x的汇编语言程序设计基础2023年2月6日DSP原理及应用135.2

COFF的一般概念5.2.1

COFF文件的基本单元

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

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

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

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

第5章TMS320C54x的汇编语言程序设计基础2023年2月6日DSP原理及应用145.2.1

COFF文件的基本单元

1.

段(sections)

“段”是COFF文件中最重要的概念。每个目标文件都分成若干段,每个段都是分开且各不相同的。

段——存储器图中占据相邻空间的代码或数据块。所有的COFF目标文件都包含以下3种形式的段:

.text

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

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

段(保留空间段),通常为未初始化变量保留存储空间。第5章TMS320C54x的汇编语言程序设计基础2023年2月6日DSP原理及应用155.2.1

COFF文件的基本单元

1.

段(sections)

第5章TMS320C54x的汇编语言程序设计基础2023年2月6日DSP原理及应用165.2.1

COFF文件的基本单元

2.

段的基本类型

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

初始化段(Initializedsections)

未初始化段(Uninitializedsections)(1)

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

.text段——已初始化段;

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

第5章TMS320C54x的汇编语言程序设计基础2023年2月6日DSP原理及应用175.2.1

COFF文件的基本单元

2.

段的基本类型

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

未初始化段

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

.bss段——未初始化段;.usect段——未初始化段,由汇编命令建立的命名段(自定义段)。第5章TMS320C54x的汇编语言程序设计基础2023年2月6日DSP原理及应用185.2.1

COFF文件的基本单元

3.

段与目标存储器的对应关系

汇编器的任务:在汇编过程中,根据汇编命令用适当的段将各部分程序代码和数据连在一起,构成目标文件。

链接器的任务:即分配存储单元,将目标文件中的段重新定位到目标系统的存储器中,这一过程称为定位或分配。

第5章TMS320C54x的汇编语言程序设计基础2023年2月6日DSP原理及应用193.

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

目标文件目标存储器.bss.data.textRAME2PROMROM第5章TMS320C54x的汇编语言程序设计基础2023年2月6日DSP原理及应用205.2.2

汇编器对段的处理

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

汇编器有5条伪指令可识别汇编语言程序的各个部分:

.bss

.usect

.text

.data

.sect——定义未初始化段——定义未初始化段——定义已初始化段——定义已初始化段——定义已初始化段第5章TMS320C54x的汇编语言程序设计基础2023年2月6日DSP原理及应用215.2.2

汇编器对段的处理

未初始化段就是在’C54x存储器中的保留空间,通常将它们定位在RAM区。

在目标文件中,这些段中没有确切的内容。

由这些段定义的空间仅作为临时存储空间,在程序运行时,可以利用这些存储空间存放变量。

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

第5章TMS320C54x的汇编语言程序设计基础2023年2月6日DSP原理及应用22(1).bss伪指令1.未初始化段

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

格式:

.bss

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

字数——表示在bss段或标有名字的段中保留若干个存储单元。

每调用一次.bss伪指令,汇编器在相应的段保留更多的空间。

第5章TMS320C54x的汇编语言程序设计基础2023年2月6日DSP原理及应用231.未初始化段

(2).usect伪指令

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

格式:符号.usect

“段名”,字数段名——程序员为未初始化的命名段定义的名字。

每调用一次.usect伪指令,汇编器在指定的命名段保留更多的空间。

第5章TMS320C54x的汇编语言程序设计基础2023年2月6日DSP原理及应用245.2.2

汇编器对段的处理

已初始化段中包含有可执行代码或初始化数据。

这些段中的内容都在目标文件中,当加载程序时再放到’C54x的存储器中。

每个已初始化段都是可以重新定位的,并且可以引用其他段中所定义的符号。

链接器在链接时会自动地处理段间的相互引用。

已初始化段由.text、.data和.sect三个伪指令建立。2.

已初始化段第5章TMS320C54x的汇编语言程序设计基础2023年2月6日DSP原理及应用25已初始化命令的句法:

2.

已初始化段

.text[段起点]

.data[段起点]

.sect

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

第5章TMS320C54x的汇编语言程序设计基础2023年2月6日DSP原理及应用26

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

当汇编器遇到.bss或.usect命令时,并不结束当前段的汇编,只是暂时从当前段脱离出来,并开始对新的段进行汇编。.bss和.usect命令可以出现在一个已初始化段的任何位置,而不会对它的内容发生影响。第5章TMS320C54x的汇编语言程序设计基础2.

已初始化段2023年2月6日DSP原理及应用27第5章TMS320C54x的汇编语言程序设计基础2.

已初始化段2023年2月6日DSP原理及应用285.2.2

汇编器对段的处理

命名段由用户指定,与默认的.text,.data和.bss段的使用相同,但它们被分开汇编。例如,重复使用.text段建成单个.text段,在链接时,这个.text段被作为单个单元定位。3.

命名段(自定义段)第5章TMS320C54x的汇编语言程序设计基础2023年2月6日DSP原理及应用29

假如不希望一部分可执行代码(例如初始化程序)和.text段分配在一起,可将它们汇编进一个命名段,这样就可定位在与.text不同的地方;也可将初始化的数据汇编到与.data段不同的地方;或者将未初始化的变量保留在与.bss段不同的位置。3.

命名段(自定义段)第5章TMS320C54x的汇编语言程序设计基础2023年2月6日DSP原理及应用30可用.usect和.sect两个伪指令产生命名段。

.usect伪指令产生类似.bss的段,为变量在RAM中保留存储空间。

.sect伪指令产生类似.text和.data的段,可以包含代码或数据。

.sect伪指令产生可重新定位地址的命名段。3.

命名段第5章TMS320C54x的汇编语言程序设计基础2023年2月6日DSP原理及应用313.

命名段

产生命名段伪指令格式:

符号

.usect

“段名”,字数

.sect

“段名”可以产生多达32767个不同的命名段。段名可长达200个字符。第5章TMS320C54x的汇编语言程序设计基础2023年2月6日DSP原理及应用32

对于.sect和.usect伪指令,段名可以作为子段的参考。

每次用一个新名字调用这些伪指令时,就产生一个新的命名段。

若用已有的段名调用这些伪指令,则汇编器就将代码或数据(或保留空间)汇编进相应名称的段中。

不同的伪指令不能使用相同的名字,即不能用.usect创建了命名段,然后又用.sect创建一个相同名字的段。3.

命名段第5章TMS320C54x的汇编语言程序设计基础2023年2月6日DSP原理及应用335.2.2

汇编器对段的处理

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

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

4.

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

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

第5章TMS320C54x的汇编语言程序设计基础2023年2月6日DSP原理及应用34对于子段,汇编器可以单独为其分配存储单元,或者在相同的基段名下与其他段组合在一起。子段有两种类型:(1)用.sect命令建立的段是已初始化的子段;(2)用.usect命令建立的段是未初始化的子段。

4.

子段

例如,若要在.text段内建立一个称之为_func的子段,其命令格式:

.sect

“.text:_func”

第5章TMS320C54x的汇编语言程序设计基础2023年2月6日DSP原理及应用355.2.2

汇编器对段的处理

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

SPC表示在程序代码或数据段内当前的地址。开始时汇编器将每个SPC置0。5.

段程序计数器SPC第5章TMS320C54x的汇编语言程序设计基础2023年2月6日DSP原理及应用36

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

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

段程序计数器SPC第5章TMS320C54x的汇编语言程序设计基础2023年2月6日DSP原理及应用37【例5.2.1】段命令应用举例。

汇编语言源程序:

.datacoeff.word044h,055h,066h.bssbuffer,8prt.word0456h.textadd:LD0Dh,Aaloop:SUB#1,A

BCaloop,AGEQ.dataivals.word0CCh,0DDh,0EEh

;初始化数据段

;3组数据放入.data段

;在.bss段保留8个单元

;0456h放入.data段

;初始化文本段

;1字指令

;2字指令

;2字指令共计5个字

;初始化数据段

;3组数据放入.data段第5章TMS320C54x的汇编语言程序设计基础2023年2月6日DSP原理及应用38汇编语言源程序:var2.usect“newvars”,2inbuf.usect“newvars”,8

.text

mpy:

LD0Ah,B

mloop:

MPY#0Ah,BBCmloop,BNOV.sect“vectors”

.word044h,088h

;建立newvars命名段,保留2个单元

;在newvars段保留8个单元

;初始化文本段

;1字指令

;2字指令

;2字指令共计5个字;建立vectors命名段

;2组数据放入vectors命名段第5章TMS320C54x的汇编语言程序设计基础2023年2月6日DSP原理及应用39经汇编后,得列表文件(部分):2**********************************3

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

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

0000.data6

0000

0044coeff.word044h,055h,066h

0001

0055

0002

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

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

0003

0456prt.word0456h第5章TMS320C54x的汇编语言程序设计基础2023年2月6日DSP原理及应用4015**********************************16**汇编代码到.text段**17**********************************18

0000.text19

0000

100dadd:

LD0Dh,A20

0001

f010aloop:SUB#1,A

0002

0001

21

0003

f842

BCaloop,AGEQ

0004

0001’

22

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

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

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

0004

.data

26

0004

00ccivals.word0CCh,0DDh,0EEh

0005

00dd

0006

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

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

0000var2.usect“newvars”,231

0001

inbuf.usect“newvars”,8

第5章TMS320C54x的汇编语言程序设计基础2023年2月6日DSP原理及应用4132

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

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

0005

.text

36

0005

110a

mpy:

LD0Ah,B

37

0006

f166mloopMPY#0Ah,B

0007

000a

38

0008

f868BCmloop,BNOV

0009

0006’

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

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

0000

.sect“vectors”

43

0000

0044

.word044h,088h

0001

0088

源程序的行号

段程序计数器目标代码汇编语言源程序第5章TMS320C54x的汇编语言程序设计基础2023年2月6日DSP原理及应用42

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

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

的程序代码。

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

个字的数据。

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

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

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

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

newvars段——用.usect命令建立的命名段,为变量保留10个存储单元。第5章TMS320C54x的汇编语言程序设计基础2023年2月6日DSP原理及应用4315********************************16**汇编代码到.text段**17********************************18

0000.text19

0000

100dadd:

LD0Dh,A20

0001

f010aloop:SUB#1,A

0002

0001

21

0003

f842

BCaloop,AGEQ

0004

0001’

22

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

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

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

0004

.data

26

0004

00ccivals.word0CCh,0DDh,0EEh

0005

00dd

0006

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

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

0000var2.usect“newvars”,231

0001

inbuf.usect“newvars”,8

行号目标代码段名100df0100001f8420001110af166000aF868000666614004400550066045600cc00dd00ee.data00440088

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

180000.text190000100dadd:

LD0Dh,A19

100d200001f010aloop:SUB#1,A20

f01020

0001210003f842BCaloop,AGEQ21

f84221

0001250004.data26000400ccivals.word0CCh,0DDh,0EEh.data

26

00cc26

00dd26

00ee300000var2.usect“newvars”,2newvars

30

保留2个字310001inbuf.usect“newvars”,831

保留8个字第5章TMS320C54x的汇编语言程序设计基础2023年2月6日DSP原理及应用44经汇编后,得列表文件(部分):2*******************************3

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

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

0000.data6

0000

0044coeff.word044h,055h,066h

00010055

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

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

00030456prt.word0456h行号目标代码段名100df0100001f8420001110af166000aF8680006004400550066045600cc00dd00ee00440088

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

6

00446

00556

006610

.bss

没有数据保留8个字14

0456第5章TMS320C54x的汇编语言程序设计基础2023年2月6日DSP原理及应用4532

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

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

0005

.text

36

0005

110a

mpy:

LD0Ah,B

370006

f166mloopMPY#0Ah,B

0007

000a

38

0008

f868BCmloop,BNOV

0009

0006’

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

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

0000

.sect“vectors”

430000

0044

.word044h,088h

0001

0088

行号目标代码段名1920202121100df0100001f8420001110af166000aF8680006.text66614262626004400550066045600cc00dd00ee.data00440088

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

360005110ampy:

LD0Ah,B36

110a370006f166mloopMPY#0Ah,B37

f16837

000a380008f868BCmloop,BNOV38

f86838

0006420000.sect“vectors”vectors

4300000044.word044h,088h43

004443

0088第5章TMS320C54x的汇编语言程序设计基础2023年2月6日DSP原理及应用465.2.3

链接器对段的处理

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

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

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

第5章TMS320C54x的汇编语言程序设计基础2023年2月6日DSP原理及应用475.2.3

链接器对段的处理

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

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

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

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

第5章TMS320C54x的汇编语言程序设计基础2023年2月6日DSP原理及应用485.2.3

链接器对段的处理1.默认的存储器分配

链接器可对多个目标文件进行链接。若链接文件中不使用MEMORY和SECTIONS命令,则为默认方式。

每个目标文件都有.text,.data、.bss段和命名段。若采用默认链接,链接器将对多个目标文件中的各个段进行组合,形成各自的对应段,并将各个段配置到所指定的存储器中,形成可执行的目标模块。在默认的方式下,链接器将从存储器的0080h开始,对组合后的各段进行存储器配置。第5章TMS320C54x的汇编语言程序设计基础2023年2月6日DSP原理及应用49默认的存储器分配:

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

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

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

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

1.默认的存储器分配第5章TMS320C54x的汇编语言程序设计基础2023年2月6日DSP原理及应用50默认的存储器分配过程: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没有使用没有配置没有配置没有使用第5章TMS320C54x的汇编语言程序设计基础2023年2月6日DSP原理及应用515.2.3

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

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

第5章TMS320C54x的汇编语言程序设计基础2023年2月6日DSP原理及应用525.2.4

链接器对程序的重新定位1.

链接器重新定位汇编器对每个段汇编时都是从0地址开始,而所有需要重新定位的符号(标号)在段内都是相对于0地址的。事实上,所有段都不可能从存储器中0地址单元开始,因此链接器必须对各个段进行重新定位。

重新定位的方法:

将各个段配置到存储器中,使每个段都有一个合适的起始地址;

将符号变量调整到相对于新的段地址的位置;

将引用调整到重新定位后的符号,这些符号反映了调整后的新符号值。

第5章TMS320C54x的汇编语言程序设计基础2023年2月6日DSP原理及应用531.

链接器重新定位汇编器在需要引用重新定位的符号处都留了一个重定位入口。链接器在对符号重新定位时,利用这些入口修正对符号的引用值。

【例5.2.2】一段采用助记符指令编写的程序,经汇编后得列表文件如下:

1

.refX2

.refZ30000.text40000F073

BY

;产生一个重定位入口

00010006’50002F073

BZ

;产生一个重定位入口

00030000!60004F020

LD#X,A

;产生一个重定位入口

00050000!70006F7E0

Y:RESET

第5章TMS320C54x的汇编语言程序设计基础2023年2月6日DSP原理及应用541.

链接器重新定位程序中有三个符号:

X、Z——是在另一个模块中定义的;Y——在.text段中定义的。当程序汇编时,X、Z的值为0——未定义的外部符号

Y的值为6——相对于.text段地址0定义汇编器形成了两个重定位入口:

X和Z:在.text段中为一次外部引用,用符号!表示;Y:是一次内部引用,用符号’表示。链接时,X重新定位在地址7100h

.text段起始地址重新定

温馨提示

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

评论

0/150

提交评论