例7.24 宏指令MAX把三个变元中的最大值放在AX中,而且使变元数不同时产生不同的程序段。

   宏定义:

      MAX    MACRO    N , A , B , C
      LOCAL   NEXT,OUT
      MOV    AX,A
      IF    N-1
      IF    N-2
      CMP    C,AX
      JLE    NEXT
      MOV    AX,C
      ENDIF
    NEXT:
      CMP    B,AX
      JLE    OUT
      MOV    AX,B
      ENDIF
     OUT:
      ENDM
   宏调用:
      MAX    1,P
      MAX    2,P,Q
      MAX    3,P,Q,R
   宏展开:
      MAX    1,P ;N-1 = 0,第一层IF不满足条件
     1 MOV    AX,P
     1 ??0001:
      MAX    2,P,Q ;N-2 = 0,第二层IF不满足条件
     1 MOV    AX,P
     1 ??0002:
     1 CMP    Q,AX
     1 JLE    ??0003
     1 MOV    AX,Q
     1 ??0003:
      MAX    3,P,Q,R ;第一、第二层均满足条件
     1 MOV    AX,P
     1 CMP    R,AX
     1 JLE    ??0004
     1 MOV    AX,R
     1 ??0004:
     1 CMP    Q,AX
     1 JLE    ??0005
     1 MOV    AX,Q
     1 ??0005: