亚洲免费乱码视频,日韩 欧美 国产 动漫 一区,97在线观看免费视频播国产,中文字幕亚洲图片

      1. <legend id="ppnor"></legend>

      2. 
        
        <sup id="ppnor"><input id="ppnor"></input></sup>
        <s id="ppnor"></s>

        子程序的參數(shù)傳遞

        字號:

        子程序一般都是完成某種特定功能的程序段。當一個程序調(diào)用一個子程序時,通常都向子程序傳遞若干個數(shù)據(jù)讓它來處理;當子程序處理完后,一般也向調(diào)用它的程序傳遞處理結(jié)果,我們稱這種在調(diào)用程序和子程序之間的信息傳遞為參數(shù)傳遞。
            用程序向子程序傳遞的參數(shù)稱為子程序的入口參數(shù),子程序向調(diào)用它的程序傳遞的參數(shù)稱為子程序的出口參數(shù)。子程序的入口參數(shù)和出口參數(shù)都是任意項,對某個具體的子程序來說,要根據(jù)具體情況來確定其入口和出口參數(shù),也可以二者都沒有。
            程序和被調(diào)用子程序之間的參數(shù)傳遞方法是程序員自己或和別人事先約定好的信息傳遞方法。這種信息傳遞方法可以是多種多樣的,在本節(jié),我們只介紹常用的、行之有效的參數(shù)傳遞方法有:寄存器傳遞參數(shù)、約定存儲單元傳遞參數(shù)和堆棧傳遞參數(shù)等。如果對其它的參數(shù)傳遞方法感興趣的話,可參考其它《匯編語言程序設計》書籍。
            7.3.1 寄存器傳遞參數(shù)
            一方面,由于CPU中的寄存器在任何程序中都是“可見”的,一個程序?qū)δ臣拇嫫髻x值后,在另一個程序中就能直接使用,所以,用寄存器來傳遞參數(shù)最直接、簡便,也是最常用的參數(shù)傳遞方式。但另一方面,CPU中寄存器的個數(shù)和容量都是非常有限,所以,該方法適用于傳遞較少的參數(shù)信息。
            例7.1是用寄存器傳遞參數(shù)的例子,子程序處理的數(shù)據(jù)被保存在寄存器AL中。假設有下列的程序段:
            …
            MOVAL, ’b’
            CALLUPPER;子返回時,(AL)=’B’
            …
            MOVAL, ’2’
            CALLUPPER;子返回時,AL的值不變,因為’2’不是字母
            …
            例7.3 按五位十進制的形式顯示寄存器BX中的內(nèi)容,如果BX的值小于0,則應在顯示數(shù)值之前顯示負號’-’。
            例如:(BX)=123,顯示:00123;(BX)=-234,顯示:-00234;
            解:
            ;子程序功能:把寄存器BX的內(nèi)容按十進制有符號數(shù)顯示出來
            ;入口參數(shù):BX
            ;出口參數(shù):無,只有顯示信息
            ;算法描述:
            1、定義6個字節(jié)的存儲單元
            2、先判斷BX是否小于零,如果是,則先顯示負號’-’,再取BX的絕對值;
            3、采用除10,得余數(shù)的方法,從低位向高位求出每位十進制位;
            4、輸出數(shù)據(jù)的字符串。
            SubDataSEGMENT
            DB 5 DUP(’0’), 0ah, 0dh, ’$’    ;0ah、0dh:換行、回車
            SubDataENDS
            DISPBXPROC
            ASSUMEDS:SubData
            PUSHDS
            PUSHDX
            PUSHCX
            PUSHAX
            MOVAX, SubData;取子程序所用的數(shù)據(jù)區(qū)段地址
            MOVDS, AX
            CMPBX, 0
            JGEnext
            MOVDL, ’-’
            MOVAH, 2
            INT21H;顯示負號’-’
            NEGBX;求-BX,使其值為正數(shù)
            next:MOVSI, 4
            MOVAX, BX
            MOVCX, 10D
            again:XORDX, DX
            IDIVCX;DX存放余數(shù),AX存放商
            ADDDL, ’0’
            MOV[SI], DL
            DECSI
            JGEagain
            XORDX, DX
            MOVAH, 9
            INT21H;調(diào)用中斷21的功能9,顯示DS:DX指向的字符串
            POPAX
            POPCX
            POPDX
            POPDS
            RET
            DISPBXENDP