在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > C51與匯編語言混合編程之一

            C51與匯編語言混合編程之一

            作者: 時(shí)間:2016-11-09 來源:網(wǎng)絡(luò) 收藏
            1、函數(shù)內(nèi)部混合編程

            若想在C語言函數(shù)內(nèi)部使用匯編語言,應(yīng)使用以下Cx51編譯器控制命令:

            本文引用地址:http://www.biyoush.com/article/201611/317684.htm

            #pragma asm

            ;;;Assembly code

            #pragma endasm

            功能作用:

            asm和endasm命令用于將其標(biāo)記的匯編程序合并到.SRC文件中。這個(gè)帶有asm和endasm塊標(biāo)記的源程序可看作是在線嵌入式匯編程序。從這點(diǎn)來說,此命令有些類似于#define命令。

            具體實(shí)現(xiàn):

            (1)編譯器設(shè)置及SRC文件的產(chǎn)生

            .SRC文件在命令行編譯模式下是使用SRC編譯器控制命令產(chǎn)生的,在IDE環(huán)境中可以為需要產(chǎn)生SRC文件的C源文件設(shè)置特定選項(xiàng):

            l 右鍵單擊Project Workspace下的文件標(biāo)簽

            l 選擇Options for file … 項(xiàng),打開Options – Properties 頁。

            l 選中Generate Assembler SRC file 項(xiàng)

            l 選中Assembler SRC file項(xiàng)

            (2)添加庫(kù)文件

            根據(jù)選擇的編譯模式,把相應(yīng)的庫(kù)文件添加到工程下面,如在”small”模式下,需將”keilc51libc51s.lib”文件加入工程中。在Keil安裝目錄下的C51LIB 目錄的LIB 文件如下:

            C51S.LIB - 沒有浮點(diǎn)運(yùn)算的 Small model
            C51C.LIB - 沒有浮點(diǎn)運(yùn)算的 Compact model
            C51L.LIB - 沒有浮點(diǎn)運(yùn)算的 Large model
            C51FPS.LIB - 帶浮點(diǎn)運(yùn)算的 Small model
            C51FPC.LIB - 帶浮點(diǎn)運(yùn)算的 Compact model
            C51FPL.LIB - 帶浮點(diǎn)運(yùn)算的 Large model

            若未添加此庫(kù)文件,則會(huì)提示” UNRESOLVED EXTERNAL SYMBOL ”警告。

            如上設(shè)置后,編譯,IDE會(huì)生成匯編源文件(.SRC)并由匯編器將此文件轉(zhuǎn)化成目標(biāo)文件(.OBJ)。

            注意事項(xiàng):

            (1) 此時(shí)在匯編語言中雖可以加標(biāo)簽,以執(zhí)行一些跳轉(zhuǎn)類指令,但要注意不要與編譯器產(chǎn)生的其他標(biāo)簽相同。

            (2) 在遵循了Cx51參數(shù)的調(diào)用規(guī)則后,如在向該函數(shù)傳遞一char數(shù)時(shí),編譯器會(huì)將其編譯成通過R7傳遞,此時(shí)在匯編語言若直接調(diào)用R7,會(huì)出現(xiàn)定義的變量(形參)未調(diào)用警告。

            2、函數(shù)外部混合編程

            具體實(shí)現(xiàn):

            若要將一完整的函數(shù)編寫為匯編語言,并可被其它函數(shù)調(diào)用,此時(shí)可以遵循如下過程:

            (1) 源文件的建立

            新建一C源文件如test.c,將其加入工程中,并寫出要實(shí)現(xiàn)函數(shù)的的啞函數(shù)(即寫出函數(shù)名及形參,不用給出具體實(shí)現(xiàn),但最好寫出簡(jiǎn)單調(diào)用形參的代碼,使編譯器不提示 ”定義的變量未被調(diào)用”的警告)。

            (2) 從上”具體過程”之(1)。

            (3) 從上”具體過程”之(2)。

            (4) 編譯文件,將test.c 從工程中移除,將生成的test.src文件改名,如test.a51。

            (5) 將test.a51加入工程, 并在其內(nèi)部書寫具體要實(shí)現(xiàn)的匯編代碼。

            (6) 重新編譯整體文件即可。

            注意事項(xiàng):

            (1) 調(diào)用前一定要在所調(diào)用的文件內(nèi)部聲明該函數(shù)的存在,寫法應(yīng)同匯編語言的C函數(shù)實(shí)現(xiàn)一樣,即test.c 中的函數(shù)名稱。



            關(guān)鍵詞: C51匯編語言混合編

            評(píng)論


            技術(shù)專區(qū)

            關(guān)閉