|
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 …… |
|
|