Пример: IRP R,<AX,BX> ;; восстановление регистров POP R ENDM | POP AX POP BX |
Директива LOCAL
LOCAL v1, …, vk
vi – имена, используемые в макроопределении (метки).
Макрогенератор будет заменять эти имена на специальные имена вида??хххх, где хххх – четырехзначное шестнадцатеричное число.
Пример: mRepeat macro char, count local L1 mov cx,count L1:mov ah,2 mov dl,char int 21h loop L1 endm |
mRepeat ‘A’,10
mov cx,10
??0000:mov ah,2
mov dl,’A’
int 21h
loop??0000
mRepeat ‘*’,20
mov cx,20
??0001:mov ah,2
mov dl,’*’
int 21h
loop??0001
Директивы условного ассемблирования
<IF-директива> <фрагмент-1> ELSE <фрагмент-2> ENDIF | <IF-директива> <фрагмент-1> ENDIF |
Директивы IF и IFE
IF <константное выражение>
IFE <константное выражение>
Пример:
SHIFT MACRO X,N IFE N-1 SHR X,1 ELSE MOV CL,N SHR C,CL ENDIF ENDIF |
Директивы IFIDN и IFDIF
IFIDN <t1>, <t2>
IFDIF <t1>, <t2>
Пример:
SHIFT MACRO X,N IFE N-1 SHR X,1 ELSE MOV CL,N SHR C,CL ENDIF ENDIF |