超碰在线91,国产第1页,国产精品99,最近中文字幕av

<video id="z2k50"><ins id="z2k50"></ins></video><small id="z2k50"><pre id="z2k50"><samp id="z2k50"></samp></pre></small>

    1. <video id="z2k50"><ins id="z2k50"></ins></video>

        什么是子程序?子程序的概念

        發(fā)布時(shí)間:2024-05-28
        把可以多次調(diào)用、能夠完成特定操作功能的程序段編寫成獨(dú)立的程序模塊稱為子程序,又稱其為過程。主程序與子程序之間的關(guān)系如圖1所示。
        圖1 主程序與子程序間的關(guān)系
        一、子程序特性
        1.重復(fù)性
        2.通用性
        3.可浮動(dòng)性
        4.可遞歸和可重入性
        二、子程序定義
        格式: 
        procedure name proc attribute

        procedure name endp
        1.子程序名
        2.屬性
        ①near
        ②far。
        三、子程序的設(shè)計(jì)方法
        子程序是程序設(shè)計(jì)中經(jīng)常使用的程序結(jié)構(gòu),通過把一些固定的、經(jīng)常使用的功能做成子程序的形式,可以使源程序及目標(biāo)程序大大縮短,提高程序設(shè)計(jì)的效率和可靠性。
        對(duì)于一個(gè)子程序,應(yīng)該注意它的入口參數(shù)和出口參數(shù)。
        入口參數(shù)是由主程序傳給子程序的參數(shù),而出口參數(shù)是子程序運(yùn)算完傳給主程序的結(jié)果。另外,子程序所使用的寄存器和存儲(chǔ)單元往往需要保護(hù),以免影響返回后主程序的運(yùn)行。
        主程序在調(diào)用子程序時(shí),一方面初始數(shù)據(jù)要傳給子程序,另一方面子程序運(yùn)行結(jié)果要傳給主程序,因此,主子程序之間的參數(shù)傳遞是非常重要的。
        四、子程序的調(diào)用和返回
        1.call指令
        2.ret指令
        五、現(xiàn)場(chǎng)保護(hù)與現(xiàn)場(chǎng)恢復(fù)
        1.現(xiàn)場(chǎng)保護(hù)與現(xiàn)場(chǎng)恢復(fù)的原因
        2.現(xiàn)場(chǎng)保護(hù)與現(xiàn)場(chǎng)恢復(fù)的實(shí)現(xiàn)
        (1)push/pop
        (2)pusha/popa
        (3)pushad/popad
        六、參數(shù)傳遞的實(shí)現(xiàn)
        參數(shù)傳遞一般有四種方法實(shí)現(xiàn):
        (1) 利用寄存器
        這是一種最常見方法,把所需傳遞的參數(shù)直接放在主程序的寄存器中傳遞給子程序。
        (2) 利用存儲(chǔ)單元
        這種參數(shù)傳遞方法,把所需傳遞的參數(shù)直接放在子程序調(diào)用指令代碼之后。若子程序和調(diào)用程序在同一源文件(同一程序模塊)中,則子程序可直接訪問模塊中的變量,進(jìn)行參數(shù)傳遞。
        (3) 利用堆棧
        這種方法將參數(shù)壓入堆棧,在子程序運(yùn)行時(shí)從堆棧中取參數(shù)。
        下面我們通過實(shí)例說明子程序設(shè)計(jì)及參數(shù)傳遞方法。
        (4) 通過地址表傳遞參數(shù)地址
        這種方法是在主程序中建立一個(gè)地址表,把要傳送給子程序的參數(shù)都存放在地址表中,然后把地址表的首地址通過寄存器bx傳送到子程序中去。子程序通過地址表取得所需參數(shù),并把結(jié)果存入指定的存儲(chǔ)單元中去。
        五、增強(qiáng)功能的子程序定義偽操作
        從masm5.1版開始為用戶提供增強(qiáng)功能的過程定義偽操作
        偽操作格式:
        procnameproc [attribute field][uses register list][, parameter field]

        procnameendp
        說明:
        ①.其中屬性字段(attribute field)有以下幾項(xiàng)組成:distancelanguage typevisibilityprologue,每一項(xiàng)均為可選,各項(xiàng)之間用一空格或制表符分開。
        ?。甦istance就是near或far。
        ⅱ.language type說明當(dāng)該過程作為某高級(jí)語言程序的子過程時(shí)所用的高級(jí)語言。
        ⅲ.visibility說明該過程的可見性,可用private或public。如用private則該過程的可見性只能是當(dāng)前的源文件;如用public則允許其他模塊調(diào)用該過程(默認(rèn))。
        ⅳ.prologue是一宏的名字,允許用戶用宏來控制過程的入口和出口有關(guān)的代碼。
        ②.uses字段允許用戶指定所需保存和恢復(fù)的寄存器表,masm將在過程入口自動(dòng)生成push指令來保存這些寄存器,并在過程出口的ret指令前自動(dòng)生成pop指令來恢復(fù)這些寄存器。
        ③.參數(shù)字段允許用戶指定該過程所用參數(shù),其格式為:identifier:type[,identifier:type]其中identifier給出參數(shù)的符號(hào)名,type給出參數(shù)的類型。參數(shù)之間用逗號(hào)隔開。
        增強(qiáng)功能的過程定義偽操作還可在過程中定義局部變量。
        局部變量是指在過程內(nèi)部使用的變量。它是在過程被調(diào)用時(shí)在堆棧中建立的,在退出過程時(shí)被釋放。它是以[bp-2]、[bp-4]、…的形式被訪問的。masm規(guī)定,在過程內(nèi)可以用local偽操作為局部變量申請(qǐng)空間。
        偽操作格式:localvardef [,vardef]
        說明:
        ①.其中變量定義可用的格式為:label label:type label [count]:type其中第一個(gè)未指定類型者masm將使用word。type可以指定任意合法的類型說明。第三種類型為用戶申請(qǐng)數(shù)組提供了方便。
        ②.local語句必須緊跟在過程定義偽操作之后,并在任何80x86指令或可以產(chǎn)生任何代碼的masm語句之前出現(xiàn)。它可以定義多個(gè)局部變量。
        七、程序的調(diào)用
        1.遞歸的概念
        2.遞歸的特點(diǎn)
        上一個(gè):曇花可以吃嗎
        下一個(gè):norgren快插接頭推薦(工業(yè)備品備件必備品牌)

        微軟小娜怎么更新(微軟不再更新windows)
        折彎機(jī)壓力換算
        深圳天友利標(biāo)準(zhǔn)光源箱對(duì)色燈箱說明書
        金屬粉末自動(dòng)震動(dòng)下料高精度稱重分裝機(jī)價(jià)格
        打破壟斷!氫燃料電池核心材料實(shí)現(xiàn)自主量產(chǎn)
        教你快速計(jì)算土建工程量,趕緊學(xué)起來!
        鋁制中空美景條獲得好評(píng)和市場(chǎng)的認(rèn)可
        日本共立1017—數(shù)字萬用表技術(shù)規(guī)格
        S11306不銹鋼特厚板的耐高溫性能
        魅藍(lán)metal手機(jī)怎么定位,魅族魅藍(lán)metal手機(jī)參數(shù)