第七章-偽指令和宏語(yǔ)言_第1頁(yè)
第七章-偽指令和宏語(yǔ)言_第2頁(yè)
第七章-偽指令和宏語(yǔ)言_第3頁(yè)
第七章-偽指令和宏語(yǔ)言_第4頁(yè)
第七章-偽指令和宏語(yǔ)言_第5頁(yè)
已閱讀5頁(yè),還剩30頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

偽指令和宏語(yǔ)言●

信息工程學(xué)院

●17.1、偽指令7.2、宏語(yǔ)言7.3、通用目標(biāo)文件格式7.4、命令文件程序舉例偽指令和宏語(yǔ)言2偽指令

TMS320C2000/C5X的匯編偽指令可以實(shí)現(xiàn)以下功能:▲

匯編代碼和數(shù)據(jù)到指定的段;▲

為未定義的變量保存空間;▲

控制列表文件;▲

分配存儲(chǔ)器;▲

匯編條件塊;▲

定義全局變量;▲

指定匯編器能得到的宏;▲

檢查符號(hào)調(diào)試信息。37.1偽指令——分為8類(lèi):

段定義偽指令:把匯編語(yǔ)句程序的各部分與適當(dāng)?shù)亩温?lián)系起來(lái)。

.bes,

.bss,.data,.text,.sect,.usect,.sblock。▲初始化常數(shù)偽指令:為當(dāng)前段匯編數(shù)值。

.space,.byte,.field,.float,.xfloat,.int,.word,.long,.xlong,.pstring,string?!纬绦蛴?jì)數(shù)器排列偽指令:使段程序計(jì)數(shù)器SPC指向預(yù)定的位置。align,.even。

▲輸出列表格式偽指令:控制列表文件的格式。.drlist,.drnolist,.fclist,.fcnolist,.length,.width,.list,.nolist,.mlist,.mnolist,.option,.page,.sslist,.ssnolist,.tab,.title?!闷渌募沃噶睿簽槲募峁┬畔⒒蛱峁┻@些文件的信息。..copy,.include,.global,.def,.ref,.mlib?!鴹l件匯編偽指令:使匯編器根據(jù)表達(dá)式求值結(jié)果的真或假來(lái)匯編代碼的某些段。

.if,.elseif,.else,.endif,.loop,.break,.endloop?!鴧R編時(shí)的符號(hào)偽指令:使定義的符號(hào)名等同于常數(shù)值或字符串。

.asg,.eval,.set,.equ,.struct,.endstruct,.label

。

匯編模式偽指令:定義在C28x或認(rèn)可C2xLP模式。.c28_amode,.lp_amode。▲其他偽指令:具有其他功能和特性的偽指令。.end,.mmregs,.newblock,.port,.sblock,.version,.emsg,.wmsg。47.2宏指令▲

將頻繁出現(xiàn)的程序段定義為宏指令,▲

當(dāng)程序中需要執(zhí)行該程序段時(shí),只需用一條宏調(diào)用語(yǔ)句?!?/p>

縮短源程序的長(zhǎng)度,使源程序易讀,減少了書(shū)寫(xiě)錯(cuò)誤。使用宏的過(guò)程要經(jīng)過(guò)以下3個(gè)步驟:1)定義宏:用戶(hù)在使用宏之前必須先定義宏。在程序的任何地方都可以定義一個(gè)宏??稍谠次募_(kāi)始處或者在.include/.copy文件中或者在宏庫(kù)中定義。格式:

宏名.macro[形式參數(shù)1][,形式參數(shù)2]…[,形式參數(shù)n]

}宏體

[.mexit]

.endm5宏名——用通常規(guī)定的字符串格式書(shū)寫(xiě)。.mexit

——相當(dāng)于“goto.endm”,用于條件判斷后的轉(zhuǎn)移,可缺省。形式參數(shù)——或稱(chēng)為替代符號(hào)。同樣按通常規(guī)定的字符串格式書(shū)寫(xiě)。替代符號(hào)作為宏參數(shù)僅在被定義的宏中有效?!?/p>

每個(gè)宏最多可以用32個(gè)宏參數(shù)。▲

宏可以嵌套,但宏的所有元素都應(yīng)在同一個(gè)文件中定義。7.2宏指令(2)調(diào)用宏:在定義了宏以后,就可以在源程序中將宏的名字作為操作碼來(lái)調(diào)用。

格式:

