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)
恐怖犯罪刑事訴訟程序的完善
主站蜘蛛池模板: 婷婷中文在线| 九九热视频精品在线| 91精品国产一区| 玖玖免费视频在线观看| 亚洲乱码视频| 国国产a国产片免费麻豆| 久久人搡人人玩人妻精品一| 国产精品任我爽爆在线播放6080| 欧美亚洲国产精品久久蜜芽| 亚洲大尺码专区影院| 久草国产在线观看| 亚洲中文字幕23页在线| 精品福利视频导航| 在线永久免费观看的毛片| 宅男噜噜噜66国产在线观看| 一级毛片在线直接观看| 丁香综合在线| 亚洲综合18p| 国产自无码视频在线观看| 九九热在线视频| 综合久久五月天| 精品福利一区二区免费视频| www.亚洲一区| 欧美日韩国产一级| 香蕉久久国产超碰青草| 国产在线无码av完整版在线观看| 日韩在线永久免费播放| 国产99在线观看| 久996视频精品免费观看| 欧美在线网| 美女无遮挡免费视频网站| 91精品专区国产盗摄| 91免费观看视频| 91av成人日本不卡三区| 蜜臀av性久久久久蜜臀aⅴ麻豆| 国产精品55夜色66夜色| 欧美激情,国产精品| 日韩中文精品亚洲第三区| 波多野结衣久久精品| 岛国精品一区免费视频在线观看 | 欧美精品成人一区二区视频一| 91在线播放免费不卡无毒| 91青青在线视频| 刘亦菲一区二区在线观看| 91精品久久久无码中文字幕vr| 伊伊人成亚洲综合人网7777| 亚洲大尺码专区影院| 免费在线成人网| 色噜噜在线观看| 天天综合网站| 日韩123欧美字幕| 手机精品福利在线观看| 热思思久久免费视频| 2020国产精品视频| 成人免费午间影院在线观看| 国产精品欧美激情| 欧美 国产 人人视频| 欧美怡红院视频一区二区三区| 婷婷伊人久久| 国产丝袜第一页| 国产特一级毛片| 少妇精品网站| 在线欧美国产| 丰满人妻一区二区三区视频| 久久五月天综合| 扒开粉嫩的小缝隙喷白浆视频| 成人在线欧美| 亚洲AⅤ综合在线欧美一区| 美女免费黄网站| 日韩一级毛一欧美一国产 | 免费中文字幕在在线不卡| 亚洲中文字幕久久无码精品A| 老汉色老汉首页a亚洲| 91探花国产综合在线精品| 色婷婷在线影院| 人妻一区二区三区无码精品一区| 欧美亚洲国产一区| 欧美精品在线视频观看| 天堂岛国av无码免费无禁网站 | 亚洲精品卡2卡3卡4卡5卡区| 天堂成人av| 91亚洲精选|