小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

PROC與MACRO辨析

 Kinetis 2014-04-29
1,過程定義偽指令PROC、ENDP
1.1 過程就是子程序。一個過程可以被其它程序所調用(用CALL指令),過程的最后一條指令一般是返回指令(RET)。
  過程定義偽指令的格式為
    <過程名>    PROC  [類型]
                …
                …   
                RET
    <過程名>    ENDP
  注意:PROC和ENDP必須成對出現(xiàn)。
1.2 過程的類型有兩種:
    NEAR——(默認類型)表示段內調用
    FAR——表示段間調用
    
  調用一個過程的格式為:
CALL  <過程名>

2,宏定義偽指令
如果需要多次使用同一個程序段,可以將這個程序段定義為一個”宏指令”,然后在需要時,可簡單地用宏指令名來代替這個程序段。
指令的格式為:
<宏指令名>  MACRO  [形參表]
       <宏定義體>
     ENDM
例:兩個數(shù)之和的宏定義和宏調用。
   宏定義為:
DADD  MACRO   X,Y,Z
             MOV   AX,X
             ADD   AX,Y
             MOV   Z,AX
             ENDM
X、Y、Z是形式參數(shù)。調用宏DADD時可寫為:
    DADD   DATA1,DATA2,SUM
DATA1,DATA2,SUM是實際參數(shù),由它們替換定義中的X、Y、Z。

3,宏調用與過程(子程序)調用都是一次定義,多次調用。它們之間的差別是:
① 執(zhí)行形式:宏命令偽指令由宏匯編程序在匯編過理中進行處理,而CALL、RET則是由CPU執(zhí)行的指令。
② 匯編結果:宏命令偽指令匯編后被展開。
③ 執(zhí)行速度:宏命令執(zhí)行速度較快(因無調用轉移)
④ 占用內存:宏指令簡化了源程序,但不能簡化目標程序,并不節(jié)省內存單元。使用過程可以節(jié)省代碼占用的內存空間。
宏展開:匯編程序會把宏調用按宏定義展開。
例如:宏定義為:
               Display    MACRO    string
                               LEA    DX,string
                               MOV   AH,9
                               INT     21H
                               ENDM
           程序中宏調用:
                                ……
                               DISPLAY           ERROR_MESSAGE
                               DISPLAY           EXIT_MESSAGE
                                ……
           匯編后的結果:(帶有+號的指令為宏展開后的結果)
                                ……
                         +     LEA    DX,ERROR_MESSAGE
                         +     MOV   AH,9
                         +     INT     21H
                         +     LEA     DX,EXIT_MESSAGE
                         +     MOV AH,9
                         +     INT     21H
                                ……


    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多