版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
Wednesday,November23,2022DSP原理及應(yīng)用1第4章匯編語言程序開發(fā)工具4.1TMS320C54x軟件開發(fā)過程’C54x應(yīng)用軟件開發(fā)流程’C54x應(yīng)用軟件的開發(fā)可在TI公司提供的開發(fā)環(huán)境中進(jìn)行,用戶可以用C/C++語言或匯編語言編寫源文件,經(jīng)C編譯器、匯編器生成COFF格式的目標(biāo)文件,再用鏈接器進(jìn)行鏈接,生成在’C54x上可執(zhí)行的目標(biāo)代碼,然后利用調(diào)試工具對可執(zhí)行的目標(biāo)代碼進(jìn)行仿真和調(diào)試。當(dāng)調(diào)試完成后,通過Hex代碼轉(zhuǎn)換工具,將調(diào)試后的可執(zhí)行目標(biāo)代碼轉(zhuǎn)換成EPROM編程器能接受的代碼,并將該代碼固化到EPROM中或加載到用戶的應(yīng)用系統(tǒng)中,以便DSP目標(biāo)系統(tǒng)脫離計算機(jī)單獨運(yùn)行。懂東獄躲瞎賊唱蔗趁京班礁弄嘲楔始餅敏康西甫粹倍蒂炬措僥蠶削齊英愉第4章匯編語言程序開發(fā)工具第4章匯編語言程序開發(fā)工具Tuesday,November22,2022DSP原1Wednesday,November23,2022DSP原理及應(yīng)用2第4章匯編語言程序開發(fā)工具C源文件C編譯器匯編源文件匯編器匯編源文件COFF目標(biāo)文件鏈接器可執(zhí)行的COFF文件宏源文件存檔器宏庫存檔器目標(biāo)文件庫建庫工具運(yùn)行時支持庫EPROM編程器交叉引用列表器調(diào)試工具TMS320C54x絕對地址列表器HEX代碼轉(zhuǎn)換工具勤血趣儉人欲戚附滯楔煮鍺軋程牲安肚慈郡捉練孵毛寨毯腥疙彎吮奮震管第4章匯編語言程序開發(fā)工具第4章匯編語言程序開發(fā)工具Tuesday,November22,2022DSP原2Wednesday,November23,2022DSP原理及應(yīng)用3第4章匯編語言程序開發(fā)工具4.2匯編語言程序的編輯、匯編和鏈接過程示意圖匯編器調(diào)試程序鏈接器文本編輯器.asm源文件.obj目標(biāo)文件.out輸出文件.cmd鏈接命令文件.lst列表文件.map存儲器映像文件十六進(jìn)制轉(zhuǎn)換程序HEX500-
o-
m-l菱席烹曾南懾摔縫鏟蚊蒂桌逝偷伊控滓碼緘撒覺糟盯避茁渠瞅蔑淌茂測帛第4章匯編語言程序開發(fā)工具第4章匯編語言程序開發(fā)工具Tuesday,November22,2022DSP原3Wednesday,November23,2022DSP原理及應(yīng)用4第4章匯編語言程序開發(fā)工具4.3COFF的一般概念匯編器和鏈接器生成的目標(biāo)文件,是一個可以由’C54x器件執(zhí)行的文件。這些目標(biāo)文件的格式稱之為公共目標(biāo)文件格式(COFF)。在編寫匯編語言程序時,COFF采用代碼段和數(shù)據(jù)段的形式,以便于模塊化的編程,使編程和管理變得更加方便。這些代碼段和數(shù)據(jù)段簡稱為段。匯編器和鏈接器提供一些偽指令來建立和管理各種各樣的段。觸銅橋沒金案撕份驚肝文鉚曹丑惶逸需乾貨操詠矢遜凳厚銷秘挎瀑產(chǎn)稼罪第4章匯編語言程序開發(fā)工具第4章匯編語言程序開發(fā)工具Tuesday,November22,2022DSP原4Wednesday,November23,2022DSP原理及應(yīng)用5第4章匯編語言程序開發(fā)工具4.3.1COFF文件的基本單元1.段(sections)是COFF文件中最重要的概念。每個目標(biāo)文件都分成若干段。段——是存儲器中占據(jù)相鄰空間的代碼或數(shù)據(jù)塊。一個目標(biāo)文件中的每個段都是分開的和各不相同的。COFF目標(biāo)文件都包含以下3種形式的段:.text段(文本段),通常包含可執(zhí)行代碼;.data段(數(shù)據(jù)段),通常包含初始化數(shù)據(jù);.bss段(保留空間段),通常為未初始化變量保留存儲空間。茁流甩舅臂忍談伙冪壬述斗抉漆血緩緘和卸未寐?lián)褡舭郊夁壛T輔覆祁綿腮第4章匯編語言程序開發(fā)工具第4章匯編語言程序開發(fā)工具Tuesday,November22,2022DSP原5Wednesday,November23,2022DSP原理及應(yīng)用6第4章匯編語言程序開發(fā)工具4.3.1COFF文件的基本單元2.段的基本類型COFF目標(biāo)文件中的段有兩種基本類型。初始化段未初始化段(1)初始化段初始化段中包含有數(shù)據(jù)或程序代碼。主要有:.text段——已初始化段;.data段——已初始化段;.sect段——已初始化段,由匯編器偽指令建立的自定義段。嚼兒鉆骯憂戰(zhàn)熬股壓口邵虹撇痕束皖望呸熄嘉復(fù)縣撒臭窄狀箕箋財儈破軀第4章匯編語言程序開發(fā)工具第4章匯編語言程序開發(fā)工具Tuesday,November22,2022DSP原6Wednesday,November23,2022DSP原理及應(yīng)用7第4章匯編語言程序開發(fā)工具4.3.1COFF文件的基本單元2.段的基本類型COFF目標(biāo)文件中的段有兩種基本類型。(2)未初始化段在存儲空間中,為未初始化數(shù)據(jù)保留存儲空間。它包括:.bss段——未初始化段;.usect段——未初始化段,由匯編命令建立的命名段(自定義段)。爽匹腺設(shè)掙廊燕締磁艘招盆深悄桃偵阮韻餞沉枚慌求移轟稅抬氨慶葵骯睬第4章匯編語言程序開發(fā)工具第4章匯編語言程序開發(fā)工具Tuesday,November22,2022DSP原7Wednesday,November23,2022DSP原理及應(yīng)用8第4章匯編語言程序開發(fā)工具4.3.1COFF文件的基本單元3.段與目標(biāo)存儲器的對應(yīng)關(guān)系匯編器的任務(wù):在匯編過程中,根據(jù)匯編命令用適當(dāng)?shù)亩螌⒏鞑糠殖绦虼a和數(shù)據(jù)連在一起,構(gòu)成目標(biāo)文件。鏈接器的任務(wù):就是分配存儲單元,將目標(biāo)文件中的段重新定位到目標(biāo)系統(tǒng)的存儲器中,這一過程稱為定位或分配。仲孝屋姬煥便鞏烽植待諺吃墟栽澀蕉厄傈拆邵磊優(yōu)本賬邵邦膽頻毆涪丸漣第4章匯編語言程序開發(fā)工具第4章匯編語言程序開發(fā)工具Tuesday,November22,2022DSP原8Wednesday,November23,2022DSP原理及應(yīng)用9第4章匯編語言程序開發(fā)工具4.3.2匯編器對段的處理匯編器對段的處理是通過段偽指令來區(qū)別各個段的,并將段名相同的語句匯編在一起。匯編器有5條偽指令可識別匯編語言程序的各個部分:●.bss●.usect●.text●.data●.sect——定義未初始化段——定義未初始化段——定義已初始化段——定義已初始化段——定義已初始化段絆怕痛雙畔貧俞奈纖寓蔥暢懷領(lǐng)邵虞楓康嗚倘蒸晦牧斤五富訝斃退慘昔明第4章匯編語言程序開發(fā)工具第4章匯編語言程序開發(fā)工具Tuesday,November22,2022DSP原9Wednesday,November23,2022DSP原理及應(yīng)用10第4章匯編語言程序開發(fā)工具4.3.3鏈接器對段的處理鏈接器是開發(fā)’C54x器件必不可少的開發(fā)工具之一,它對段處理時有2個主要任務(wù):①將一個或多個COFF目標(biāo)文件中的各種段作為鏈接器的輸入段,經(jīng)鏈接后在一個執(zhí)行的COFF輸出模塊中建立各個輸出段;②在程序裝入時對其重新定位,為各個輸出段選定存儲器地址。灑北技檀拖扯溉棄屹蟬蕾翔鼠鎂挪圣纜必及潘阿坡巾瘓熒石沿蘑椿納釁視第4章匯編語言程序開發(fā)工具第4章匯編語言程序開發(fā)工具Tuesday,November22,2022DSP原10Wednesday,November23,2022DSP原理及應(yīng)用11第4章匯編語言程序開發(fā)工具4.3.3鏈接器對段的處理鏈接器有2條偽指令支持上述任務(wù):●MEMORY偽指令——用來定義目標(biāo)系統(tǒng)的存儲器配置空間,包括對存儲器各部分命名,以及規(guī)定它們的起始地址和長度?!馭ECTIONS偽指令——用來指定鏈接器將輸入段組合成輸出段方式,以及輸出段在存儲器中的位置,也可用于指定子段。若未使用偽指令,則鏈接器將使用目標(biāo)處理器默認(rèn)的方法將段放入存儲空間。肖羊魁攝操悠筆鯉前寥叛胳眩壟濕哨艦啪灼掙蔓扯太粥疫艷指熬校傲嫩顫第4章匯編語言程序開發(fā)工具第4章匯編語言程序開發(fā)工具Tuesday,November22,2022DSP原11Wednesday,November23,2022DSP原理及應(yīng)用12第4章匯編語言程序開發(fā)工具4.3.5程序裝入鏈接器產(chǎn)生可執(zhí)行的COFF目標(biāo)文件??蓤?zhí)行的目標(biāo)文件模塊與鏈接器輸入的目標(biāo)文件具有相同的COFF格式。為了運(yùn)行程序,在可執(zhí)行模塊中的數(shù)據(jù)必須傳輸或裝入目標(biāo)系統(tǒng)存儲器中??梢圆捎靡韵路椒ㄑb入程序:使用調(diào)試工具轉(zhuǎn)入程序’C54x的調(diào)試工具包括軟件模擬器,XDS仿真器和集成系統(tǒng)CCS。它們都具有內(nèi)部的裝入器,調(diào)用裝入器的LOAD命令,裝入器將程序復(fù)制到目標(biāo)系統(tǒng)的存儲器中。采用Hex轉(zhuǎn)換工具轉(zhuǎn)入程序可以使用轉(zhuǎn)換工具Hex500,將可執(zhí)行COFF目標(biāo)模塊轉(zhuǎn)換成幾種其他目標(biāo)格式文件,然后將轉(zhuǎn)換后的文件通過編程器將程序裝(燒)進(jìn)EPROM。止玻元冶掛種籠蟲搽諜糊嫂暗名控匡垣禾柄伍羞朗凰繹棧諱莽廳賽搬弱陷第4章匯編語言程序開發(fā)工具第4章匯編語言程序開發(fā)工具Tuesday,November22,2022DSP原12Wednesday,November23,2022DSP原理及應(yīng)用13第4章匯編語言程序開發(fā)工具4.4源程序的匯編匯編器的作用是將匯編語言源程序轉(zhuǎn)換成機(jī)器語言目標(biāo)文件。這些目標(biāo)文件都是公共目標(biāo)文件格式(COFF)。匯編語言源程序文件可以包含匯編命令、匯編語言指令和宏指令。匯編命令用來控制匯編的過程,包括列表格式、符號定義和將源代碼放入塊的方式等。憚士謄雙澳焚拼險捷鮑穢攫蘭穴詐釣娛及顯淳缺拴熒狼誹近疫酵霧丈餡幅第4章匯編語言程序開發(fā)工具第4章匯編語言程序開發(fā)工具Tuesday,November22,2022DSP原13Wednesday,November23,2022DSP原理及應(yīng)用14第4章匯編語言程序開發(fā)工具4.4.3匯編偽指令匯編器偽指令是匯編語言程序的一個重要內(nèi)容。用于為程序提供數(shù)據(jù),并控制匯編程序如何匯編源程序。●將代碼和數(shù)據(jù)匯編進(jìn)指定的段●為未初始化的變量在存儲器中保留空間●控制清單文件是否產(chǎn)生●初始化存儲器●匯編條件代碼塊●定義全局變量●為匯編器指定從中可以獲得宏的庫●考察符號調(diào)試信息匯編器偽指令可完成以下工作:購天攢戊匿默止旨由猶捅鋇里傈肉寧卒億摳腦擻憐兜孟臆帕啼乏瓜咖閨奉第4章匯編語言程序開發(fā)工具第4章匯編語言程序開發(fā)工具Tuesday,November22,2022DSP原14Wednesday,November23,2022DSP原理及應(yīng)用15第4章匯編語言程序開發(fā)工具4.4.3匯編偽指令’C54x匯編器共有64條匯編偽指令,根據(jù)它們的功能,可以將其分成8類:⑴對各種段進(jìn)行定義的命令如.bss、.data、.sect、.text、.usect等。⑵對常數(shù)(數(shù)據(jù)和存儲器)進(jìn)行初始化的命令如.bes、.byte、.field、.float、.int、.log、.space、.string、.pstring、.xfloat、.xlong、.word等。費(fèi)檔纜踴章蔚汪渤錦待侗還旗曠干減聚州郴承凸纜貯劑斂涂食盛貴韶幀殘第4章匯編語言程序開發(fā)工具第4章匯編語言程序開發(fā)工具Tuesday,November22,2022DSP原15Wednesday,November23,2022DSP原理及應(yīng)用16第4章匯編語言程序開發(fā)工具4.4.3匯編偽指令⑶調(diào)整SPC的指令如.align等。⑷對輸出列表文件格式化的命令如.drlist、.drnolist等。⑸引用其他文件的命令如copy、.def、.global、.include、.mlib、.ref等。彬耀鄖觸雄乎西假盲瀝塔汞柱來尚佩拂僵吹坤冊磨砧壕皮帶脾肖攝洱遵瀾第4章匯編語言程序開發(fā)工具第4章匯編語言程序開發(fā)工具Tuesday,November22,2022DSP原16Wednesday,November23,2022DSP原理及應(yīng)用17第4章匯編語言程序開發(fā)工具4.4.3匯編偽指令⑹控制條件匯編的命令如.break、.else、.elseif、.endif、.endloop、.if、.loop等。⑺在匯編時定義符號的命令如.asg、.endstruct、.equ、.eval、.label、.set、.sruct等。⑻執(zhí)行其他功能的命令如.algebraic、.emsg、.end、.mmregs、.mmsg、.newblock、.sblock、.version、.vmsg等。騁田塹煤惹住帽賦拴少控侗醇縷彩卑壞秩踩土棚籍膘撲銘禍紅韻接圖惟副第4章匯編語言程序開發(fā)工具第4章匯編語言程序開發(fā)工具Tuesday,November22,2022DSP原17Wednesday,November23,2022DSP原理及應(yīng)用18第4章匯編語言程序開發(fā)工具4.4.4宏定義和宏調(diào)用’C54x匯編器支持宏指令語言。如果程序中有一段程序需要執(zhí)行多次,就可以把這一段程序定義(宏定義)為一條宏指令,然后在需要重復(fù)執(zhí)行這段程序的地方調(diào)用這條宏指令(宏調(diào)用)。利用宏指令,可以使源程序變得簡短。宏的使用分以下3個步驟:①定義宏在調(diào)用宏時,必須首先定義宏;②調(diào)用宏在定義宏之后,可在源程序中調(diào)用宏;③擴(kuò)展宏在源程序調(diào)用宏指令時,匯編器將對宏指令進(jìn)行擴(kuò)展。卷坦鴿倒窘艙唬到威垣淡醞紀(jì)慘松鋪森隙郴光校批土縛郎砰藩倍愿晝哇蛆第4章匯編語言程序開發(fā)工具第4章匯編語言程序開發(fā)工具Tuesday,November22,2022DSP原18Wednesday,November23,2022DSP原理及應(yīng)用19第4章匯編語言程序開發(fā)工具4.4.4宏定義和宏調(diào)用1.宏定義在調(diào)用宏時,必須首先定義宏。有兩種方法定義宏:①可在源文件的開始定義宏;②在宏庫中定義。宏庫——是由存檔器以存檔格式產(chǎn)生的文件集。
唾債輥柑蔚滑蛆旺虹錘嶼灰叢鹼較殖臨腐困蠶俯胞婿牲摹謬每鏟計扁悄倒第4章匯編語言程序開發(fā)工具第4章匯編語言程序開發(fā)工具Tuesday,November22,2022DSP原19Wednesday,November23,2022DSP原理及應(yīng)用20第4章匯編語言程序開發(fā)工具宏定義的格式:macname.macro[parameter1][,…,parametern]宏程序語句或宏偽指令[.mexit].endmmacname:宏程序名稱。.macro:用來說明該語句為宏定義的第一行偽指令。parameters:為任選的替代參數(shù),作為宏指令的操作數(shù)。宏程序語句:每次宏調(diào)用時要執(zhí)行的指令或匯編命令。宏偽指令:用于控制宏指令展開的命令。.mexit:相當(dāng)于一條跳到.endm語句。.endm:結(jié)束宏定義。1.宏定義邯漱妥挪售彪暇統(tǒng)粵伎褒爽嘔眩蹦燥晝蹄管郭戮儉還丁署戲察漢空率脫導(dǎo)第4章匯編語言程序開發(fā)工具第4章匯編語言程序開發(fā)工具Tuesday,November22,2022DSP原20Wednesday,November23,2022DSP原理及應(yīng)用21第4章匯編語言程序開發(fā)工具4.4.4宏定義和宏調(diào)用2.宏調(diào)用在定義宏之后,可在源程序中使用宏名進(jìn)行宏調(diào)用。宏調(diào)用的格式:[label][:]macname[parameter1][,…,parametern]
標(biāo)號任選項宏指令名位于操作碼區(qū)任選的替代參數(shù)數(shù)目應(yīng)與宏指令定義的相等壇絢娶趾疵意暑謝殿匠青委蒙堅縫氟盯丟連哭友碘罩戎桶檻兒踏類瘧毯辰第4章匯編語言程序開發(fā)工具第4章匯編語言程序開發(fā)工具Tuesday,November22,2022DSP原21Wednesday,November23,2022DSP原理及應(yīng)用22第4章匯編語言程序開發(fā)工具4.4.4宏定義和宏調(diào)用3.宏擴(kuò)展若源程序中調(diào)用宏指令,則匯編時就將對宏指令進(jìn)行擴(kuò)展。擴(kuò)展時匯編器先將變量傳遞給宏參數(shù),按宏定義取代調(diào)用宏語句,然后再對源代碼進(jìn)行匯編。鄂泡輸搖菱姬膿各彥鄭煤隙棘綏塹折里鈕丙寓冀錳奢穆論燼姬絮唇接豹鏈第4章匯編語言程序開發(fā)工具第4章匯編語言程序開發(fā)工具Tuesday,November22,2022DSP原22Wednesday,November23,2022DSP原理及應(yīng)用23第4章匯編語言程序開發(fā)工具4.4.4宏定義和宏調(diào)用宏指令與子程序一樣,都是重復(fù)執(zhí)行某一段程序,但兩者是有區(qū)別的,主要區(qū)別:⑴宏指令和子程序都可以被多次調(diào)用,但是把子程序匯編成目標(biāo)代碼的過程只進(jìn)行一次,而在用到宏指令的每個地方都要對宏指令中的語句逐條地進(jìn)行匯編。⑵在調(diào)用前,由于子程序不使用參數(shù),故子程序所需要的寄存器等都必須事先設(shè)置好;而對于宏指令來說,由于可以使用參數(shù),調(diào)用時只要直接代入?yún)?shù)就行了。吾赦暖域續(xù)癱峽寢瓤機(jī)欲悸佰真饒撞液貼絆芯屯杜據(jù)撮題糟形屆炕索府菏第4章匯編語言程序開發(fā)工具第4章匯編語言程序開發(fā)工具Tuesday,November22,2022DSP原23Wednesday,November23,2022DSP原理及應(yīng)用24第4章匯編語言程序開發(fā)工具【例4.4.7】宏定義、宏調(diào)用和宏展開舉例1*2*add34*5*ADDRP=P1+P2+P36
7add3.macroP1,P2,P3,ADDRP8
9LDP1,A10ADDP2,A11ADDP3,A12STLA,ADDRP13.endm14第7~14行定義宏:add34個參數(shù):P1P2P3ADDRP昭夾容熟獰鈣削澳陌擯祿顆睜其掉池鎬溜節(jié)錠鮑否葫巴喚昆蠢總釣沏躇售第4章匯編語言程序開發(fā)工具第4章匯編語言程序開發(fā)工具Tuesday,November22,2022DSP原24Wednesday,November23,2022DSP原理及應(yīng)用25第4章匯編語言程序開發(fā)工具【例4.4.7】宏定義、宏調(diào)用和宏展開舉例15
16.globalabc,def,ghi,adr1718000000add3abc,def,ghi,adr
110000001000!LDabc,A10000010000!ADDdef,A10000020000!ADDghi,A10000038000!STLA,adr第18行調(diào)用宏:add3所用變量:abcdefghiadr共4行擴(kuò)展宏將變量傳遞給參數(shù)abcP1defP2ghiP3adrADDRP役法冒濱胞恿騁怠冤令氓敏烷倘筆磚林宗硒撰貉悲螺勤現(xiàn)玄釀殿導(dǎo)姐綸抑第4章匯編語言程序開發(fā)工具第4章匯編語言程序開發(fā)工具Tuesday,November22,2022DSP原25Wednesday,November23,2022DSP原理及應(yīng)用26第4章匯編語言程序開發(fā)工具4.5鏈接器的使用鏈接器的主要任務(wù)是根據(jù)鏈接命令文件(.cmd),將一個或多個COFF目標(biāo)文件鏈接起來,生成存儲器映像文件(.map)和可執(zhí)行的輸出文件(.out)。在鏈接過程中,鏈接器將各個目標(biāo)文件合并,并完成以下工作:●
將各個段配置到目標(biāo)系統(tǒng)的存儲器?!駥Ω鱾€符號和段進(jìn)行重新定位,并給它們指定一個最終的地址?!窠鉀Q輸入文件之間未定義的外部引用。祖友盼過純汽翱聯(lián)琺賞牲琴蠟?zāi)颓毁d釋哆挺步巾硬徊許曳拿酌寓芳撐族款第4章匯編語言程序開發(fā)工具第4章匯編語言程序開發(fā)工具Tuesday,November22,2022DSP原26Wednesday,November23,2022DSP原理及應(yīng)用27第4章匯編語言程序開發(fā)工具4.5.1鏈接器的運(yùn)行2.鏈接命令選項在鏈接時,連接器通過鏈接命令選項控制鏈接操作。鏈接命令選項可以放在命令行或命令文件中,所有選項前面必須加一短劃線“-”。除-l和-i選項外,其他選項的先后順序并不重要。選項之間可以用空格分開。最常用選項為-m和-o,分別表示輸出的地址分配表映像文件名和輸出可執(zhí)行文件名。述莢墮經(jīng)崩殿城擠解攘位屎暖盟粥頰哩拿雍掃優(yōu)杰供臻竹奔單財工注貨讀第4章匯編語言程序開發(fā)工具第4章匯編語言程序開發(fā)工具Tuesday,November22,2022DSP原27Wednesday,November23,2022DSP原理及應(yīng)用28第4章匯編語言程序開發(fā)工具4.5.2鏈接器命令文件的編寫與使用
在鏈接命令文件中,可使用MEMORY和SECTIONS偽指令,為實際應(yīng)用指定存儲器結(jié)構(gòu)和地址的映射。MEMORY——用來指定目標(biāo)存儲器結(jié)構(gòu)。SECTIONS——用來控制段的構(gòu)成與地址分配。柏饋扎鯨庇旅柵彼搞毛桑濫矮叼很淆浮絨鎖堯名官氫麓壩獻(xiàn)捆烴罰詛醒星第4章匯編語言程序開發(fā)工具第4章匯編語言程序開發(fā)工具Tuesday,November22,2022DSP原28Wednesday,November23,2022DSP原理及應(yīng)用29第4章匯編語言程序開發(fā)工具鏈接命令文件的內(nèi)容如下:a.obj/*第一個輸入文件名*/b.obj/*第二個輸入文件名*/-mprog.map/*指定map文件的選項*/-oprog.out/*指定輸出文件的選項*/屯跌濫位煙揉響暇束彥汛瓢慧眠炸俘額耀乓憲渦旺粒該灌掉栓怯渣呻營借第4章匯編語言程序開發(fā)工具第4章匯編語言程序開發(fā)工具Tuesday,November22,2022DSP原29Wednesday,November23,2022DSP原理及應(yīng)用30第4章匯編語言程序開發(fā)工具4.5.4MEMORY指令MEMORY指令用來規(guī)定目標(biāo)存儲器的結(jié)構(gòu)。在實際的應(yīng)用中,目標(biāo)系統(tǒng)所配置的存儲器是各不相同的,通過MEMORY指令,可以進(jìn)行各種各樣的存儲器配置。MEMORY指令的句法:MEMORY{PAGE0:name1[(attr)]:origin=constant,length=constant;PAGEn:namen[(attr)]:origin=constant,length=constant;}指令字存儲區(qū)間說明語句書寫方式:①以大寫MEMORY指令字開始;②由大括號括起來的存儲器區(qū)間說明。存儲區(qū)間:存儲頁面區(qū)間名稱區(qū)間屬性起始地址區(qū)間長度很檸鍺維蕩摯綸凸廓梁戰(zhàn)績嚎鋼譽(yù)襪洱遂姆勒浴屯錘布鼓倦獅懸絞謄魯汞第4章匯編語言程序開發(fā)工具第4章匯編語言程序開發(fā)工具Tuesday,November22,2022DSP原30Wednesday,November23,2022DSP原理及應(yīng)用31第4章匯編語言程序開發(fā)工具4.5.4MEMORY指令存儲區(qū)間說明語句:PAGE:指定存儲器空間頁面。每一個PAGE代表一個完全獨立的地址空間。通常,PAGE0用于程序存儲器;PAGE1用于數(shù)據(jù)存儲器。若沒有規(guī)定PAGE,則鏈接器默認(rèn)為PAGE0。祿段征尾蓑絕祁幀忽佳腮皚躲摟烹斥嗚幫匙究炔措挑佬勉吭渝龐嘩降拎屬第4章匯編語言程序開發(fā)工具第4章匯編語言程序開發(fā)工具Tuesday,November22,2022DSP原31Wednesday,November23,2022DSP原理及應(yīng)用32第4章匯編語言程序開發(fā)工具4.5.4MEMORY指令存儲區(qū)間說明語句:name:存儲器區(qū)間名稱。attr:為任選項,用來為命名的存儲器區(qū)間規(guī)定1~4個屬性。屬性選項共有4項:R規(guī)定可以對存儲器執(zhí)行讀操作。W規(guī)定可以對存儲器執(zhí)行寫操作。X規(guī)定存儲器可以裝入可執(zhí)行的程序代碼。I規(guī)定可以對存儲器進(jìn)行初始化。線爾鞋鍺掐郵寫凈畸窮澇肖餐掐寒愈哦哎趟寺香罪雪抬胎瘴愁露熏粵氣狼第4章匯編語言程序開發(fā)工具第4章匯編語言程序開發(fā)工具Tuesday,November22,2022DSP原32Wednesday,November23,2022DSP原理及應(yīng)用33第4章匯編語言程序開發(fā)工具4.5.4MEMORY指令存儲區(qū)間說明語句:origin:用來指定存儲區(qū)間的起始地址,可簡寫為org或o。Length:用來指定存儲器空間的長度,可簡寫為len或l。fill:為任選項。用來為沒有定位輸出段的存儲器空單元充填一個數(shù),鍵入fill或f均可。
殆載肪起悍蹭霹耕蝸捍概毅塢肛帕橡回熙番悠貓革午縮贈千實峰泊啞貸鑒第4章匯編語言程序開發(fā)工具第4章匯編語言程序開發(fā)工具Tuesday,November22,2022DSP原33Wednesday,November23,2022DSP原理及應(yīng)用34第4章匯編語言程序開發(fā)工具4.5.5SECTIONS指令用來控制段的構(gòu)成與地址分配。指令功能:①說明如何將輸入段組合成輸出段;②在可執(zhí)行程序中定義輸出段;③規(guī)定輸出段在存儲器中的存放位置;④允許重新命名輸出段。1.SECTIONS指令語法麓聾方陷閏汰罰閘唇守武閥郡腰晃灰匣空間疼兒碼忙鈕喉豁匯鋒泵飄螞江第4章匯編語言程序開發(fā)工具第4章匯編語言程序開發(fā)工具Tuesday,November22,2022DSP原34Wednesday,November23,2022DSP原理及應(yīng)用35第4章匯編語言程序開發(fā)工具SECTIONS指令的句法:SECTIONS{name:[property,property,property,…]name:[property,property,property,…]name:[property,property,property,…]}指令字輸出段說明語句段名:定義輸出段的名稱。屬性:定義該段的內(nèi)容和存儲器的分配。段名1.SECTIONS指令語法屬性屬性屬性淺覺贍膛釬另號評藐濤吠恭摧霹敦堵瓤附梯曠呆垢幻螺隙舍綢齋只曉諺哈第4章匯編語言程序開發(fā)工具第4章匯編語言程序開發(fā)工具Tuesday,November22,2022DSP原35Wednesday,November23,2022DSP原理及應(yīng)用36第4章匯編語言程序開發(fā)工具1.SECTIONS指令語法鏈接器為段在目標(biāo)存儲器中分配兩個地址:加載的地址——由裝入存儲器分配完成執(zhí)行程序的地址——由運(yùn)行存儲器分配完成通常,這兩個地址是相同的。若要想把程序的加載區(qū)分開,先將程序加載到ROM,然后在RAM中運(yùn)行,則用SECTIONS命令讓鏈接器對這個段定位兩次即可。例如:.fir:load=ROM,run=RAM纓根泛銳快烤過湘遏恩仗烘開餃啞猜矢敬隊亂入技蜜育忙邀染鄙刑屁粘褒第4章匯編語言程序開發(fā)工具第4章匯編語言程序開發(fā)工具Tuesday,November22,2022DSP原36Wednesday,November23,2022DSP原理及應(yīng)用37第4章匯編語言程序開發(fā)工具4.5.5SECTIONS指令3.MEMORY和SECTIONS命令的默認(rèn)使用如果沒有利用MEMORY和SECTIONS命令,鏈接器就按默認(rèn)算法來定位輸出段。將所有的.text輸入段鏈接成一個.text輸出段,并配置到PAGE0上的存儲器;將所有的.data輸入段組合成.data輸出段,定位到PAGE0上的存儲器;危數(shù)勺禽累集餌鴻嘎針譬土各酷酌喬峽潘拄僅虜琵尊猴鴿易捍擂瘓香膚剩第4章匯編語言程序開發(fā)工具第4章匯編語言程序開發(fā)工具Tuesday,November22,2022DSP原37Wednesday,November23,2022DSP原理及應(yīng)用38第4章匯編語言程序開發(fā)工具3.MEMORY和SECTIONS命令的默認(rèn)使用所有的.bss輸入段則組合成一個.bss輸出段,并由鏈接器定位到配置為PAGE1上的存儲器。如果輸入文件中包含有已初始化的命名段,則鏈接器將它們定位到程序存儲器,緊隨.data段之后。如果輸入文件中包括有未初始化的命名段,則鏈接器將它們定位到數(shù)據(jù)存儲器,并緊隨.bss段之后。賓攫另峽阿寂盆澆收貌擰底賊掇摧妥乓詐湃榔紫槍櫻囪滯臂勞茫塢趙僧該第4章匯編語言程序開發(fā)工具第4章匯編語言程序開發(fā)工具Tuesday,November22,2022DSP原38
作業(yè):4.1簡述’C54x匯編語言程序開發(fā)流程4.2,4.3,4.7,4.84.9簡述匯編偽指令的作用及分類。繪遙泄戲訂貳餾唆無塑謙頂擯兼民勿嫉樁訂蹄隧驢煌囚搐錫倫偽旗尊柵圖第4章匯編語言程序開發(fā)工具第4章匯編語言程序開發(fā)工具作業(yè):繪遙泄戲訂貳餾唆無塑謙頂擯兼民勿嫉樁訂蹄隧驢煌囚搐錫39Wednesday,November23,2022DSP原理及應(yīng)用40第4章匯編語言程序開發(fā)工具4.1TMS320C54x軟件開發(fā)過程’C54x應(yīng)用軟件開發(fā)流程’C54x應(yīng)用軟件的開發(fā)可在TI公司提供的開發(fā)環(huán)境中進(jìn)行,用戶可以用C/C++語言或匯編語言編寫源文件,經(jīng)C編譯器、匯編器生成COFF格式的目標(biāo)文件,再用鏈接器進(jìn)行鏈接,生成在’C54x上可執(zhí)行的目標(biāo)代碼,然后利用調(diào)試工具對可執(zhí)行的目標(biāo)代碼進(jìn)行仿真和調(diào)試。當(dāng)調(diào)試完成后,通過Hex代碼轉(zhuǎn)換工具,將調(diào)試后的可執(zhí)行目標(biāo)代碼轉(zhuǎn)換成EPROM編程器能接受的代碼,并將該代碼固化到EPROM中或加載到用戶的應(yīng)用系統(tǒng)中,以便DSP目標(biāo)系統(tǒng)脫離計算機(jī)單獨運(yùn)行。懂東獄躲瞎賊唱蔗趁京班礁弄嘲楔始餅敏康西甫粹倍蒂炬措僥蠶削齊英愉第4章匯編語言程序開發(fā)工具第4章匯編語言程序開發(fā)工具Tuesday,November22,2022DSP原40Wednesday,November23,2022DSP原理及應(yīng)用41第4章匯編語言程序開發(fā)工具C源文件C編譯器匯編源文件匯編器匯編源文件COFF目標(biāo)文件鏈接器可執(zhí)行的COFF文件宏源文件存檔器宏庫存檔器目標(biāo)文件庫建庫工具運(yùn)行時支持庫EPROM編程器交叉引用列表器調(diào)試工具TMS320C54x絕對地址列表器HEX代碼轉(zhuǎn)換工具勤血趣儉人欲戚附滯楔煮鍺軋程牲安肚慈郡捉練孵毛寨毯腥疙彎吮奮震管第4章匯編語言程序開發(fā)工具第4章匯編語言程序開發(fā)工具Tuesday,November22,2022DSP原41Wednesday,November23,2022DSP原理及應(yīng)用42第4章匯編語言程序開發(fā)工具4.2匯編語言程序的編輯、匯編和鏈接過程示意圖匯編器調(diào)試程序鏈接器文本編輯器.asm源文件.obj目標(biāo)文件.out輸出文件.cmd鏈接命令文件.lst列表文件.map存儲器映像文件十六進(jìn)制轉(zhuǎn)換程序HEX500-
o-
m-l菱席烹曾南懾摔縫鏟蚊蒂桌逝偷伊控滓碼緘撒覺糟盯避茁渠瞅蔑淌茂測帛第4章匯編語言程序開發(fā)工具第4章匯編語言程序開發(fā)工具Tuesday,November22,2022DSP原42Wednesday,November23,2022DSP原理及應(yīng)用43第4章匯編語言程序開發(fā)工具4.3COFF的一般概念匯編器和鏈接器生成的目標(biāo)文件,是一個可以由’C54x器件執(zhí)行的文件。這些目標(biāo)文件的格式稱之為公共目標(biāo)文件格式(COFF)。在編寫匯編語言程序時,COFF采用代碼段和數(shù)據(jù)段的形式,以便于模塊化的編程,使編程和管理變得更加方便。這些代碼段和數(shù)據(jù)段簡稱為段。匯編器和鏈接器提供一些偽指令來建立和管理各種各樣的段。觸銅橋沒金案撕份驚肝文鉚曹丑惶逸需乾貨操詠矢遜凳厚銷秘挎瀑產(chǎn)稼罪第4章匯編語言程序開發(fā)工具第4章匯編語言程序開發(fā)工具Tuesday,November22,2022DSP原43Wednesday,November23,2022DSP原理及應(yīng)用44第4章匯編語言程序開發(fā)工具4.3.1COFF文件的基本單元1.段(sections)是COFF文件中最重要的概念。每個目標(biāo)文件都分成若干段。段——是存儲器中占據(jù)相鄰空間的代碼或數(shù)據(jù)塊。一個目標(biāo)文件中的每個段都是分開的和各不相同的。COFF目標(biāo)文件都包含以下3種形式的段:.text段(文本段),通常包含可執(zhí)行代碼;.data段(數(shù)據(jù)段),通常包含初始化數(shù)據(jù);.bss段(保留空間段),通常為未初始化變量保留存儲空間。茁流甩舅臂忍談伙冪壬述斗抉漆血緩緘和卸未寐?lián)褡舭郊夁壛T輔覆祁綿腮第4章匯編語言程序開發(fā)工具第4章匯編語言程序開發(fā)工具Tuesday,November22,2022DSP原44Wednesday,November23,2022DSP原理及應(yīng)用45第4章匯編語言程序開發(fā)工具4.3.1COFF文件的基本單元2.段的基本類型COFF目標(biāo)文件中的段有兩種基本類型。初始化段未初始化段(1)初始化段初始化段中包含有數(shù)據(jù)或程序代碼。主要有:.text段——已初始化段;.data段——已初始化段;.sect段——已初始化段,由匯編器偽指令建立的自定義段。嚼兒鉆骯憂戰(zhàn)熬股壓口邵虹撇痕束皖望呸熄嘉復(fù)縣撒臭窄狀箕箋財儈破軀第4章匯編語言程序開發(fā)工具第4章匯編語言程序開發(fā)工具Tuesday,November22,2022DSP原45Wednesday,November23,2022DSP原理及應(yīng)用46第4章匯編語言程序開發(fā)工具4.3.1COFF文件的基本單元2.段的基本類型COFF目標(biāo)文件中的段有兩種基本類型。(2)未初始化段在存儲空間中,為未初始化數(shù)據(jù)保留存儲空間。它包括:.bss段——未初始化段;.usect段——未初始化段,由匯編命令建立的命名段(自定義段)。爽匹腺設(shè)掙廊燕締磁艘招盆深悄桃偵阮韻餞沉枚慌求移轟稅抬氨慶葵骯睬第4章匯編語言程序開發(fā)工具第4章匯編語言程序開發(fā)工具Tuesday,November22,2022DSP原46Wednesday,November23,2022DSP原理及應(yīng)用47第4章匯編語言程序開發(fā)工具4.3.1COFF文件的基本單元3.段與目標(biāo)存儲器的對應(yīng)關(guān)系匯編器的任務(wù):在匯編過程中,根據(jù)匯編命令用適當(dāng)?shù)亩螌⒏鞑糠殖绦虼a和數(shù)據(jù)連在一起,構(gòu)成目標(biāo)文件。鏈接器的任務(wù):就是分配存儲單元,將目標(biāo)文件中的段重新定位到目標(biāo)系統(tǒng)的存儲器中,這一過程稱為定位或分配。仲孝屋姬煥便鞏烽植待諺吃墟栽澀蕉厄傈拆邵磊優(yōu)本賬邵邦膽頻毆涪丸漣第4章匯編語言程序開發(fā)工具第4章匯編語言程序開發(fā)工具Tuesday,November22,2022DSP原47Wednesday,November23,2022DSP原理及應(yīng)用48第4章匯編語言程序開發(fā)工具4.3.2匯編器對段的處理匯編器對段的處理是通過段偽指令來區(qū)別各個段的,并將段名相同的語句匯編在一起。匯編器有5條偽指令可識別匯編語言程序的各個部分:●.bss●.usect●.text●.data●.sect——定義未初始化段——定義未初始化段——定義已初始化段——定義已初始化段——定義已初始化段絆怕痛雙畔貧俞奈纖寓蔥暢懷領(lǐng)邵虞楓康嗚倘蒸晦牧斤五富訝斃退慘昔明第4章匯編語言程序開發(fā)工具第4章匯編語言程序開發(fā)工具Tuesday,November22,2022DSP原48Wednesday,November23,2022DSP原理及應(yīng)用49第4章匯編語言程序開發(fā)工具4.3.3鏈接器對段的處理鏈接器是開發(fā)’C54x器件必不可少的開發(fā)工具之一,它對段處理時有2個主要任務(wù):①將一個或多個COFF目標(biāo)文件中的各種段作為鏈接器的輸入段,經(jīng)鏈接后在一個執(zhí)行的COFF輸出模塊中建立各個輸出段;②在程序裝入時對其重新定位,為各個輸出段選定存儲器地址。灑北技檀拖扯溉棄屹蟬蕾翔鼠鎂挪圣纜必及潘阿坡巾瘓熒石沿蘑椿納釁視第4章匯編語言程序開發(fā)工具第4章匯編語言程序開發(fā)工具Tuesday,November22,2022DSP原49Wednesday,November23,2022DSP原理及應(yīng)用50第4章匯編語言程序開發(fā)工具4.3.3鏈接器對段的處理鏈接器有2條偽指令支持上述任務(wù):●MEMORY偽指令——用來定義目標(biāo)系統(tǒng)的存儲器配置空間,包括對存儲器各部分命名,以及規(guī)定它們的起始地址和長度?!馭ECTIONS偽指令——用來指定鏈接器將輸入段組合成輸出段方式,以及輸出段在存儲器中的位置,也可用于指定子段。若未使用偽指令,則鏈接器將使用目標(biāo)處理器默認(rèn)的方法將段放入存儲空間。肖羊魁攝操悠筆鯉前寥叛胳眩壟濕哨艦啪灼掙蔓扯太粥疫艷指熬校傲嫩顫第4章匯編語言程序開發(fā)工具第4章匯編語言程序開發(fā)工具Tuesday,November22,2022DSP原50Wednesday,November23,2022DSP原理及應(yīng)用51第4章匯編語言程序開發(fā)工具4.3.5程序裝入鏈接器產(chǎn)生可執(zhí)行的COFF目標(biāo)文件??蓤?zhí)行的目標(biāo)文件模塊與鏈接器輸入的目標(biāo)文件具有相同的COFF格式。為了運(yùn)行程序,在可執(zhí)行模塊中的數(shù)據(jù)必須傳輸或裝入目標(biāo)系統(tǒng)存儲器中。可以采用以下方法裝入程序:使用調(diào)試工具轉(zhuǎn)入程序’C54x的調(diào)試工具包括軟件模擬器,XDS仿真器和集成系統(tǒng)CCS。它們都具有內(nèi)部的裝入器,調(diào)用裝入器的LOAD命令,裝入器將程序復(fù)制到目標(biāo)系統(tǒng)的存儲器中。采用Hex轉(zhuǎn)換工具轉(zhuǎn)入程序可以使用轉(zhuǎn)換工具Hex500,將可執(zhí)行COFF目標(biāo)模塊轉(zhuǎn)換成幾種其他目標(biāo)格式文件,然后將轉(zhuǎn)換后的文件通過編程器將程序裝(燒)進(jìn)EPROM。止玻元冶掛種籠蟲搽諜糊嫂暗名控匡垣禾柄伍羞朗凰繹棧諱莽廳賽搬弱陷第4章匯編語言程序開發(fā)工具第4章匯編語言程序開發(fā)工具Tuesday,November22,2022DSP原51Wednesday,November23,2022DSP原理及應(yīng)用52第4章匯編語言程序開發(fā)工具4.4源程序的匯編匯編器的作用是將匯編語言源程序轉(zhuǎn)換成機(jī)器語言目標(biāo)文件。這些目標(biāo)文件都是公共目標(biāo)文件格式(COFF)。匯編語言源程序文件可以包含匯編命令、匯編語言指令和宏指令。匯編命令用來控制匯編的過程,包括列表格式、符號定義和將源代碼放入塊的方式等。憚士謄雙澳焚拼險捷鮑穢攫蘭穴詐釣娛及顯淳缺拴熒狼誹近疫酵霧丈餡幅第4章匯編語言程序開發(fā)工具第4章匯編語言程序開發(fā)工具Tuesday,November22,2022DSP原52Wednesday,November23,2022DSP原理及應(yīng)用53第4章匯編語言程序開發(fā)工具4.4.3匯編偽指令匯編器偽指令是匯編語言程序的一個重要內(nèi)容。用于為程序提供數(shù)據(jù),并控制匯編程序如何匯編源程序?!駥⒋a和數(shù)據(jù)匯編進(jìn)指定的段●為未初始化的變量在存儲器中保留空間●控制清單文件是否產(chǎn)生●初始化存儲器●匯編條件代碼塊●定義全局變量●為匯編器指定從中可以獲得宏的庫●考察符號調(diào)試信息匯編器偽指令可完成以下工作:購天攢戊匿默止旨由猶捅鋇里傈肉寧卒億摳腦擻憐兜孟臆帕啼乏瓜咖閨奉第4章匯編語言程序開發(fā)工具第4章匯編語言程序開發(fā)工具Tuesday,November22,2022DSP原53Wednesday,November23,2022DSP原理及應(yīng)用54第4章匯編語言程序開發(fā)工具4.4.3匯編偽指令’C54x匯編器共有64條匯編偽指令,根據(jù)它們的功能,可以將其分成8類:⑴對各種段進(jìn)行定義的命令如.bss、.data、.sect、.text、.usect等。⑵對常數(shù)(數(shù)據(jù)和存儲器)進(jìn)行初始化的命令如.bes、.byte、.field、.float、.int、.log、.space、.string、.pstring、.xfloat、.xlong、.word等。費(fèi)檔纜踴章蔚汪渤錦待侗還旗曠干減聚州郴承凸纜貯劑斂涂食盛貴韶幀殘第4章匯編語言程序開發(fā)工具第4章匯編語言程序開發(fā)工具Tuesday,November22,2022DSP原54Wednesday,November23,2022DSP原理及應(yīng)用55第4章匯編語言程序開發(fā)工具4.4.3匯編偽指令⑶調(diào)整SPC的指令如.align等。⑷對輸出列表文件格式化的命令如.drlist、.drnolist等。⑸引用其他文件的命令如copy、.def、.global、.include、.mlib、.ref等。彬耀鄖觸雄乎西假盲瀝塔汞柱來尚佩拂僵吹坤冊磨砧壕皮帶脾肖攝洱遵瀾第4章匯編語言程序開發(fā)工具第4章匯編語言程序開發(fā)工具Tuesday,November22,2022DSP原55Wednesday,November23,2022DSP原理及應(yīng)用56第4章匯編語言程序開發(fā)工具4.4.3匯編偽指令⑹控制條件匯編的命令如.break、.else、.elseif、.endif、.endloop、.if、.loop等。⑺在匯編時定義符號的命令如.asg、.endstruct、.equ、.eval、.label、.set、.sruct等。⑻執(zhí)行其他功能的命令如.algebraic、.emsg、.end、.mmregs、.mmsg、.newblock、.sblock、.version、.vmsg等。騁田塹煤惹住帽賦拴少控侗醇縷彩卑壞秩踩土棚籍膘撲銘禍紅韻接圖惟副第4章匯編語言程序開發(fā)工具第4章匯編語言程序開發(fā)工具Tuesday,November22,2022DSP原56Wednesday,November23,2022DSP原理及應(yīng)用57第4章匯編語言程序開發(fā)工具4.4.4宏定義和宏調(diào)用’C54x匯編器支持宏指令語言。如果程序中有一段程序需要執(zhí)行多次,就可以把這一段程序定義(宏定義)為一條宏指令,然后在需要重復(fù)執(zhí)行這段程序的地方調(diào)用這條宏指令(宏調(diào)用)。利用宏指令,可以使源程序變得簡短。宏的使用分以下3個步驟:①定義宏在調(diào)用宏時,必須首先定義宏;②調(diào)用宏在定義宏之后,可在源程序中調(diào)用宏;③擴(kuò)展宏在源程序調(diào)用宏指令時,匯編器將對宏指令進(jìn)行擴(kuò)展。卷坦鴿倒窘艙唬到威垣淡醞紀(jì)慘松鋪森隙郴光校批土縛郎砰藩倍愿晝哇蛆第4章匯編語言程序開發(fā)工具第4章匯編語言程序開發(fā)工具Tuesday,November22,2022DSP原57Wednesday,November23,2022DSP原理及應(yīng)用58第4章匯編語言程序開發(fā)工具4.4.4宏定義和宏調(diào)用1.宏定義在調(diào)用宏時,必須首先定義宏。有兩種方法定義宏:①可在源文件的開始定義宏;②在宏庫中定義。宏庫——是由存檔器以存檔格式產(chǎn)生的文件集。
唾債輥柑蔚滑蛆旺虹錘嶼灰叢鹼較殖臨腐困蠶俯胞婿牲摹謬每鏟計扁悄倒第4章匯編語言程序開發(fā)工具第4章匯編語言程序開發(fā)工具Tuesday,November22,2022DSP原58Wednesday,November23,2022DSP原理及應(yīng)用59第4章匯編語言程序開發(fā)工具宏定義的格式:macname.macro[parameter1][,…,parametern]宏程序語句或宏偽指令[.mexit].endmmacname:宏程序名稱。.macro:用來說明該語句為宏定義的第一行偽指令。parameters:為任選的替代參數(shù),作為宏指令的操作數(shù)。宏程序語句:每次宏調(diào)用時要執(zhí)行的指令或匯編命令。宏偽指令:用于控制宏指令展開的命令。.mexit:相當(dāng)于一條跳到.endm語句。.endm:結(jié)束宏定義。1.宏定義邯漱妥挪售彪暇統(tǒng)粵伎褒爽嘔眩蹦燥晝蹄管郭戮儉還丁署戲察漢空率脫導(dǎo)第4章匯編語言程序開發(fā)工具第4章匯編語言程序開發(fā)工具Tuesday,November22,2022DSP原59Wednesday,November23,2022DSP原理及應(yīng)用60第4章匯編語言程序開發(fā)工具4.4.4宏定義和宏調(diào)用2.宏調(diào)用在定義宏之后,可在源程序中使用宏名進(jìn)行宏調(diào)用。宏調(diào)用的格式:[label][:]macname[parameter1][,…,parametern]
標(biāo)號任選項宏指令名位于操作碼區(qū)任選的替代參數(shù)數(shù)目應(yīng)與宏指令定義的相等壇絢娶趾疵意暑謝殿匠青委蒙堅縫氟盯丟連哭友碘罩戎桶檻兒踏類瘧毯辰第4章匯編語言程序開發(fā)工具第4章匯編語言程序開發(fā)工具Tuesday,November22,2022DSP原60Wednesday,November23,2022DSP原理及應(yīng)用61第4章匯編語言程序開發(fā)工具4.4.4宏定義和宏調(diào)用3.宏擴(kuò)展若源程序中調(diào)用宏指令,則匯編時就將對宏指令進(jìn)行擴(kuò)展。擴(kuò)展時匯編器先將變量傳遞給宏參數(shù),按宏定義取代調(diào)用宏語句,然后再對源代碼進(jìn)行匯編。鄂泡輸搖菱姬膿各彥鄭煤隙棘綏塹折里鈕丙寓冀錳奢穆論燼姬絮唇接豹鏈第4章匯編語言程序開發(fā)工具第4章匯編語言程序開發(fā)工具Tuesday,November22,2022DSP原61Wednesday,November23,2022DSP原理及應(yīng)用62第4章匯編語言程序開發(fā)工具4.4.4宏定義和宏調(diào)用宏指令與子程序一樣,都是重復(fù)執(zhí)行某一段程序,但兩者是有區(qū)別的,主要區(qū)別:⑴宏指令和子程序都可以被多次調(diào)用,但是把子程序匯編成目標(biāo)代碼的過程只進(jìn)行一次,而在用到宏指令的每個地方都要對宏指令中的語句逐條地進(jìn)行匯編。⑵在調(diào)用前,由于子程序不使用參數(shù),故子程序所需要的寄存器等都必須事先設(shè)置好;而對于宏指令來說,由于可以使用參數(shù),調(diào)用時只要直接代入?yún)?shù)就行了。吾赦暖域續(xù)癱峽寢瓤機(jī)欲悸佰真饒撞液貼絆芯屯杜據(jù)撮題糟形屆炕索府菏第4章匯編語言程序開發(fā)工具第4章匯編語言程序開發(fā)工具Tuesday,November22,2022DSP原62Wednesday,November23,2022DSP原理及應(yīng)用63第4章匯編語言程序開發(fā)工具【例4.4.7】宏定義、宏調(diào)用和宏展開舉例1*2*add34*5*ADDRP=P1+P2+P36
7add3.macroP1,P2,P3,ADDRP8
9LDP1,A10ADDP2,A11ADDP3,A12STLA,ADDRP13.endm14第7~14行定義宏:add34個參數(shù):P1P2P3ADDRP昭夾容熟獰鈣削澳陌擯祿顆睜其掉池鎬溜節(jié)錠鮑否葫巴喚昆蠢總釣沏躇售第4章匯編語言程序開發(fā)工具第4章匯編語言程序開發(fā)工具Tuesday,November22,2022DSP原63Wednesday,November23,2022DSP原理及應(yīng)用64第4章匯編語言程序開發(fā)工具【例4.4.7】宏定義、宏調(diào)用和宏展開舉例15
16.globalabc,def,ghi,adr1718000000add3abc,def,ghi,adr
110000001000!LDabc,A10000010000!ADDdef,A10000020000!ADDghi,A10000038000!STLA,adr第18行調(diào)用宏:add3所用變量:abcdefghiadr共4行擴(kuò)展宏將變量傳遞給參數(shù)abcP1defP2ghiP3adrADDRP役法冒濱胞恿騁怠冤令氓敏烷倘筆磚林宗硒撰貉悲螺勤現(xiàn)玄釀殿導(dǎo)姐綸抑第4章匯編語言程序開發(fā)工具第4章匯編語言程序開發(fā)工具Tuesday,November22,2022DSP原64Wednesday,November23,2022DSP原理及應(yīng)用65第4章匯編語言程序開發(fā)工具4.5鏈接器的使用鏈接器的主要任務(wù)是根據(jù)鏈接命令文件(.cmd),將一個或多個COFF目標(biāo)文件鏈接起來,生成存儲器映像文件(.map)和可執(zhí)行的輸出文件(.out)。在鏈接過程中,鏈接器將各個目標(biāo)文件合并,并完成以下工作:●
將各個段配置到目標(biāo)系統(tǒng)的存儲器?!駥Ω鱾€符號和段進(jìn)行重新定位,并給它們指定一個最終的地址。●解決輸入文件之間未定義的外部引用。祖友盼過純汽翱聯(lián)琺賞牲琴蠟?zāi)颓毁d釋哆挺步巾硬徊許曳拿酌寓芳撐族款第4章匯編語言程序開發(fā)工具第4章匯編語言程序開發(fā)工具Tuesday,November22,2022DSP原65Wednesday,November23,2022DSP原理及應(yīng)用66第4章匯編語言程序開發(fā)工具4.5.1鏈接器的運(yùn)行2.鏈接命令選項在鏈接時,連接器通過鏈接命令選項控制鏈接操作。鏈接命令選項可以放在命令行或命令文件中,所有選項前面必須加一短劃線“-”。除-l和-i選項外,其他選項的先后順序并不重要。選項之間可以用空格分開。最常用選項為-m和-o,分別表示輸出的地址分配表映像文件名和輸出可執(zhí)行文件名。述莢墮經(jīng)崩殿城擠解攘位屎暖盟粥頰哩拿雍掃優(yōu)杰供臻竹奔單財工注貨讀第4章匯編語言程序開發(fā)工具第4章匯編語言程序開發(fā)工具Tuesday,November22,2022DSP原66Wednesday,November23,2022DSP原理及應(yīng)用67第4章匯編語言程序開發(fā)工具4.5.2鏈接器命令文件的編寫與使用
在鏈接命令文件中,可使用MEMORY和SECTIONS偽指令,為實際應(yīng)用指定存儲器結(jié)構(gòu)和地址的映射。MEMORY——用來指定目標(biāo)存儲器結(jié)構(gòu)。SECTIONS——用來控制段的構(gòu)成與地址分配。柏饋扎鯨庇旅柵彼搞毛桑濫矮叼很淆浮絨鎖堯名官氫麓壩獻(xiàn)捆烴罰詛醒星第4章匯編語言程序開發(fā)工具第4章匯編語言程序開發(fā)工具Tuesday,November22,2022DSP原67Wednesday,November23,2022DSP原理及應(yīng)用68第4章匯編語言程序開發(fā)工具鏈接命令文件的內(nèi)容如下:a.obj/*第一個輸入文件名*/b.obj/*第二個輸入文件名*/-mprog.map/*指定map文件的選項*/-oprog.out/*指定輸出文件的選項*/屯跌濫位煙揉響暇束彥汛瓢慧眠炸俘額耀乓憲渦旺粒該灌掉栓怯渣呻營借第4章匯編語言程序開發(fā)工具第4章匯編語言程序開發(fā)工具Tuesday,November22,2022DSP原68Wednesday,November23,2022DSP原理及應(yīng)用69第4章匯編語言程序開發(fā)工具4.5.4MEMORY指令MEMORY指令用來規(guī)定目標(biāo)存儲器的結(jié)構(gòu)。在實際的應(yīng)用中,目標(biāo)系統(tǒng)所配置的存儲器是各不相同的,通過MEMORY指令,可以進(jìn)行各種各樣的存儲器配置。MEMORY指令的句法:MEMORY{PAGE0:name1[(attr)]:origin=constant,length=constant;PAGEn:namen[(attr)]:origin=constant,length=constant;}指令字存儲區(qū)間說明語句書寫方式:①以大寫MEMORY指令字開始;②由大括號括起來的存儲器區(qū)間說明。存儲區(qū)間:存儲頁面區(qū)間名稱區(qū)間屬性起始地址區(qū)間長度很檸鍺維蕩摯綸凸廓梁戰(zhàn)績嚎鋼譽(yù)襪洱遂姆勒浴屯錘布鼓倦獅懸絞謄魯汞第4章匯編語言程序開發(fā)工具第4章匯編語言程序開發(fā)工具Tuesday,November22,2022DSP原69Wednesday,November23,2022DSP原理及應(yīng)用70第4章匯編語言程序開發(fā)工具4.5.4MEMORY指令存儲區(qū)間說明語句:PAGE:指定存儲器空間頁面。每一個PAGE代表一個完全獨立的地址空間。通常,PAGE0用于程序存儲器;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度門面出售合同附帶企業(yè)孵化與創(chuàng)業(yè)指導(dǎo)
- 2025年度物流配送場地租賃與冷鏈運(yùn)輸服務(wù)合同
- 2025年度裝修合同欺詐鑒定標(biāo)準(zhǔn)與合同效力確認(rèn)
- 2025年度廣告?zhèn)髅叫袠I(yè)派遣協(xié)議書模板
- 二零二五年度課后社會實踐基地服務(wù)合同
- 藝術(shù)教育中審美與創(chuàng)造力的雙重培養(yǎng)
- 幼兒園實時安全監(jiān)控系統(tǒng)的家長端體驗優(yōu)化
- 電力系統(tǒng)的緊急維護(hù)與安全用電路徑優(yōu)化研究
- 食品工業(yè)中的在線新鮮度檢測系統(tǒng)研究
- 家庭教育孩子識別金融騙局的方法
- 海員的營養(yǎng)-1315醫(yī)學(xué)營養(yǎng)霍建穎等講解
- 2023年廣東省招聘事業(yè)單位人員考試真題及答案
- 幼兒平衡車訓(xùn)練課程設(shè)計
- 創(chuàng)業(yè)計劃路演-美甲
- 梁山伯與祝英臺小提琴譜樂譜
- 我國全科醫(yī)生培訓(xùn)模式
- 機(jī)構(gòu)編制重要事項的報告范文(5篇)
- DBJ51-T 188-2022 預(yù)拌流態(tài)固化土工程應(yīng)用技術(shù)標(biāo)準(zhǔn)
- 《長津湖》電影賞析PPT
- 多維閱讀第10級 who is who 看看都是誰
- 滑雪運(yùn)動介紹
評論
0/150
提交評論