龐新法PANG Xin-fa
(陜西省委黨??萍冀萄胁?,西安 710061)
(Technology Research Department,Shaanxi Province Party School of the CPC,Xi'an 710061,China)
C 語言是目前流行很廣的一種高級語言,它可編寫出靈活和多功能的用戶界面,匯編語言程序可直接控制硬件,運(yùn)行速度快,占用存儲空間小,如何發(fā)揮各自優(yōu)勢,取長補(bǔ)短,提高程序的開發(fā)效率和運(yùn)行效率,讓C 語言與匯編語言混合編程是一種非常有效的方法,混合編程必然涉及到二者相互調(diào)用時的接口、語法規(guī)則、語義規(guī)則。本文結(jié)合實例予以詳細(xì)分析。
①匯編、C 模塊對自己未定義但要用的別的模塊的名字要聲明。
C 模塊聲明格式:函數(shù)聲明格式:extern 類型 函數(shù)名(形參表);
變聲明格式:Extern 類型 變量;
匯編模塊聲明格式:函數(shù)聲明格式:extern 函數(shù)名:屬性(near,far);
變聲明格式:Extern 變量名:屬性(byte,word,dword 等)。
②自己定義的不但自己可用,而且可供別的模塊引用的也必須聲明。
匯編模塊聲明格式:PUBLIC 名字(變量名或函數(shù)名)。
C 模塊聲明格式:全局變量,函數(shù)名前不加static 即可。
③C 語言與匯編語言的變量對應(yīng)關(guān)系。
表1
④C 語言的存貯模式與匯編語言函數(shù)類型對應(yīng)關(guān)系。C 存貯模式是微型、小型和緊湊時,則匯編程序把函數(shù)聲明、定義成near 屬性;C 是中型、大型和巨型時,則匯編程序把函數(shù)聲明、定義成far 屬性。
2.1 C 程序調(diào)用匯編程序
2.1.1 C 調(diào)匯編中的變量
運(yùn)行結(jié)果是:B
2.2 匯編程序調(diào)用C 程序
2.2.1 匯編調(diào)C 的變量
運(yùn)行結(jié)果是:70
2.2.2 匯編調(diào)C 的函數(shù)
end 運(yùn)行結(jié)果是:ABC
2.3 匯編程序、C 程序相互調(diào)用
運(yùn)行結(jié)果是:ABC 和61
混合編程,必然涉及接口,匯編如何調(diào)C 的函數(shù)、全局變量。C 如何調(diào)匯編的函數(shù)、變量。本文對此做了詳盡分析。
[1]譚浩強(qiáng).C 語言程序設(shè)計[M].清華大學(xué)出版社,2004.
[2]丁愛萍.C 語言程序設(shè)計實例教程[M].西安電子科技大學(xué)出版社,2006.
[3](美)布魯姆著.編語言程序設(shè)計[M].馬朝暉譯.北京:機(jī)械工業(yè)出版社,2006.