摘要: C語言是一種高級的面向過程的開發語言,匯編語言是一種低級的面向機器的編程語言。兩者在程序設計開發方面各有優劣,目前兩者的混合編程得到了廣泛的應用。本文通過具體的實例,說明了混合編程的基本方法,為C語言應用開發人員提供方便。
關鍵詞: C 語言;匯編語言;混合編程
中圖分類號:TP313 文獻標識碼:A 文章編號:1006-4311(2014)24-0231-02
0 引言
匯編語言是一種面向機器的語言,其優點是運行速度快,占用存儲空間小,可直接對硬件進行控制。缺點是編寫、調試困難、移植性差。C語言簡潔、靈活、庫函數豐富、調試方便、移植性好,目前已被廣泛地應用于系統軟件和應用軟件的開發中,為了發揮各自優勢,取長補短,采用混合編程。大部分程序,如界面、人機接口(外殼程序)、數據處理等用C語言編寫,以提高程序的開發效率。而某些程序,如需要縮短程序的運行時間,或需要對硬件進行直接操作,或需要利用操作系統的某些功能模塊,或頻繁使用的程序、或需要占用內存空間少的程序(內核程序),則用匯編編寫,以提高程序的運行效率。
1 嵌入式匯編
嵌入式匯編也稱行內匯編,源程序中直接插入匯編語句。匯編語句可直接訪問C程序中定義的常量、變量、函數。不必考慮二者之間的接口,方便編程。
1.1 嵌入式匯編語句的格式
格式:asm操作碼 操作數[;或換行]
其中:操作數可以是匯編語句中的立即數、寄存器、表達式等還可以是C中的常量、變量、標號等。分號;是匯編語句結束符,并非注解,要用注解,用C的注解。如下例
所示。
1.2 匯編語句訪問C的數據
嵌入的匯編語句可以訪問C語言程序中的任何標識符,包括變量、常量、標號、函數名、寄存器變量、函數參數等。如下例所示。
1.3 匯編語言與C語言接口規則
1.4 編譯過程
命令行鍵入命令:TCC-B-Iinclude-Llib 文件名.c即可. TCC會自動調用TASM.EXE和TLINK.EXE,并且TLINK.EXE能正確的找到需要的.obj和.lib文件,要保證TC目錄下存在TASM.EXE文件。如果單步編譯,可能會碰到很多的問題,主要是TLINK.EXE不會自己去找.obj和.lib文件。該命令的功能是:.C編譯TCC.ASM匯編TASM.OBJ連接TLINK.EXE。
2 Turbo C模塊連接方式
C、匯編程序各自編程,各自編譯,然后連接在一起。
2.1 匯編語言與C語言接口規則
①命名約定:匯編的名字前加一個下劃線,C的名字前不加下劃線(編譯后內部自動加),以確保兩個模塊內部名字一致。
3 結語
混合編程,主要涉及接口,匯編調C的函數、全局變量。C調匯編的函數、變量。本文對此做了淺述。
參考文獻:
[1]譚浩強.C語言程序設計[M].清華大學出版社,2004.
[2]丁愛萍.C語言程序設計實例教程[M].西安電子科技大學出版社,2006.
[3](美)布魯姆著,馬朝暉譯.編語言程序設計[M].北京:機械工業出版社,2006.