999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

C語言和匯編語言混合編程方法

2014-10-08 07:33:48龐新法PANGXinfa
價(jià)值工程 2014年24期
關(guān)鍵詞:程序

龐新法 PANG Xin-fa

(陜西省委黨校科技教研部,西安 710061)

(Research and Technology Department,Shaanxi Province Party School of the CPC,Xi'an 710061,China)

0 引言

匯編語言是一種面向機(jī)器的語言,其優(yōu)點(diǎn)是運(yùn)行速度快,占用存儲空間小,可直接對硬件進(jìn)行控制。缺點(diǎn)是編寫、調(diào)試?yán)щy、移植性差。C語言簡潔、靈活、庫函數(shù)豐富、調(diào)試方便、移植性好,目前已被廣泛地應(yīng)用于系統(tǒng)軟件和應(yīng)用軟件的開發(fā)中,為了發(fā)揮各自優(yōu)勢,取長補(bǔ)短,采用混合編程。大部分程序,如界面、人機(jī)接口(外殼程序)、數(shù)據(jù)處理等用C語言編寫,以提高程序的開發(fā)效率。而某些程序,如需要縮短程序的運(yùn)行時(shí)間,或需要對硬件進(jìn)行直接操作,或需要利用操作系統(tǒng)的某些功能模塊,或頻繁使用的程序、或需要占用內(nèi)存空間少的程序(內(nèi)核程序),則用匯編編寫,以提高程序的運(yùn)行效率。

1 嵌入式匯編

嵌入式匯編也稱行內(nèi)匯編,源程序中直接插入?yún)R編語句。匯編語句可直接訪問C程序中定義的常量、變量、函數(shù)。不必考慮二者之間的接口,方便編程。

1.1 嵌入式匯編語句的格式

格式:asm操作碼操作數(shù)[;或換行]

其中:操作數(shù)可以是匯編語句中的立即數(shù)、寄存器、表達(dá)式等還可以是C中的常量、變量、標(biāo)號等。分號;是匯編語句結(jié)束符,并非注解,要用注解,用C的注解。如下例所示。

1.2 匯編語句訪問C的數(shù)據(jù)

嵌入的匯編語句可以訪問C語言程序中的任何標(biāo)識符,包括變量、常量、標(biāo)號、函數(shù)名、寄存器變量、函數(shù)參數(shù)等。如下例所示。

1.3 匯編語言與C語言接口規(guī)則

①C語句訪問寄存器,必須在寄存器名前加一個(gè)下劃線。如例2中的return_AX;

②asm、C語句均可以有標(biāo)號,但不能用asm語句定義標(biāo)號。

③匯編語句的數(shù)據(jù)定義放在函數(shù)外面,指令放在函數(shù)里面。

所有在函數(shù)外的的匯編語句都作為數(shù)據(jù)聲明處理,即在編譯器編譯時(shí)會將它放在數(shù)據(jù)段中,也就是說不可以在函數(shù)外面寫匯編命令語句,把指令當(dāng)數(shù)據(jù)。

所有在函數(shù)內(nèi)的匯編語句必須是指令性語句,在編譯后都放在代碼段中。也就是說不可以在函數(shù)內(nèi)使用匯編數(shù)據(jù)定義語句,把數(shù)據(jù)當(dāng)指令。

④不要在以asm開頭的語句中使用C語言的關(guān)鍵字,這會導(dǎo)致編譯錯(cuò)誤

1.4 編譯過程

命令行鍵入命令:TCC-B-Iinclude-Llib文件名.c即可.TCC會自動調(diào)用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語言接口規(guī)則

①命名約定:匯編的名字前加一個(gè)下劃線,C的名字前不加下劃線(編譯后內(nèi)部自動加),以確保兩個(gè)模塊內(nèi)部名字一致。

運(yùn)行結(jié)果是:456B123

但是,如果匯編程序設(shè)置采用C語言類型,則標(biāo)識符前不加下劃線,(匯編后內(nèi)部自動加),以確保兩個(gè)模塊內(nèi)部名字一致。

②聲明約定:匯編、C模塊對自己未定義但要用的別的模塊的名字要聲明。

C模塊聲明格式:函數(shù)聲明格式:extern類型函數(shù)名(形參表);如例5 z1.c。

變聲明格式:Extern類型變量;

匯編模塊聲明格式:函數(shù)聲明格式:extern函數(shù)名:屬性(near,far)。

變聲明格式:Extern變量名:屬性(byte,word,dword等)

自己定義的可供別的模塊引用的也必須聲明。

