新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 單片機C與匯編自由轉換

        單片機C與匯編自由轉換

        作者: 時間:2016-11-11 來源:網絡 收藏
        keil3現在流行一種怪毛病,就是安裝了keil后用不了,那么那里出了問題?
        用這樣的注冊機,要把keil軟件里的ID好考過來覆蓋上面的00000-000000,再生成注冊碼就能用了。

        ②在KILE軟件的菜單中,選擇Project-->Options for Target Target 1,-->Listing選擇Assembly code就能生產*.LST文件。在LST文件中就有生產的匯編代碼。如果便于直觀查看,在調試時,選擇Disassembly可以單步調試擦看C-->匯編的轉換。

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

        ③C轉匯編的實際過程是,C--->匯編,C--->HEX--->匯編,后面的這個叫反匯編。再有了LST,那么如何轉呢?

        1、匯編和C語言都一樣,通常都是程序模塊化寫程序,那么匯編和C都按照模塊化轉過來。

        2、注意不要堆棧溢出,比如CALL不要用得過多,多添加jmp跳轉。

        3、修改完畢后,注意時間的匹配、注意代碼書寫的優化。

        4、如果是改為不同芯片的使用,PIC<--->51、AVR<--->51、430<---->51等待都要注意匯編指令功能相似,但是格式有變,仔細修改反復運行幾次方能得到理想效果。

        5、綜上,C<--->匯編,無論你是正轉還是反轉,你必須對要轉成的語言非常熟悉,實際上你懂原理,基本上都能重寫一遍,只是通過這樣的轉換,能極大地提高效率,修修改改就完事。

        ④C語言調用匯編子程序,把匯編語句嵌入C代碼中,或把匯編封裝起來。按如下設置:

        1、在Project Workspace中右鍵.c文件,并寫勾選OptionsforFile中的兩項,Generate Assembler SRC File和Assemble SRC File(勾選后成實線勾)

        2、代碼書寫有這樣兩種格式:(仿真時在.src文件中我們能看到整體編譯后的匯編)

        #pragma ASM
        MOV A, #0xAA
        MOV P1, A
        #pragma ENDASM

        或者

        __asm MOV A, #0x33

        __asm MOV P2, A

        3、若要把匯編直接改為C這個沒辦法,只能按匯編語句逐步用C修改,把寄存器的位配置好,時間達到要求,按匯編的時序改就簡單可靠了。

        4、對于ARM你就自認倒霉吧,動不動就用C直接調用匯編子程序(為了效率)。盡量別把底層匯編改了。



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 崇阳县| 汨罗市| 娱乐| 金门县| 泗阳县| 紫阳县| 阿鲁科尔沁旗| 县级市| 都昌县| 星座| 宁波市| 新丰县| 富民县| 隆尧县| 伊金霍洛旗| 湖北省| 万载县| 开封市| 建始县| 阳新县| 柘城县| 富锦市| 磴口县| 晋宁县| 怀化市| 开原市| 温泉县| 德兴市| 盐山县| 安多县| 枝江市| 任丘市| 盐源县| 平泉县| 咸丰县| 梁平县| 二连浩特市| 龙陵县| 武定县| 兰州市| 镇巴县|