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

匯編語言與C語言的混合程序設計技術

2013-04-29 00:44:03康晶晶
計算機時代 2013年6期

康晶晶

摘 要: 匯編語言作為一種面向機器的語言,具有占用存儲空間小、運行速度快的優點,并可直接控制硬件,在某些場合具有重要的作用;然而,匯編語言的編寫和調試卻相對困難和復雜,在進行數值混合運算與數據處理上尤為突出。C語言具有開發效率高,功能豐富、使用靈活、表達能力強的優點。在軟件開發中,采用匯編語言與C語言混合程序設計技術,能有效提高運行效率。筆者結合自身工作經驗,具體探討了這一混合程序設計技術,希望能為廣大同行提供借鑒。

關鍵詞: 匯編語言; C語言; 混合編程

中圖分類號:TP311.1 文獻標志碼:A 文章編號:1006-8228(2013)06-01-02

Exploration on design technique of hybrid programming of assembly language and C language

Kang Jingjing

(Institute of Information, Shanxi Agricultural University, Jinzhong, Shanxi 030800, China)

Abstract: Assembly language, as a machine-oriented language, has advantages of less storage space and faster processing, and can directly control hardware. It plays an important role in some occasions. However, writing and debugging in assembly language are relatively difficult and complicated, especially when conducting numerical hybrid computing and data processing. C language shows strengths of high efficiency of development, abundant feature, flexibility, strong expression abilities. During developing software, hybrid programming of assembly language and C language can effectively improve operational efficiency. Combined with author's own work experience, the technique is discussed in detail, in order to provide a reference for the peers.

Key words: assembly language; C language; hybrid programming

0 引言

在大型程序的設計中,如果將匯編語言程序和高級語言程序結合使用,能充分發揮其各自的優點,實現兩種語言的混合編程。在程序設計中,C語言可以調用匯編語言的子程序,而匯編語言也可調用C語言的子程序,還可在C語言程序中嵌入匯編語句,具有極大的優點[1]。同時,在混合編程中,模塊的連接、參數的傳遞和調用關系的確定等都是應當引起編程者注意的重要問題。

1 匯編語言與C語言混合編程的方法

匯編語言與C語言混合編程的方法主要包括以下幾種:

⑴ 在C語言程序中使用匯編程序定義的常量與變量[2];

⑵ 在C語言程序中內嵌匯編語句,實現C語言不能做到的對硬件的控制功能;

⑶ 在C語言程序中使用內部函數調用匯編語句;

⑷ 混合編程時,單個任務可被分成若干個功能模塊,每個功能模塊均以子程序或函數的形式存在,根據各單一模塊的特點,選擇合適的編程語言進行獨立編程,然后通過對應的語言編譯系統編譯成目標文件,最后將諸多目標文件集合在一起成為一個可執行文件。

1.1 C語言程序嵌入匯編語句

在C語言中,可直接編寫匯編語言代碼,在C語言中嵌入匯編語句時不需要分號,具體語法為:

asm

如果要嵌入一組語句,則需要用大括號{}將其括起來:

asm {

mov ax,data1

xchg ax,data2

mov data1,ax

}

C語言允許嵌入的匯編命令包括四類:一般指令、跳轉指令和數據定義、串操作指令、分配指令。

1.2 C語言調用匯編語言子程序

為了實現C語言對匯編語言子程序的調用,匯編語言源程序一定要嚴格依據編譯系統要求或約定的段組合和段順序。

⑴ 匯編語言子程序格式

匯編語言子程序的格式通常為:

MYCODE SEGMENT PARA PUBLIC ‘CODE

PUBLIC_函數名;公共符號說明

DGROUP GROUP MYDATA,MYBBS

MYDATA SEGMENT WORD PUBLIC ‘CODE

...定義變量,初始化數據

MYDATA ENDS

MYBBS SEGMENT WORD PUBLIC ‘CODE

...非初始化數據,開辟內存區

MY BBS END

ASSUME

CS:MYCODE,DS:DGROUP,SS:DGROUP

...

_函數名 PROC NEAR/FAR

PUSH BP

MOV BP,SP

PUSH SI

PUSH DI

...程序主體語句

POP DI

POP SI

POP BP

RET

_函數名 END UP

...

MYCODE ENDS

END

⑵ 被調用匯編語言的子程序格式

將被調用的程序的格式與一般匯編語言程序的格式相對比,可得以下結論:

第一,由于匯編語言子程序與C語言程序共用一個堆棧段,因此,匯編語言子程序的開頭必須運行以下兩個命令:

PUSH BP

MOVE BO,SP

第二,將要被C語言程序調用的子程序必須要以PUBLIC偽操作來說明該子程序是外部調用的。

第三,C語言程序允許子程序使用DI和SI存放局部變量,當變量超過兩個時才可存放在堆棧中,因此,模式中出現了PUSH DI與PUSH SI語句[3]。

第四,在整個程序中,定義了MYCODE代碼段、MYDATA初始化數據段、MYBBS費初始化數據段,并將MYBBS與MYDATA合成為DGROUP段組,且同一段組中各段共享基址。

第五,程序主體語句部分要有函數值返回語句,該返回值必須在RET語句前。

第六,被調用過程要以RET命令返回。

第七,結束處的END只表示程序的結束,未標示啟動位置。

1.3 匯編語言調用C語言子程序

匯編語言具有C語言難以比擬的優勢,如:輸入時可采用任意進制的數據,并可直接對其讀取。因此,可以在匯編程序中調用C語言子程序。

匯編語言主程序的格式與其子程序相同,只需在程序開始處添加語句:

EXTERN 函數名

用以說明該函數是被調用的C語言子程序,是外部的。

在主過程語句中,可通過CALL語句調用外部函數,格式為:

CALL NEAR PTR 函數名

當C語言子程序作為子程序時,其中可只含有C函數,無需EXTERN說明。

2 C語言與匯編語言的連接

2.1 參數傳遞

C語言和匯編語言在調用時會有參數傳遞的問題,通常采用堆棧來傳遞,在匯編語言中,將BP作為基址寄存器,先將來源于C語言的參數壓入堆棧,當使用這些參數時,再通過BP利用不同的偏移量對堆棧中的數據進行存取[4]。

2.2 確定調用關系

對將要調用的函數或過程,應進行事先說明,建立調用、被調用關系,被調用的函數或過程應先說明外部類型,調用程序也應說明要引用的外部模塊。

此外,還應依據存儲模式的不同而確定匯編語言格式,C程序大模式通常對應匯編程序的遠類型過程,而C程序小模式通常對應匯編程序的近類型過程[5]。

2.3 C語言與匯編語句程序的模塊連接

匯編語言與C語言模塊的正確連接有兩點要求:匯編模塊與C模塊的存儲方式須一致;匯編模塊必須遵從與C模塊兼容的命名約定。編譯系統在編譯C源程序時,會在函數名和變量名前加下劃線,為保持連接前后的一致性,所有被C語言調研的匯編子程序標示符都應加下劃線。同時,為使匯編語言標示符在C語言中可見,必須以PUBLIC定義。匯編語言中的C語言函數與變量,須在其前加下劃線,匯編程序開始部分調用的C函數與變量則應以EXTERN說明[6]。

3 結束語

綜上所述,C語言與匯編語言混合編程可互相取長補短,發揮各自優勢,進行參數傳遞、共享數據結構和數據信息,從而用以開發出更安全、實用、可靠的元件,使軟件開發與編程事半功倍。

參考文獻:

[1] 宋金華.匯編語言和C語言在圖形處理中的綜合應用[J].湖北廣播電

視大學學報,2010.10(12):11-12

[2] 張銀,索旭華,廖建林,郭娟.AOCC應用軟件的快速仿真平臺的研究

與技術實現[J].航天控制,2010.4(2):55-56

[3] 羅南超,向昌成,李唐輝.匯編語言實現多種進制的通用輸入輸出[J].

電腦知識與技術,2008.5(36):120-121

[4] 王文東,李竹林,尚建人.匯編語言與C語言的混合程序設計技術[J].

計算機技術與發展,2006.8(8):89-90

[5] 左艷麗.C語言和匯編語言混合編程的方法和實現[J].職教與經濟研

究(婁底職業技術學院學報),2008.6(3):12-13

[6] 王詠寧.高級語言與匯編語言混合編程的實現方法[J].科技信息(學術

研究),2007.10(24):101-102

主站蜘蛛池模板: 亚洲动漫h| 色吊丝av中文字幕| 亚洲永久精品ww47国产| 伊人91在线| 无码中文字幕乱码免费2| 日本亚洲成高清一区二区三区| 亚洲人免费视频| 一级毛片在线免费视频| 日韩视频精品在线| 日本精品视频一区二区| 国禁国产you女视频网站| 国产精品男人的天堂| 尤物视频一区| 久久久久久久久18禁秘| 亚洲一级毛片| 日本人又色又爽的视频| 国产成人精品视频一区二区电影| 美女潮喷出白浆在线观看视频| 日本久久网站| 在线观看国产精美视频| 九九这里只有精品视频| 欧美中文字幕第一页线路一| 精品视频一区在线观看| 色婷婷亚洲综合五月| 激情乱人伦| 国产欧美性爱网| 国产97色在线| 天堂在线www网亚洲| 亚洲国产中文精品va在线播放| 亚洲啪啪网| 中文字幕调教一区二区视频| 国产真实乱子伦精品视手机观看 | 综合色区亚洲熟妇在线| 欧美三级不卡在线观看视频| 一本色道久久88综合日韩精品| 真实国产乱子伦高清| 九九热这里只有国产精品| 1769国产精品视频免费观看| 国产精品白浆无码流出在线看| 久久婷婷人人澡人人爱91| 欧美成人手机在线视频| 国产成人乱无码视频| 亚洲永久视频| 人妻丰满熟妇av五码区| 欧美日韩中文国产| 午夜国产精品视频| 精品久久高清| 亚洲欧美人成人让影院| 一级黄色片网| 熟妇丰满人妻| h视频在线观看网站| AV不卡在线永久免费观看| 丰满的熟女一区二区三区l| 福利一区三区| a级毛片免费在线观看| 国产成人精品一区二区秒拍1o| 欧美精品综合视频一区二区| 久久6免费视频| 四虎永久在线| 日韩欧美中文字幕在线精品| 亚洲高清国产拍精品26u| 久久精品人人做人人爽电影蜜月| 一本大道东京热无码av| 亚洲va视频| 国产精品色婷婷在线观看| 国产区免费| 8090午夜无码专区| 中文字幕在线看视频一区二区三区| 亚洲自拍另类| 国产日本欧美亚洲精品视| 99精品在线视频观看| 无码免费视频| 五月婷婷伊人网| 日本黄色a视频| 自拍亚洲欧美精品| 亚洲最大在线观看| 国产精品成人一区二区不卡| 亚洲人视频在线观看| 亚洲男人的天堂在线观看| 毛片免费试看| 狼友视频国产精品首页| 亚洲床戏一区|