宏名[實(shí)參數(shù)1][,實(shí)參數(shù)2]…[,實(shí)參數(shù)n]6,7.2宏指令(3)展開(kāi)宏:匯編器在對(duì)源文件進(jìn)行匯編時(shí),對(duì)調(diào)用的宏進(jìn)行展開(kāi)。在展開(kāi)過(guò)程中,匯編器用宏體取代宏調(diào)用語(yǔ)句,宏體中的形式參數(shù)實(shí)際參數(shù)代替。

①如果某個(gè)形式參數(shù)沒(méi)有對(duì)應(yīng)的實(shí)參數(shù)為其賦值,該形式參數(shù)將被空串(“”)代替。②如果實(shí)參數(shù)的個(gè)數(shù)多于形式參數(shù),則余下的實(shí)參數(shù)將賦給最后一個(gè)形式參數(shù)(用逗號(hào)隔開(kāi))。③如果要把一串變量賦給一個(gè)形式參數(shù),或者把一個(gè)逗號(hào)(或分號(hào))傳給一個(gè)形式參數(shù),就必須用引號(hào)將它們引起來(lái)。④匯編時(shí),匯編器先用實(shí)參數(shù)代替形式參數(shù)并展開(kāi)宏,然后把源語(yǔ)句匯編為目標(biāo)代碼,并輸出到列表文件中。7,7.2宏指令例6.23

宏定義:

parms .macrox,y,z a=x b=y c=z .endm調(diào)用宏:

匯編時(shí)展開(kāi)宏:

parms 100,200

;a=100

;b=200

;c=“”

parms

“100,200,300”,55,66,77

;a=“100,200,300”

;b=55

;c=66,778

.C

——C源文件

.ASM

——匯編文件

.CMD

——命令文件.H

——頭文件.PRJ

——工程文件

.LST——列表文件

.MAP——映射文件

.OBJ——目標(biāo)文件

.OUT——可執(zhí)行文件

7.3通用目標(biāo)文件格式通用目標(biāo)文件格式允許用戶(hù)編寫(xiě)匯編語(yǔ)言程序時(shí)使用代碼塊和數(shù)據(jù)塊,這些塊被稱(chēng)為段。用匯編器可以將匯編語(yǔ)言源程序匯編為目標(biāo)文件,用連接器將若干個(gè)目標(biāo)文件連接成一個(gè)可被DSP芯片執(zhí)行的可執(zhí)行文件。這些目標(biāo)文件的格式稱(chēng)為通用目標(biāo)文件格式(COFF,CommonObjectFileFormat)。DSP系統(tǒng)中常用的文件后綴9

COFF目標(biāo)文件總是包括3個(gè)默認(rèn)的段:

▲文本段:用.text定義,通常包括可執(zhí)行代碼。

數(shù)據(jù)段:用.data定義,通常包括已初始化的數(shù)據(jù)。

預(yù)留段:用.bss定義,通常保留用于未初始化變量的空間。用.usect,.sect或.asect偽指令可創(chuàng)建命名段。這些命名段可以像.text,.data一樣被使用。

COFF有兩種基本類(lèi)型的段:①已初始化的段——包含數(shù)據(jù)或代碼。用.text和.data偽指令定義的段和用.sect或.asect偽指令創(chuàng)建的命名段均為已初始化的段。②未初始化的段——在內(nèi)存映射中為未初始化數(shù)據(jù)保留空間。.bss段和用.usect偽指令創(chuàng)建的命名段是未初始化的段,在目標(biāo)文件中這些段沒(méi)有實(shí)際內(nèi)容。段7.3通用目標(biāo)文件格式目標(biāo)文件的最小單位被稱(chēng)為段,它是在存儲(chǔ)器中占有連續(xù)空間的代碼塊或數(shù)據(jù)塊。107.3通用目標(biāo)文件格式▲

匯編器在匯編過(guò)程中建立這些段,連接器把段重定位到目標(biāo)存儲(chǔ)器中▲

所有的段都是獨(dú)立的、可定位的▲

相同的段將按先后次序定位在連續(xù)的區(qū)域內(nèi)▲

未初始化段被定位到RAM內(nèi);初始化段可單獨(dú)定位在RAM或ROM內(nèi),并且在連接時(shí)還可引用其他段內(nèi)定義的符號(hào)匯編器為每個(gè)段設(shè)置了一個(gè)獨(dú)立的程序計(jì)數(shù)器,這些計(jì)數(shù)器稱(chēng)為段程序計(jì)數(shù)器(SPC,SectionProgramCounters)??梢杂枚纬绦蛴?jì)數(shù)器排列偽指令.align或.even,強(qiáng)迫SPC指向預(yù)定的位置。段段程序計(jì)數(shù)器117.3通用目標(biāo)文件格式連接器命令文件和連接器偽指令▲連接器通過(guò)連接COFF目標(biāo)文件建立可執(zhí)行文件,▲目標(biāo)文件中的段是連接時(shí)的重要依據(jù)?!B接器可把段定位到用戶(hù)系統(tǒng)已配置的存儲(chǔ)器中?!B接器命令文件(.cmd)則給出連接器在連接時(shí)的有關(guān)信息▲

DSP芯片的存儲(chǔ)器配置隨應(yīng)用的不同而不同. 用連接器偽指令

MEMORY(存儲(chǔ)器偽指令)可以確定目標(biāo)系統(tǒng)的各種內(nèi)存配置?!?dāng)MEMORY決定了存儲(chǔ)器模式后,可以用連接器偽指令SECTIONS

(段偽指令)確定連接器組合輸入段的方法和輸出段在存儲(chǔ)器中的位置?!绻皇褂眠@兩條偽指令,連接器則用默認(rèn)存儲(chǔ)器的定位方式來(lái)組合段,并把它們定位到存儲(chǔ)器中。127.3通用目標(biāo)文件格式連接器命令文件和連接器偽指令連接器命令文件.cmd連接器命令文件允許用戶(hù)把連接信息放置在文件中。命令文件是ASCII文件,可以包含下列各項(xiàng)中的某一項(xiàng):▲輸入文件名。該輸入文件可以是目標(biāo)文件、歸檔庫(kù)或其他命令文件?!B接器選項(xiàng)。在命令文件中可以用命令行上的連接器選項(xiàng)?!鳰EMORY和SECTIONS連接器偽指令?!⑨尅S脩?hù)可以使用/*和*/定界符把注釋加到命令文件中。▲賦值語(yǔ)句。該語(yǔ)句定義并賦值給全局符號(hào)。137.3通用目標(biāo)文件格式連接器命令文件和連接器偽指令連接時(shí)給符號(hào)賦值▲賦值語(yǔ)句的語(yǔ)法:連接器中賦值語(yǔ)句的語(yǔ)法類(lèi)似于C語(yǔ)言中賦值語(yǔ)句語(yǔ)法。符號(hào)=表達(dá)式 ;把表達(dá)式的值賦予符號(hào)符號(hào)+=表達(dá)式 ;把表達(dá)式的值加到符號(hào)上符號(hào)-=表達(dá)式 ;從符號(hào)減去表達(dá)式的值符號(hào)*=表達(dá)式 ;符號(hào)乘以表達(dá)式符號(hào)/=表達(dá)式 ;符號(hào)除以表達(dá)式

▲把SPC賦予符號(hào)“.”:“.”表示定位期間SPC的當(dāng)前值?!?”符號(hào)僅可用在SECTIONS偽指令內(nèi)的賦值語(yǔ)句中,用來(lái)表示段的當(dāng)前運(yùn)行地址。147.3通用目標(biāo)文件格式連接器命令文件和連接器偽指令▲賦值表達(dá)式:連接器表達(dá)式必須遵循以下規(guī)則:√

表達(dá)式可包含全局符號(hào)、常數(shù),以及表8-3-1所列的C語(yǔ)言運(yùn)算符?!?/p>

所有數(shù)被當(dāng)做長(zhǎng)整數(shù)(32位)處理?!?/p>

連接器用和匯編器相同的方式識(shí)別常數(shù)。見(jiàn)表8-3-2.√表達(dá)式中的符號(hào)只具有符號(hào)的地址值,不進(jìn)行類(lèi)型檢查。√

連接器表達(dá)式可以是絕對(duì)的或可重定位的。157.3通用目標(biāo)文件格式連接器命令文件和連接器偽指令▲MEMORY偽指令——確定在目標(biāo)系統(tǒng)中具有物理位置且可被程序使用的存儲(chǔ)器范圍。MEMORY偽指令的一般語(yǔ)句形式為:MEMORY{PAGE0:存儲(chǔ)器名1[(屬性)]:ORIGIN=常數(shù),LENGTH=常數(shù)

PAGEn:存儲(chǔ)器名n[(屬性)]:ORIGIN=常數(shù),LENGTH=常數(shù)

}167.3通用目標(biāo)文件格式連接器命令文件和連接器偽指令PAGE:

