例7.14 宏定义:

    
;定义并调用宏--g7_2
    ;-------------------------------------------
    initz   macro       ;宏定义开始
         mov  ax,@data   ;初始化段寄存器
         mov  ds,ax ;
         mov  es,ax
         endm        ;宏定义结束
    ;
    prompt   macro messge    ;宏定义开始
    ;  本宏定义功能是显示某一条信息
    ; ;产生用于返回DOS的代码
         mov  ah,09h    ;ah中的功能号9表示要显示一串字符
         lea  dx,messge  ;dx存放要显示的字符串首地址
         int  21h     ;调用DOS
         endm        ;宏定义结束
     ;
    finish   macro       ;宏定义开始
         mov  ax,4c00h   ;ah中的功能号4ch表示要返回DOS,al中的00表示无错
         int  21h
         endm        ;宏定义结束
    ;------------------------------------------------------------
         .model small
         .386
         .stack 200h     ;定义堆栈段
         .data        ;定义数据段
    messg1  db 'Customer name?',13,10,'$'
    messg2  db 'Customer address?',13,10,'$'
    ;------------------------------------------------------------
         .code        ;定义代码段
    begin   proc   far
         .sall
    initz
         .xall
    prompt  messg1
         .lall
    prompt  messg2
         .xall
    finish
    begin   endp
    ;--------------------------------------------------------------
    end    begin

    ;定义并调用宏--g7_2
    ;---------------------------------------------------------------
    initz   macro      ;宏定义开始
         mov ax,@data   ;初始化段寄存器
         mov es,ax
         endm       ;宏定义结束
    ;
    prompt   macro messge   ;宏定义开始

    ; 本宏定义功能是显示某一条信息
 ;;  产生用于返回DOS的代码
         mov  ah,09h  ;ah中的功能号9表示要显示一串字符
         lea  dx,messge ;dx存放要显示的字符串首地址
         int  21h    ;调用DOS
         endm       ;宏定义结束
    ;
     finish macro      ;宏定义开始
         mov  ax,4c00h ;ah中的功能号4ch表示要返回DOS,al中的00表示无错
         int  21h
         endm       ;宏定义结束
    ;--------------------------------------------------------------
                  .model  small
 .386
  0200               .stack  200h   ;定义堆栈段
  0000               .data       ;定义数据段
  0000 43 75 73 74 6F 6D 65    messg1 db 'Customer name?',13,10,'$'
    72 20 6E 61 6D 65 3F
    0D 0A 24
    0011 43 75 73 74 6F 6D 65 messg2 db 'Customer address?',13,10,'$'
    72 20 61 64 64 72 65
    73 73 3F 0D 0A 24
    ;--------------------------------------------------------------
 0000 .code ;定义代码段
 0000 begin proc far
                 .sall
                 initz
                 .xall
                 prompt  messg1
 0007 B4 09 1 mov ah,09h          ;ah中的功能号9表示要显示一串字符
 0009 8D 16 0000 R 1    lea dx,messg1 ;dx存放要显示的字符串首地址
 000D CD 21 1 int 21h           ;调用DOS
                 .lall
                 prompt  messg2
  1                    ; 本宏定义功能是显示某一条信息
  1 ;
 000F B4 09 1   mov  ah,09h       ;ah中的功能号9表示要显示一串字符
 0011 8D 16 0011 R 1 lea dx,messg2     ;dx存放要显示的字符串首地址
 0015 CD 21 1   int  21h        ;调用DOS

  .xall
  finish
 0017 B8 4C00 1   mov ax,4c00h     ;ah中的功能号4ch表示要返回DOS,al中的00表示无错
 001A CD 21 1    int 21h
 001C        begin  endp
 ;-------------------------------------------------------------
 001C        end   begin