例7.8 宏定义:

    
DIF    MACRO    A,B
          DB    B-A
         ENDM
    DIF1    MACRO    A:REQ,B:REQ
          DB    B-A
         ENDM3
    DIF2    MACRO    A:REQ,B
          DB    B-A
         ENDM

  这三个宏定义的功能是相同的,它们的差别是DIF对其变元A和B 并未提出特殊的要求。DIF1要求A、B在调用时必须指定实元,否则汇编程序将指示出错。DIF2要求在调用时A必须指定实元,如未指定,则汇编程序将指示出错。对B则无特殊要求。
宏调用与宏展开:
       DIF      5,8
    1   DB       8-5
       DIF      5
    1   DB      -5
        DIF      ,8
    1   DB       8-  汇编指示错:表达式无效
       DIF1      5,8
    1   DB       8-5
       DIF1      5
    1   DB      -5   汇编指示错:缺宏变元
       DIF1      ,8
    1   DB       8-  汇编指示错:缺宏变元,表达式无效。
       DIF2      5,8
    1   DB       8-5
       DIF2      5
    1   DB      -5
       DIF2      ,8
    1   DB       8-  汇编指示错:缺宏变元,表达式无效。


 例7.9 宏定义:

       
DIF3    MACRO    A:=<10>,B:=<12>
             DB      B-A
             ENDM
   宏调用和宏展开:
       DIF3
    1    DB     12-10
       DIF3    5,8
    1    DB     8-5
       DIF3    5
    1    DB     12-5
       DIF3    ,8
    1    DB     8-10

  可见,在宏调用中如未指定实元,则宏展开时使用宏定义中指定的缺省值;如宏调用时指定了实元,则按所指定的实元展开。