單片機(jī)c語言與匯編語言的混合編程

單片機(jī)c語言與匯編語言的混合編程

ID:33590660

大?。?52.50 KB

頁數(shù):4頁

時(shí)間:2019-02-27

單片機(jī)c語言與匯編語言的混合編程_第1頁
單片機(jī)c語言與匯編語言的混合編程_第2頁
單片機(jī)c語言與匯編語言的混合編程_第3頁
單片機(jī)c語言與匯編語言的混合編程_第4頁
資源描述:

《單片機(jī)c語言與匯編語言的混合編程》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。

1、萬方數(shù)據(jù)科技信息oIT技術(shù)論壇oSCmNCE&TEC刪OLOGY唧0蹦ATl0N2008年第6期單片機(jī)C語言與匯編語言的混合編程陳百良(中山火炬職業(yè)技術(shù)學(xué)院職高部廣東中山528437)【摘要】匯編語言的機(jī)器代碼生成效率高、執(zhí)行速度快,但可讀性卻并不強(qiáng);而C語言的可讀性和可移植性卻遠(yuǎn)遠(yuǎn)超過匯編語言,用C語言開發(fā)中大型軟件的周期要比用匯編語言短很多,但C語言很難解決高時(shí)效性等代碼編寫的問題,此時(shí)便可利用匯編語言來實(shí)現(xiàn)。本文便是針對(duì)這一問題,詳細(xì)介紹了單片機(jī)C語言與匯編語言混舍編程的實(shí)現(xiàn)方法?!娟P(guān)鍵詞】

2、C語言:匯編語言;混合編程在單片機(jī)C語言與匯編語言的混合編程過程中.C語言調(diào)用匯編代碼常有兩種方法:一是直接在C語言程序中嵌入?yún)R編語句:二是C語言調(diào)用匯編語言子程序。把匯編語言程序加入到C語言程序中.必須使匯編程序和C程序一樣具有明確的邊界、參數(shù)、返回值和局部變量,必須為匯編語言編寫的程序段指定段名并進(jìn)行定義。如果要在它們之問傳遞參數(shù),則必須保證匯編程序用來傳遞參數(shù)的存儲(chǔ)區(qū)和C函數(shù)使用的存儲(chǔ)區(qū)是一樣的。1.C語言內(nèi)嵌匯編代碼1.1內(nèi)嵌匯編代碼的格式在C語言程序中嵌入?yún)R編代碼。可以通過預(yù)編譯指令“∞

3、m”來實(shí)現(xiàn)。其格式如下::C代碼卸陽舭a鵲m:匯編代碼卻ra殍Mend∞m:C代碼1.2Keil軟件中含內(nèi)嵌擴(kuò)編代碼的C文件的編譯與連接1.2.1工程相關(guān)選項(xiàng)的設(shè)置在喇ect窗口中包含匯編代碼的C文件上點(diǎn)擊右鍵,選擇“0pti∞sfor?”,然后在彈出的窗口中選中“GenerateAssemblerSRCFile”和“A8∞mbleSRCFile”兩項(xiàng)。選中這兩項(xiàng)編譯器才會(huì)將“∞m”與“end鵲m”中的代碼復(fù)制到輸出的SRC文件中.然后才會(huì)將這些代碼放入它所產(chǎn)生的目標(biāo)文件中。在編譯過程中產(chǎn)生SRC

4、文件為C文件對(duì)應(yīng)的匯編文件,我們還可以對(duì)sRC文件進(jìn)行仔細(xì)的分析來了解其函數(shù)封裝規(guī)則。1.2.2加入庫(kù)文件根據(jù)所選擇的編譯模式,在工程中添加相應(yīng)的庫(kù)文件(如Small模式時(shí)。庫(kù)文件為C5lS.“b)。1.2.3編譯與連接選擇“Projec曲uild1k鏟t”僅對(duì)修改過的文件進(jìn)行編譯與連接處理,或選擇“Pmject,BuildallTar8etFiles”對(duì)所有源程序全部進(jìn)行編譯與連接,生成目標(biāo)代碼。1.3內(nèi)嵌匯編代碼的C文件實(shí)例}幸木奉宰事幸車幸宰奉}霉ex咖plel.c幸········}···

5、·★·橢ncludevoid咖in(void){P2=1:#p陽孕na髓mMOVR7搿lODEI由:MOVR6.#20DELl:DJNZR6.DELlDJNZR7.DELO。卸ml伊mendasmP2=o:le枷plel.c經(jīng)過編譯與連接后可得到下面的咖pkl.sRc文件:;沁xmplel.SRCgeneratedfmm:ex咖plel.c??(寄存器描述省略)?PR?main?EXAMPLElSEGMENTCODEEx‘nlNCODE(?C—貿(mào)ARTUP)PUBUC啪in;撕n

6、clude;voidmain(void)RSEG?PR?main?EXAMPLElmain::SOURCEUNE撐2;{:SOURCELINE#3;P2=l;MOV:SOURCEUNE#4P2.椰1H;#p糟gmaasm:MOVR7_#10MOVR7.#10:DEL0:MOVR6.#20DEID:MOVR6.#20:DELl:DJNZR6,DELlDELl:DJNZR6.DELl;DJNZR7,DEL0DJNZR7,DEL0;卸mgmaend∞m;P2=0;:SOURCELIN

7、E撐llCLRAMOVP2A;l:SOURCEUNE撐12RET:ENDOFmainEND從上述SRC文件中可以看出。在“∞m”與“end∞m”中的代碼被復(fù)制到輸出的SRC文件中2.C語言調(diào)用匯編函數(shù)2.1C語言調(diào)用不傳遞參數(shù)的匯編函數(shù)2.1.1匯編文件的格式在匯編語言中。要求用匯編語言編寫的函數(shù)和用C編譯器編譯出來的代碼風(fēng)格一樣,這樣可以讓開發(fā)的程序具有很好的可讀性和可維護(hù)性。另外也很容易和C編寫的函數(shù)進(jìn)行連接。首先在程序存儲(chǔ)區(qū)中定義段,其次利用PUBuC聲明函數(shù)為公共函數(shù),再用RSEG表示函數(shù)

8、可被連接器放置在任何地方,最后編寫匯編函數(shù)。其實(shí)例DELAY.幽m如下:·+·¨:·}···¨聿DELAY.鴿m······宰·}·}··}宰宰?PR?DELAYsEGMENTCODE:/,在程序存儲(chǔ)區(qū)中定義段PUBUCDELAY;,,聲明函數(shù)為公共函數(shù)RSEG?PR?DELAY:/,函數(shù)可被連接器放置在任何地方DEL氣Y:MOVR7.#lODELO:MOVR6.#20DELl:DJNZR6,DELlDJNZR7。DEIJD萬方數(shù)據(jù)科技信息oIT技術(shù)論壇o20∞年第6期RE-rEN

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。