Write a program that will process the macros in a cs4800


Assignment: Macro Pre-Processor for CS4800 Assembler

Write a program that will process the macros in a CS4800 Assembly Language program. The macro format is described below.

Input: A CS4800 Assembly Language Program with or without Macros.

Output: A CS4800 Assembly Language Program with any Macros expanded.
A listing of the macro name table (pointers may be ignored)
A listing of the macro table (pointers may be ignored)

Macro Format:

.MACRO MacroName [Parameter List]

Macro Body

.ENDM [MacroName]

The MacroName is a label.
The Parameter List is a list of no more that 12 labels separated by commas.
The Macro Body is a sequence of CS4800 Assembly Language instructions including directives.

Labels used on lines in the Macro Body will be designated in the parameter list prefixed by a $. The macro processor will generate a label to replace the label in the Macro expansion.

Parameters may be used anywhere in the Macro Body. But, if the parameter is to be concatenated to other objects in the body, the parameter and the object must be separated by a tic (‘) . Two parameters concatenated are separated by two tics(‘'). Otherwise, the parameter must stand alone as a part of an instruction.

There will be these additional assembler directives

.IF
.ENDIF

used for conditional assembly of macros. The operand for .IF will contain one of these binary operators

.EQ.         is textually equal
.LS.        is textually less than
.GT.         is textually greater than
or this unary operator
.EMPTY.         is the null string

.ENDIF        marks the end of the instructions that will be conditionally expanded.

The operands for these operators may be a formal parameter or a literal. A literal is delimited by slashes (/).
There will be no forward references to macros.
Macro calls may be nested but macro definitions may not.
If you wish, you may implement recursive macros for 20% extra credit.

Example Macros:

                     .MACRO    TESTCASE THIS, IS, PARAMETER, REG, $MYLABLE
                     .BYTE        10
                     .WORD     100,200,300
                     THIS         MYLABLE
                      ADD        IS
                     ST'REG     PARAMETER
MYLABLE:       INC'REG
                     .ENDM      TESTCASE

If invoked with

TESTCASE LDA, SOME, LABEL,, MINE

The expansion would look like this:

              .BYTE      10
              .WORD     100,200,300
              LDA         L30000
              ADD        SOME
              ST          L30000
L30000:  INC

Invoked a second time this way:
TESTCASE ADD, A, Y, X

               .BYTE      10
               .WORD    100,200,300
               ADD        L30001
               ADD        A
               STX         Y
L30001:   INCX

Thoroughly test your program. You may assemble the output from your macro
processor to show that the generated code is correct if you wish.

Turn in: A complete design document
Your macro processor code .
An executable version. Your test programs.
Your test output (include object code if you generate it).

Request for Solution File

Ask an Expert for Answer!!
Assembly Language: Write a program that will process the macros in a cs4800
Reference No:- TGS02287780

Expected delivery within 24 Hours