[INTEL NAVIGATION HEADER]

Specifying ASM-51 Options From the Command Line

(#3303) Specifying ASM-51 Options From the Command Line [INTEL NAVIGATION HEADER]

SPECIFYING ASM-51 OPTIONS FROM THE COMMAND LINE

Often in developing programs for embedded products, it is advantageous to use the same assembly source file(s) for a number of different products, selecting different options through conditional assembly switches. The straightforward way to do this is to assemble the code with the switches set for one model, then edit the source file to change the switches, then re-assemble. This has a number of drawbacks, including the necessity of editing the source file, and having temporary files laying around, to cause confusion and clutter. A much better method is to keep only one source file, and specify different options from the DOS command line when it is assembled. Fortunately, ASM51, as well as most other Intel assemblers, provides a method to do this.

ASM51 provides a macro command, "%IN" which will pause the assembly operation and wait for a line to be input from the console. This input can be a line of text or a numerical value. Consult the manual for further details. Also provided is "%OUT", which will print text to the console to prompt the operator. The trick is to force ASM51 to take its input from a file, instead of directly from the console. This can be done with DOS's input redirection facility.

For instance, a file, let's call it "QUERY.ASM", such as the following, will ask for a password, then continue depending on the value of that password:

; test of macro processor's IN and OUT commands

false equ 0
true equ not false
%out(enter password )

%if(%eqs(%IN,swordfish
))then(
result set true
%out(At your command
)
)else(
result set false
%out(Get Lost !!!
)
)fi
end

Note the following items:

    1) %eqs is case sensitive. "swordfish" does not equal "SWORDFISH".
    2) The word being tested for is followed immediately by a <CR>, and the first character of the next line is the ending ")", i.e., the test is being performed against "swordfish<CR>". Don't indent the closing parenthesis!

When this file is assembled, it will ask for the password, then alter its operation accordingly.

Manually entering options works fine if there is just one or two, but it is more accurate and less tedious to put all the options in a file, such as a "batch" or "make" file. This can be done in a number of ways. For instance, create a file called PASSWORD containing the one line:

swordfish

Then type at the DOS command line:

ASM51 QUERY.ASM<PASSWORD

ASM51 will then assemble QUERY.ASM, taking its password from the PASSWORD file. If there is more than one %IN, each response should occur on a separate line.

The above line can also be placed within a batch file, but is should be noted that if the command ASM51 is itself a batch file which invokes the real assembler, then the redirected input will not be passed on to the programs within the batch file.

Another technique is to make a file, let's call it "SCRIPT.SCR", such as:

ASM51 QUERY.ASM
swordfish
exit

Don't forget the exit on the last line, or the <CR> after it, or the secondary command processor will never terminate.

Then invoke the assembler via a secondary command processor, thusly:

COMMAND<SCRIPT.SCR

This method has the advantage that the assembler invocation line and all input to the assembler is contained in one file, instead of two or more, so it is easier to maintain. Also, the assembler can be run multiple times, with different options, from the same script.


Legal Stuff © 1997 Intel Corporation

Free Web Hosting



Legal Stuff © 1997 Intel Corporation