为了宏定义和引用的某些特殊需要,汇编程序还支持几个具体特定含义的运算符。
在宏定义中,如果形式参数与其它字符连接在一起,或形式参数出现在字符串之中,那么,就必须使用连接运算符(&)。
例9.5 定义一个转移宏JUMP,其一个参数决定转移类别,另一个参数指定转移目标。
|           
       解:  |           
  |||
| JUMP | MACRO | CON, here | |
| J&CON | here | ||
| ENDM | |||
假设存在下面二个引用语句,那么,点击它们可得到扩展后的指令。
|     JUMP                                                
      mp, next                                              
   1     Jmp next     
     | 
  
| 
       …  | 
  
|     JUMP                                                
      nz, next1                                              
   1     Jnz next1 
     | 
  
例9.6 定义一个问候性的字符串宏GREETING,其一个参数说明字符串的变量名,另一个参数指名问候的对象。
|  
       解:  |  
  |||
| GREETING | MACRO | MSG, name | |
| MSG | DB 'Hello, &name' | ||
| ENDM | |||
假设有下面引用语句,那么,点击它们将会扩展得到三个问候性的字符串定义。
|     GREETING                                             
      STR1, 张三                                              
   1     STR1 DB 'Hello, 张三'                                                 
     |          
  
|          
       …  |          
  
|     GREETING                                              
      STR2, 李四                                              
   1     STR2 DB 'Hello, 李四'                     
     |          
  
|          
       …  |          
  
|     GREETING                                              
      MSG1, John                                              
   1     MSG1 DB 'Hello, John'                                              
     |           
  
字符串整体传递运算符是一对尖括号<>,用它括起来的内容将作为一个字符串来进行形式参数的整体替换。在宏引用时,如果实参内包含逗号、空格等间隔符,则必须使用该操作符,以保证实参的完整性。如果实参是某个具有特殊含义的字符,为了使它只表示该字符本身,也需要用该运算符括起来。
|        
 假设有下面定义字符串的宏DEFMSG,  |        
  |||
| DEFMSG | MACRO | MSG | |
| DB | '&MSG', 0DH, 0AH, '$' | ||
| ENDM | |||
那么,使用和不使用该运算符的引用宏及其宏扩展如下所示:
|     DEFMSG                                                
      <Are you ready?>                                              
   1                                                   
DB  'Are you ready?', 0DH, 0AH, '$'                                               
     |        
  
|        
       …  |        
  
|     DEFMSG                                          
      Are you ready?                                              
   1                                                   
DB  'Are', 0DH, 0AH, '$'                                           
     |