亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        匯編語言與C語言的混合程序設(shè)計技術(shù)

        2013-04-29 00:44:03康晶晶
        計算機時代 2013年6期
        關(guān)鍵詞:匯編語言

        康晶晶

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

        關(guān)鍵詞: 匯編語言; 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 引言

        在大型程序的設(shè)計中,如果將匯編語言程序和高級語言程序結(jié)合使用,能充分發(fā)揮其各自的優(yōu)點,實現(xiàn)兩種語言的混合編程。在程序設(shè)計中,C語言可以調(diào)用匯編語言的子程序,而匯編語言也可調(diào)用C語言的子程序,還可在C語言程序中嵌入?yún)R編語句,具有極大的優(yōu)點[1]。同時,在混合編程中,模塊的連接、參數(shù)的傳遞和調(diào)用關(guān)系的確定等都是應(yīng)當引起編程者注意的重要問題。

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

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

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

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

        ⑶ 在C語言程序中使用內(nèi)部函數(shù)調(diào)用匯編語句;

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

        1.1 C語言程序嵌入?yún)R編語句

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

        asm

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

        asm {

        mov ax,data1

        xchg ax,data2

        mov data1,ax

        }

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

        1.2 C語言調(diào)用匯編語言子程序

        為了實現(xiàn)C語言對匯編語言子程序的調(diào)用,匯編語言源程序一定要嚴格依據(jù)編譯系統(tǒng)要求或約定的段組合和段順序。

        ⑴ 匯編語言子程序格式

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

        MYCODE SEGMENT PARA PUBLIC ‘CODE

        PUBLIC_函數(shù)名;公共符號說明

        DGROUP GROUP MYDATA,MYBBS

        MYDATA SEGMENT WORD PUBLIC ‘CODE

        ...定義變量,初始化數(shù)據(jù)

        MYDATA ENDS

        MYBBS SEGMENT WORD PUBLIC ‘CODE

        ...非初始化數(shù)據(jù),開辟內(nèi)存區(qū)

        MY BBS END

        ASSUME

        CS:MYCODE,DS:DGROUP,SS:DGROUP

        ...

        _函數(shù)名 PROC NEAR/FAR

        PUSH BP

        MOV BP,SP

        PUSH SI

        PUSH DI

        ...程序主體語句

        POP DI

        POP SI

        POP BP

        RET

        _函數(shù)名 END UP

        ...

        MYCODE ENDS

        END

        ⑵ 被調(diào)用匯編語言的子程序格式

        將被調(diào)用的程序的格式與一般匯編語言程序的格式相對比,可得以下結(jié)論:

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

        PUSH BP

        MOVE BO,SP

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

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

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

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

        第六,被調(diào)用過程要以RET命令返回。

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

        1.3 匯編語言調(diào)用C語言子程序

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

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

        EXTERN 函數(shù)名

        用以說明該函數(shù)是被調(diào)用的C語言子程序,是外部的。

        在主過程語句中,可通過CALL語句調(diào)用外部函數(shù),格式為:

        CALL NEAR PTR 函數(shù)名

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

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

        2.1 參數(shù)傳遞

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

        2.2 確定調(diào)用關(guān)系

        對將要調(diào)用的函數(shù)或過程,應(yīng)進行事先說明,建立調(diào)用、被調(diào)用關(guān)系,被調(diào)用的函數(shù)或過程應(yīng)先說明外部類型,調(diào)用程序也應(yīng)說明要引用的外部模塊。

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

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

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

        3 結(jié)束語

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

        參考文獻:

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

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

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

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

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

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

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

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

        [5] 左艷麗.C語言和匯編語言混合編程的方法和實現(xiàn)[J].職教與經(jīng)濟研

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

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

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

        猜你喜歡
        匯編語言
        高等學校計算機專業(yè)課程教學改革實踐——以匯編語言與接口技術(shù)課程為例
        計算機教育(2020年5期)2020-07-24 08:52:50
        匯編語言與C語言的混合程序設(shè)計技術(shù)研究
        電子制作(2019年10期)2019-06-17 11:45:16
        提高《匯編語言程序設(shè)計》教學效率的思考與實踐
        匯編語言在大學生能力培養(yǎng)中的研究與探索
        研發(fā)單片機智能處理系統(tǒng)檢測主變溫控器
        編譯原理教學改革的探討與實踐
        試論匯編語言與C語言的混合程序設(shè)計技術(shù)
        電子世界(2015年18期)2015-03-26 22:36:05
        教改,不能只做減法了事
        基于TI?。茫叮埃埃跋盗校模樱械模茫?sup>++程序優(yōu)化技術(shù)
        堆棧技術(shù)及其在程序設(shè)計中的靈活運用
        偷拍偷窥女厕一区二区视频| 国产精品国产三级在线高清观看| 亚洲国产欧美久久香综合| 日韩av免费在线不卡一区| 手机在线免费观看的av| 国产精品女老熟女一区二区久久夜 | 成年男女免费视频网站点播| 亚洲国产性夜夜综合另类| 久久久久亚洲av无码专区喷水| 玩弄少妇高潮ⅹxxxyw| 在线无码国产精品亚洲а∨| 成人精品国产亚洲av久久| 91盗摄偷拍一区二区三区| 国产一区二区精品久久岳| 久久久精品456亚洲影院| 国产乱人伦偷精品视频免| 日本高清一区二区在线观看| 一区二区三区日韩精品视频| av免费一区在线播放| 久久亚洲中文字幕伊人久久大 | 特黄a级毛片免费视频| 亚洲另类自拍丝袜第五页| 国产福利小视频91| 国产精品国产三级国产an不卡| 亚洲av无码国产精品色午夜软件 | 亚洲中文字幕剧情类别| 久久婷婷五月综合97色一本一本| 无码手机线免费观看| 久久久高清免费视频| 亚洲人成精品久久熟女| 体验区试看120秒啪啪免费| 岛国av无码免费无禁网站| 色吊丝中文字幕| 成人xx免费无码| 丰满人妻无套内射视频| 精品熟女av中文字幕| 日韩在线 | 中文| 亚洲一区二区三区中文字幂| 国产主播无套内射一区| 国产一区二区美女主播| 亚洲丁香婷婷久久一区二区|