匯編模塊聲明格式:PUBLIC名字(變量名或函數(shù)名)如例6 z2.asm。

C模塊聲明格式:全局變量,函數(shù)名前不加static即可。

③寄存器要保護(hù):C調(diào)匯編程序時(shí),匯編子程序中用到的寄存器最好全部保護(hù),退出時(shí)恢復(fù),以免影響主程序C的執(zhí)行。

④C、匯編程序存貯模式要一致。

2.2 編譯連接

①TASM文件名,把匯編程序翻譯成目標(biāo)程序。TCC C文件名,把C程序翻譯成目標(biāo)程序,C只編譯不連接。②TLINK把若干個(gè)目標(biāo)程序連接成一個(gè)EXE程序。③運(yùn)行。

3 結(jié)語

混合編程,主要涉及接口,匯編調(diào)C的函數(shù)、全局變量。C調(diào)匯編的函數(shù)、變量。本文對此做了淺述。

[1]譚浩強(qiáng).C語言程序設(shè)計(jì)[M].清華大學(xué)出版社,2004.

[2]丁愛萍.C語言程序設(shè)計(jì)實(shí)例教程[M].西安電子科技大學(xué)出版社,2006.

[3](美)布魯姆著,馬朝暉譯.編語言程序設(shè)計(jì)[M].北京:機(jī)械工業(yè)出版社,2006.

猜你喜歡
程序
給Windows添加程序快速切換欄
電腦愛好者(2020年6期)2020-05-26 09:27:33
試論我國未決羈押程序的立法完善
失能的信仰——走向衰亡的民事訴訟程序
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
基于VMM的程序行為異常檢測
偵查實(shí)驗(yàn)批準(zhǔn)程序初探
我國刑事速裁程序的構(gòu)建
創(chuàng)衛(wèi)暗訪程序有待改進(jìn)
恐怖犯罪刑事訴訟程序的完善
主站蜘蛛池模板: 99久久国产综合精品女同| 天天干伊人| 欧美乱妇高清无乱码免费| 色偷偷一区| 美女被操91视频| 精品国产一区91在线| 美女无遮挡免费视频网站| 亚洲精品亚洲人成在线| 丰满人妻中出白浆| 中国国产A一级毛片| 色悠久久久| 国产精品久久久久久久久kt| 亚洲av无码人妻| 99精品免费在线| 99er精品视频| 免费看美女自慰的网站| 亚洲一道AV无码午夜福利| 久久一本日韩精品中文字幕屁孩| 国产一区二区三区精品久久呦| 久热re国产手机在线观看| 成人日韩欧美| 国产乱子伦精品视频| 亚洲欧洲日产国码无码av喷潮| 欧美一区中文字幕| 亚洲午夜18| 1024国产在线| 亚洲成人精品| yjizz视频最新网站在线| 国产91麻豆免费观看| 国产一在线观看| jizz在线免费播放| 国产欧美一区二区三区视频在线观看| 亚洲Av激情网五月天| 无码在线激情片| 欧美激情一区二区三区成人| 香蕉久久永久视频| 国产成人免费手机在线观看视频 | 国产成人亚洲综合A∨在线播放 | 一本色道久久88| 一级成人欧美一区在线观看 | 久久人人爽人人爽人人片aV东京热| 91在线播放免费不卡无毒| 成人小视频网| 日韩a级毛片| 99热亚洲精品6码| 二级特黄绝大片免费视频大片| 国产精品无码翘臀在线看纯欲| 伊伊人成亚洲综合人网7777| 在线精品欧美日韩| 性视频久久| 亚洲国产日韩视频观看| 国产欧美网站| 亚洲美女操| 国产日韩久久久久无码精品| 国产99在线| 97久久超碰极品视觉盛宴| 色偷偷av男人的天堂不卡| 爆操波多野结衣| 久久精品中文无码资源站| 在线免费亚洲无码视频| 亚洲国产一区在线观看| 毛片免费高清免费| 99这里只有精品6| 在线亚洲小视频| 欧美一区二区人人喊爽| 国产爽妇精品| 亚洲人成影视在线观看| 欧美在线中文字幕| 国产欧美综合在线观看第七页| 国产视频入口| 日韩欧美中文字幕一本| 91精品情国产情侣高潮对白蜜| 国产一级小视频| 99热最新在线| 国产香蕉在线视频| 国产免费一级精品视频| 亚洲欧洲日产无码AV| 欧美有码在线| 热热久久狠狠偷偷色男同| 欧美一级专区免费大片| 精品国产乱码久久久久久一区二区| 三区在线视频|