MACROS
MACROS
• Introduction,
• Macros are very similar to functions that are available in most high-level
programming languages.
Definition:
• Macro is defined to be single line abbreviation for group of instructions.
• Format :
MACRO <name>
--------
--------
--------
MEND
Macro Definition
Macro Call
OBJECT CODE
MACRO PARAMETERS
Example:
FEATURES OF MACRO
1. PARAMETERIZED
2. CONDITIONAL ASSEMBLY
3. NESTED MACRO CALLS.
PARAMETER PASSING TECHNIQUES
POSITIONAL PASSING KEYWORD PASSING
PARAMETERIZED
CONDITIONAL ASSEMBLY
LOAD R
NESTED MACRO CALL
FUNCTIONS OF MACRO-PROCESSOR SAMPLE PROGRAM
• The macro processor algorithm will make two systematic scans or passes over the
input text, searching first for macro definitions and then for macro calls.
• The assembler cannot process a reference to a symbol before its definitions, in the
same way the macro processor cannot expand a macro call before having and
saved the corresponding macro definition.
• Thus we need two pass over the input text, one to handle definitions and one to
handle macro calls.
IMPLEMENTATION OF MACROPROCESSOR
1. Recognize macro definitions
Macro processor must recognize macro definitions identified by the MACRO and MEND
pseudo operations.
2. Save the definitions
Macro definitions should be saved in MACRO DEFINITION TABLE (MDT)
3. Recognize calls
The processor must recognize macro calls that appear as operation mnemonics.
4. Expand calls and substitute arguments
The processor must substitute for dummy argument corresponding arguments from a macro
call.
SPECIFICATION OF DATABASES
• Pass1 database
1. Input source
4. MDTP used to indicate the next line of text to be used during macro
expansion.
5. The ALA used to substitute macro call arguments for the index markers in
the stored macro definition.
P1: Recognise macro definition and MNT
store macro definition MNTC INDEX MACRO NAME MDT INDEX
1 INCR 1
MNTC 2
MDT
INDEX MACRO DEFINITION
1 INCR &ARG1, &ARG2, &ARG3=DATA3,
MDTC
&ARG4=DATA4
MDTC 2 A 1 #1
3 A 2 #2
4 A 3 #3
5 A 4 #4
ALA ALA
6 MEND
INDEX ARGUMENTS INDEX ARGUMENTS
1 &ARG1 1 DATA1 P2: Recognise macro call and
2 &ARG2 2 DATA9 expand macro definition
3 &ARG3 3 DATA2
4 &ARG4 4 DATA6
Example 2: MNT
INDEX MACRO NAME MDT INDEX
MACRO MNTC 1
&LAB INCR &ARG1, &ARG2,&ARG3
&LAB ADD AREG , &ARG1 MDT
ADD AREG , &ARG2 INDEX MACRO DEFINITION
MDTC
ADD AREG, &ARG3 1
MEND 2
3
START
4
LOOP INCR A,B,C
5
LABEL INCR DATA1, DATA2, DATA3 6
A DC 2 ALA
B DC 2
INDEX ARGUMENTS
C DS 2
DATA1 DC 3
DATA2 DS 2
DATA3 DC 4
END
Example 2: MNT
INDEX MACRO NAME MDT INDEX
MACRO MNTC 1 INCR 1
&LAB INCR &ARG1, &ARG2,&ARG3 MNTC
&LAB ADD AREG , &ARG1 MDT
ADD AREG , &ARG2 INDEX MACRO DEFINITION
MDTC
ADD AREG, &ARG3 1 &LAB INCR &ARG1, &ARG2,&ARG3
MDTC 2 #1 ADD AREG #2
MEND
MDTC 3 ADD AREG #3
START
4 ADD AREG #4
LOOP INCR A,B,C
5 MEND
LABEL INCR DATA1, DATA2, DATA3 6
A DC 2 ALA
B DC 2
INDEX ARGUMENTS
C DS 2
DATA1 DC 3 1 &LAB
DATA2 DS 2 2 &ARG1
DATA3 DC 4 3 &ARG2
END 4 &ARG3
Example 2: MNT
MACRO INDEX MACRO NAME MDT INDEX
&LAB INCR &ARG1, 1 INCR 1
&ARG2,&ARG3
&LAB ADD AREG , &ARG1 MDT
ADD AREG , &ARG2 INDEX MACRO DEFINITION
ADD AREG, &ARG3 1 &LAB INCR &ARG1, &ARG2,&ARG3
MEND 2 #1 ADD AREG #2
START START 3 ADD AREG #3
LOOP INCR A,B,C LOOP INCR A,B,C 4 ADD AREG #4
MNTC MNTC+1
ENTER LINE IN MDT
MACRO YES
Pseudo
Op? Prepare ALA
MDTC MDTC+1
NO
Write Copy of Enter Macro name
Source card card in MDT MEND NO
Pseudo
Op?
Yes PASS
2
Goto PASS 2
PASS-2
R
READ From COPY MDTP MDT Index from MNT
FILE