版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 生物教學(xué)資源開(kāi)發(fā)計(jì)劃
- 亞硝酸鹽中毒解毒藥相關(guān)項(xiàng)目投資計(jì)劃書(shū)范本
- 《記錄儀操作要求》課件
- 《認(rèn)識(shí)過(guò)程與教學(xué)》課件
- 《供應(yīng)商選擇與評(píng)價(jià)》課件
- 《促銷(xiāo)人員手冊(cè)》課件
- 《保戶(hù)投保注意事項(xiàng)》課件
- 直接委托項(xiàng)目報(bào)告范文
- 護(hù)理糾紛與法律知識(shí)
- 文員社會(huì)實(shí)踐報(bào)告范文
- 學(xué)校最小單位應(yīng)急預(yù)案
- 子宮內(nèi)膜癌個(gè)案護(hù)理追蹤
- 幼兒園優(yōu)質(zhì)公開(kāi)課:小班科學(xué)《有趣的溶解》課件
- 2022-2023學(xué)年四川省巴中市巴州區(qū)川教版(三起)四年級(jí)上學(xué)期期末英語(yǔ)試卷
- 無(wú)人機(jī)風(fēng)險(xiǎn)評(píng)估和監(jiān)測(cè)
- 人教版(2023) 選擇性必修第一冊(cè) Unit 2 Looking into the Future Assessing Your Progress教案
- 正畸治療中患者牙釉質(zhì)脫礦的發(fā)病及損度觀察
- 社區(qū)居民大腸癌篩查(完整版)
- 腦血管意外的護(hù)理常規(guī)課件
- 迎新春送吉祥義務(wù)寫(xiě)春聯(lián)活動(dòng)方案
- 樓體亮化安全施工方案
評(píng)論
0/150
提交評(píng)論