√定義一個(gè)存儲(chǔ)器空間,用戶(hù)可以定義多達(dá)255頁(yè)?!?/p>

PAGE0定義程序存儲(chǔ)器,PAGE1定義數(shù)據(jù)存儲(chǔ)器,PAGE2定義I/O空間。√如果用戶(hù)沒(méi)有使用PAGE選項(xiàng),那么連接器把段定位到PAGE0?!堂總€(gè)PAGE代表一個(gè)完全獨(dú)立的地址空間。√在PAGE0上已配置的存儲(chǔ)器可以和在PAGE1上已配置的存儲(chǔ)器重疊。存儲(chǔ)器名:√命名存儲(chǔ)器范圍。由1~8個(gè)字符組成?!堂謱?duì)于連接器沒(méi)有特殊的意義,僅指明存儲(chǔ)器的區(qū)域。√在不同頁(yè)上存儲(chǔ)器范圍可以有相同的名字,√在同一頁(yè),所有的存儲(chǔ)器范圍不能有相同的名字,且不能重疊。177.3通用目標(biāo)文件格式連接器命令文件和連接器偽指令屬性:可選項(xiàng),當(dāng)被使用時(shí),必須用括號(hào)括起來(lái)。屬性把輸出段的定位限制在某些存儲(chǔ)器范圍內(nèi)。如果用戶(hù)不使用任何屬性,則輸出段即可以定位到任何范圍內(nèi)。有效的屬性包括:R——存儲(chǔ)器可讀;W——存儲(chǔ)器可寫(xiě);X——儲(chǔ)器可以包含可執(zhí)行代碼;I——存儲(chǔ)器可被初始化。ORIGIN:指定存儲(chǔ)器的起始地址,也可以寫(xiě)成org或o。這個(gè)值是以字節(jié)規(guī)定的16位常數(shù),也可以是十進(jìn)制、八進(jìn)制或十六進(jìn)制。

LENGTH:指定存儲(chǔ)器的長(zhǎng)度,也可以寫(xiě)成len或l。數(shù)值的表示與origin相同▲

當(dāng)用戶(hù)使用MEMORY偽指令時(shí),要確信已指定了所有可用于裝載代碼的存儲(chǔ)器范圍?!?/p>

連接器不把程序放到未配置的存儲(chǔ)器中。注意:187.3通用目標(biāo)文件格式連接器命令文件和連接器偽指令例6.24

MEMORY指令舉例

/*SampleCommandfilewithMEMORYdirective*/file1.objfile2.obj-oprog.out

MEMORY{PAGE0:ROM:ORIGIN=0C00h,LENGTH=1000hPAGE1:SCRATCH:ORIGIN=60h,LENGTH=20hRAM:ORIGIN=200h,LENGTH=200h}該例定義了一個(gè)存儲(chǔ)器系統(tǒng):具有程序存儲(chǔ)器中地址為0C00h,長(zhǎng)度為4K字的ROM;數(shù)據(jù)存儲(chǔ)器中地址為60h,長(zhǎng)度為32字的RAM;數(shù)據(jù)存儲(chǔ)器中地址為200h,長(zhǎng)度為512字的RAM。197.3通用目標(biāo)文件格式連接器命令文件和連接器偽指令▲

SECTIONS偽指令

——

描述輸入段怎樣被組合到輸出段內(nèi);定義在執(zhí)行程序中的輸出段;規(guī)定輸出段在存儲(chǔ)器中的位置;允許重新命名輸出段。SECTIONS偽指令的一般語(yǔ)法形式是:SECTIONS{

段名1:[特性1,特性2,……]

段名2:[特性1,特性2,……]……………}指令中的每一行從段名開(kāi)始定義輸出段,輸出段是輸出文件內(nèi)的段。在段名之后是特性列表(以逗號(hào)隔開(kāi)),定義段的內(nèi)容以及它是怎樣被分配的。207.3通用目標(biāo)文件格式連接器命令文件和連接器偽指令特性列表的選項(xiàng)(段所具備的特性)有以下幾種。▲

裝載地址:規(guī)定段將被裝載在存儲(chǔ)器中的位置。

語(yǔ)法:load=allocation或allocation或{}>allocationallocation是MEMORY偽指令所定義的范圍內(nèi)地址?!?/p>

運(yùn)行地址:定義段在存儲(chǔ)器內(nèi)運(yùn)行的位置。

語(yǔ)法:run=allocation或 run>allocation

