例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: