新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > c51中嵌套匯編的方法

        c51中嵌套匯編的方法

        作者: 時間:2016-11-18 來源:網絡 收藏
        怎么樣在c程序中使用匯編編程

        方法一:在每個匯編語句前加asm即可。如

        本文引用地址:http://www.104case.com/article/201611/315818.htm

        voidreset_data(void)

        {

        asmmovr0,#0dfh

        asmdo_resetdata:

        asmmov@r0,#00h

        asmdjnzr0,do_resetdata

        return;

        }

        方法二:把asm作為關鍵字后續匯編用大括號括起來即可。如下:

        voidreset_data(void)

        {

        asm

        {movr0,#0dfh

        do_resetdata:

        mov@r0,#00h

        djnzr0,do_resetdata

        }

        return;

        }

        keilc6.20c直接嵌入匯編的方法

        發表于2007-5-2418:23:17

        #ifdefASM

        unsignedlongshiftR1(registerunsignedlong);

        #else

        externunsignedlongshiftR1(registerunsignedlong);

        #endif

        //endofasm.h

        //

        #defineASM

        #include

        #include

        #pragmaOT(4,speed)

        unsignedlongshiftR1(registerunsignedlongx)

        {

        #pragmaasm

        clrc

        mova,r4

        rrca

        movr4,a

        mova,r5

        rrca

        movr5,a

        mova,r6

        rrca

        movr6,a

        mova,r7

        rrca

        movr7,a

        #pragmaendasm

        return(x);

        }

        //endofasm.c

        將此源文件加入要編譯的工程文件,

        將光標指向此文件,選擇右鍵菜單“optionforfileasm.c”,

        將屬性單“properties”中的“GenerateAssemblerSRCFile”“AssembleSRCFile”

        兩項設置成黑體的“√”將“LinkPublicOnly”的“√”去掉,再編譯即可。

        用此方法可以在c源代碼的任意位置用#pragmaasm和#pragmaendasm嵌入匯編語句。

        但要注意的是在直接使用形參時要小心,在不同的優化級別下產生的匯編代碼有所不同,

        可以察看對應的.lst文件看一看,得到正確的優化級別后,#pragmaOT(x,speed)鎖定

        優化級別(這里的值是0-9)。



        關鍵詞: c51嵌套匯

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 常熟市| 博野县| 大方县| 富源县| 徐汇区| 合江县| 辽阳市| 济源市| 崇明县| 毕节市| 盘锦市| 甘孜县| 秭归县| 吴忠市| 九江市| 巴南区| 黄大仙区| 灯塔市| 盱眙县| 昌图县| 永丰县| 莱阳市| 郴州市| 巴塘县| 富平县| 金昌市| 铜山县| 芦溪县| 乌拉特前旗| 澄江县| 丹棱县| 金湖县| 浑源县| 和硕县| 蓝山县| 武清区| 霞浦县| 镇安县| 永福县| 两当县| 青浦区|