如果在一個(gè)段中l(wèi)oad和run的地址相同,run可以省略。連接器為每個(gè)輸出段分配兩個(gè)目標(biāo)存儲(chǔ)器地址:裝載地址和運(yùn)行地址。通常這兩個(gè)地址是相同的。但有時(shí)用戶(hù)可能把代碼裝入存儲(chǔ)器的一個(gè)區(qū)域卻在另一個(gè)區(qū)域運(yùn)行它。例如在引導(dǎo)加載程序,用load設(shè)置它的裝載地址,用run設(shè)置它的運(yùn)行地址。217.3通用目標(biāo)文件格式連接器命令文件和連接器偽指令▲

調(diào)準(zhǔn)地址:規(guī)定段應(yīng)在地址邊界上開(kāi)始。調(diào)準(zhǔn)可以使連接器把輸出段放在位于n字邊界的地址,其中n是2的冪。

語(yǔ)法:align=n或 align=(n)

如.textalign=128,即將.text段定位于頁(yè)邊界。▲

塊地址:規(guī)定段必須裝在兩個(gè)地址邊界之間,它把段定位在大小為n的塊內(nèi)任何地方,如果段大于塊,那么段將從該邊界開(kāi)始。和調(diào)準(zhǔn)一樣,n必須是2的冪。

語(yǔ)法:block=n或block(n)

.bssload=block(0x80)。定位.bss段使其包含在單個(gè)128字的頁(yè)內(nèi)或者從新頁(yè)開(kāi)始。用戶(hù)可以單獨(dú)使用調(diào)準(zhǔn)或塊,也可以和裝入地址、運(yùn)行地址結(jié)合在一起使用,但是調(diào)準(zhǔn)和塊不能一起使用。227.3通用目標(biāo)文件格式連接器命令文件和連接器偽指令▲

輸入段:定義組成輸出段的輸入段。

語(yǔ)法:{input_sections}

輸入文件中的段組合起來(lái)形成輸出段,連接器按照所列出的輸入段的次序連接并組合它們。輸出段的大小是組成它的輸入段的大小之和。通用類(lèi)型的段的規(guī)格說(shuō)明中沒(méi)有輸入段。如:SECTIONS{.text:.data:.bss:}

此時(shí)連接器從輸入文件取出所有.text段并把它們組合到.text輸出段內(nèi)。連接器按照它在輸入文件中遇到的次序連接.text輸入段,對(duì).data和.bss段的操作與.text相同。用戶(hù)也可以明確規(guī)定組成輸出段的輸入段,每個(gè)輸入段用它的文件名和段名來(lái)標(biāo)志。237.3通用目標(biāo)文件格式連接器命令文件和連接器偽指令例6.25

SECTIONS{.text {f1.obj(.text) f2.obj(sec1) f3.obj f3.obj(.text,sec2)}

}

輸入段不必相互同名也不必和輸出段同名。如果列舉輸入文件時(shí)不帶段,那么它所有的段將被包含在輸出段之內(nèi)。247.3通用目標(biāo)文件格式連接器命令文件和連接器偽指令

段類(lèi)型:定義特殊段類(lèi)型的標(biāo)志。語(yǔ)法:type=COPY

type=DSECT

或type=NOLOAD

用戶(hù)可以把這3種特殊的類(lèi)型賦予輸出段。用COPY和DSECT創(chuàng)建的段是一個(gè)虛段,它不包括在輸出段存儲(chǔ)器分配內(nèi),也不占據(jù)存儲(chǔ)器空間,不包括在存儲(chǔ)器映象列表中。但在虛段中定義的全局符號(hào)可以被其他輸入段引用,COPY段可以將段的內(nèi)容、重定位信息及行號(hào)信息放在輸出模塊中,而DSECT段則不放置。NOLOAD創(chuàng)建的段不將段的內(nèi)容、重定位信息及行號(hào)信息放在輸出模塊中,但連接器為其分配空間并包括在存儲(chǔ)器映象列表中。257.3通用目標(biāo)文件格式連接器命令文件和連接器偽指令▲

填充值:定義用于填充初始化空位的數(shù)值。

語(yǔ)法:file=value

name:…{…}=value

當(dāng)初始化輸出段內(nèi)有空位存在時(shí),連接器必須提供原始數(shù)據(jù)以填充它。連接器用16位數(shù)值填充空位,該數(shù)值在存儲(chǔ)器內(nèi)復(fù)制直至它填滿空位為止。267.4通用目標(biāo)文件格式連接器命令文件和連接器偽指令例6.26

SETIONS偽指令的使用file1.objfile2.obj -oprog.out

SECTIONS{.text:load=ROM run=0800h.const:load=ROM.bss:load=RAMvectors:load=0FF80h {t1.obj(.intvec1) t2.obj(.intvec2)

endvec=. }.data:align=16}277.4通用目標(biāo)文件格式連接器命令文件和連接器偽指令▲

連接器舉例

例6.27是一個(gè)名為demo.cmd的連接器命令文件,它連接了3個(gè)目標(biāo)文件:demo.obj,fft.obj和tables.obj,并創(chuàng)建了一個(gè)名為demo.out的可執(zhí)行程序。假設(shè)目標(biāo)存儲(chǔ)器具有下列配置。程序存儲(chǔ)器:

地址范圍

內(nèi)容0xF0000~0x3FFFBF片內(nèi)ROM0x3FFFC0~0x3FFFFF中斷向量表數(shù)據(jù)存儲(chǔ)器:

地址范圍

內(nèi)容0x000040~0x0001FF 堆棧0x000200~0x0007FF RAM_10x3ED000~0x3EFFFF RAM_228例6.27

命令文件exmp.cmd

/** 定義連接器選項(xiàng) **/-e SETUP/*定義程序入口 */-o demo.out

/*命名輸出文件*/-m demo.map

/*創(chuàng)建一個(gè)輸出列表文件*/

/** 定義輸入文件 **/demo.obj

/*連接三個(gè)目標(biāo)文件*/fft.objtables.obj/** 定義存儲(chǔ)器配置 **/MEMORY{PAGE0:ROM(R):ORIGIN=3F0000h,LENGTH=0FFC0hVECTORS(R):ORIGIN=3FFFC0h,LENGTH=0040hPAGE1:STACK(RW):ORIGIN=000040h,LENGTH=01C0hRAM_2(RW)

:ORIGIN=000200h,LENGTH=0600hRAM_1(RW)

:ORIGIN=3ED000h,LENGTH=3000h}

29SECTIONS{vectors:{}>VECTORS,PAGE=0 .text:load=ROM,PAGE=0 .data:file=07A1Ch,load=RAM_1,PAGE=1

{tables.obj(.data)

fft.obj(.data)+=100h;/*創(chuàng)建一個(gè)長(zhǎng)度為100的空間,用07A1Ch填充*/

}

var_defs:{}>RAM_2page=1/*包含在dmo.obj文件中var_defs段的變量連接到數(shù)據(jù)塊RAM_2中*/

.bss:{}>RAM_1,page=1,fill=0FFFFh/*.bss的填充和鏈接*/

}7.4通用目標(biāo)文件格式連接器命令文件和連接器偽指令307.4通用目標(biāo)文件格式連接器命令文件和連接器偽指令▲

TMS320C228x器件的默認(rèn)定位MEMORY{PAGE0:PROG:ORIGIN=0x000040H,LENGTH=0x3FFFC0HPAGE1:DATA:ORIGIN=0x000000H,LENGTH=0x010000HPAGE1:DATA1:ORIGIN=0x010000H,LENGTH=0x3F0000H}

SECTIONS{.text:PAGE=0 .data:PAGE=0.cinit:PAGE=0/*僅在C程序中使用*/ .bss:PAGE=1 }用戶(hù)沒(méi)有使用MEMORY和SECTIONS的情況下,存儲(chǔ)器使用該默認(rèn)定位317.4程序舉例▲

公用文件程序設(shè)計(jì)時(shí),需在多個(gè)模塊中使用相同設(shè)置和中斷處理:

將芯片中映射至I/O空間的寄存器地址及標(biāo)號(hào)、預(yù)置變量和常數(shù)的空間等設(shè)置語(yǔ)句集中在一個(gè)文件中,稱(chēng)為I/O寄存器頭文件(如init.h);

將轉(zhuǎn)移中斷矢量地址的指令集中在一個(gè)文件中,稱(chēng)為中斷矢量頭文件(如vector.h);

將定義程序、數(shù)據(jù)和I/O空間地址塊大小和位置的偽指令集中在一個(gè)文件中,稱(chēng)為命令文件(如F206.cmd)。

這3個(gè)文件稱(chēng)為公用文件。

32

用.copy或.include偽指令將I/O寄存器頭文件和中斷矢量頭文件復(fù)制到該應(yīng)用程序中,形成一個(gè)匯編源程序(如

delay.asm)

由匯編器進(jìn)行匯編后生成一個(gè)目標(biāo)文件(如delay.obj

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論