395 lines
17 KiB
Plaintext
395 lines
17 KiB
Plaintext
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
THE ARROWSOFT ASSEMBLER
|
|
|
|
Public Domain Version 1.00D
|
|
|
|
|
|
User's Guide
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
The Arrowsoft Assembler Program and Manual are both
|
|
Copyright (C) 1986 by Arrowsoft Systems, Inc.
|
|
554 West Sixth Avenue
|
|
Larkview, MO 66069
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Arrowsoft Assembler v1.00 User's Guide
|
|
|
|
|
|
|
|
|
|
INTRODUCTION
|
|
|
|
Thank you for trying out the public domain version of our
|
|
|
|
Arrowsoft Assembler. We feel that the best way to alert you, the
|
|
|
|
programmer, to our fine line of professional products is to let
|
|
|
|
you use one. Once you have experienced the high quality and ease
|
|
|
|
of use of this free product, we hope that you will contact us
|
|
|
|
regarding our other software (our address is on the cover of this
|
|
|
|
manual).
|
|
|
|
|
|
You will no doubt notice that this manual is not exhaustive; in
|
|
|
|
fact, it includes the least amount of information we felt we
|
|
|
|
could include without robbing the program of its usefulness.
|
|
|
|
There are two reasons for the brevity of this manual: First, we
|
|
|
|
have targeted professional software developers with our products,
|
|
|
|
and we suspect that an experienced professional will have no
|
|
|
|
trouble figuring out how to use the Arrowsoft Assembler with the
|
|
|
|
information given; second, the program is, after all, free and we
|
|
|
|
feel that the quality of this assembler will more that compensate
|
|
|
|
you for the time you spend learning to use it.
|
|
|
|
|
|
Please note that this is NOT a supported product. If you contact
|
|
|
|
us, we will be happy to discuss our line of software but we will
|
|
|
|
NOT answer questions about the Arrowsoft Assembler.
|
|
|
|
|
|
Again, we thank you for giving our product a try.
|
|
|
|
|
|
(NOTE: 'Microsoft' and 'Microsoft Macro Assembler' are trademarks
|
|
|
|
of Microsoft Corporation. 'Arrowsoft', 'Arrowsoft Professional
|
|
|
|
Assembler' and 'Super Link' are trademarks of Arrowsoft Systems,
|
|
|
|
Inc.)
|
|
|
|
|
|
|
|
|
|
OVERVIEW
|
|
|
|
The Arrowsoft Assembler takes as its input 8086, 8088, 80186 and
|
|
|
|
80286 assembly language source files and produces relocatable
|
|
|
|
object modules which may be linked and run under the MS-DOS and
|
|
|
|
PC-DOS operating systems. The syntax of the input files is a
|
|
|
|
superset of that accepted by the Microsoft Macro Assembler
|
|
|
|
(versions 3.0 and later). In fact, most programs written for the
|
|
|
|
Microsoft product should assemble without modification with the
|
|
|
|
Arrowsoft Assembler.
|
|
|
|
|
|
The remaining sections of this manual will cover, in this order,
|
|
|
|
assembler command line options, input language specifications,
|
|
|
|
linking and execution of assembled object modules, and assembler
|
|
|
|
error messages.
|
|
|
|
|
|
|
|
|
|
INVOKING THE ARROWSOFT ASSEMBLER
|
|
|
|
You may run the Arrowsoft Assembler interactively or directly
|
|
|
|
from the DOS command line. To invoke the assembler
|
|
|
|
interactively, simply type
|
|
|
|
|
|
|
|
|
|
|
|
-1-
|
|
|
|
|
|
|
|
|
|
|
|
Arrowsoft Assembler v1.00 User's Guide
|
|
|
|
|
|
|
|
|
|
asm
|
|
|
|
at the DOS prompt and follow the ensuing instructions. To run
|
|
|
|
the assembler non-interactively, use the following syntax:
|
|
|
|
|
|
asm source [,object] [,list] [,xref] [options] [;]
|
|
|
|
where 'source' is a filespec for the source file (default
|
|
|
|
extension .ASM), 'object' is a filespec for the object file
|
|
|
|
(default extension .OBJ), 'list' is a filespec for the listing
|
|
|
|
file (default extension .LST) and 'xref' is a filespec for the
|
|
|
|
cross-reference file (default extension .CRF). Note that all
|
|
|
|
filespecs may consist of a drive letter, a pathname, a filename
|
|
|
|
and an extension. If the object file is not specified, the
|
|
|
|
assembler will use the source filename with the .OBJ extension.
|
|
|
|
If the list and cross-reference files are not specified, the
|
|
|
|
assembler will not produce them. Finally, the semicolon (;) will
|
|
|
|
force the assembler to assume default values for any unspecified
|
|
|
|
parameters.
|
|
|
|
|
|
|
|
|
|
OPTION CODES
|
|
|
|
The options list consists of a sequence of option codes. These
|
|
|
|
option codes consist of a slash (/) or dash (-) followed by one
|
|
|
|
or more letters, case being insignificant. Most of these options
|
|
|
|
are compatible with Microsoft conventions.
|
|
|
|
|
|
/A Write segments in alphabetical order
|
|
/Bnumber Set buffer size
|
|
/Dsymbol Define assembler symbol
|
|
/E Generate 8087/80287 emulator code
|
|
/Ipath Set 'include' search path
|
|
/ML Case sensitive internal labels
|
|
/MX Case sensitive external and public labels
|
|
/MU Convert labels to uppercase
|
|
/R Generate 8087/80287 floating point code
|
|
/S Write segments in source code order
|
|
/X Include false conditionals in listing
|
|
/Z Display error lines on screen
|
|
|
|
|
|
Many of these command line options are self explanatory; for
|
|
|
|
whose which aren't, see the descriptions below:
|
|
|
|
|
|
|
|
/B Set Buffer Size
|
|
|
|
|
|
Sets the size of the buffer used to hold the source file during
|
|
|
|
assembly. The 'number' is the number of 1K pages reserved for
|
|
|
|
use as a buffer. You may set the buffer size to any value
|
|
|
|
between 1K and 63K; default buffer size is 32K. Note that a
|
|
|
|
larger buffer can speed assembly of large files considerably.
|
|
|
|
|
|
|
|
/E Generate 8087/80287 Emulator Code
|
|
|
|
|
|
|
|
|
|
|
|
-2-
|
|
|
|
|
|
|
|
|
|
|
|
Arrowsoft Assembler v1.00 User's Guide
|
|
|
|
|
|
|
|
|
|
If you are writing programs for use with the 8087/80287 numeric
|
|
|
|
processor on a machine which does not have the processor, and you
|
|
|
|
have an 8087/80287 emulator library available, the /E option
|
|
|
|
directs the assembler to generate code for the emulator.
|
|
|
|
|
|
|
|
/I Set 'include' file search paths
|
|
|
|
|
|
You may direct the assembler to search up to 5 directories for
|
|
|
|
'include' files by including a '/Ipath' command for EACH of
|
|
|
|
them. For example, to set the search paths '\bin\lib' and
|
|
|
|
'\asm\lib', include the following in your options list:
|
|
|
|
/I\bin\lib/I\asm\lib.
|
|
|
|
|
|
|
|
/R
|
|
|
|
|
|
This option directs the assembler to generate floating point code
|
|
|
|
for the 8087/80287 numeric processor. Note that programs
|
|
|
|
assembled with the '/R' option will run ONLY on machines which
|
|
|
|
have an 8087/80287 installed.
|
|
|
|
|
|
|
|
|
|
ARROWSOFT ASSEMBLY LANGUAGE
|
|
|
|
As we mentioned earlier, the Arrowsoft Assembly Language is a
|
|
|
|
superset of the well-known Microsoft Macro Assembler Language. We
|
|
|
|
modeled our system after Microsoft's for two reasons: First, the
|
|
|
|
language has a flexible and moderately powerful macro facility;
|
|
|
|
second, and for this public domain project most important, there
|
|
|
|
is a plethora of third-party books which explain how to program
|
|
|
|
using the Microsoft product. We recommend that you purchase one
|
|
|
|
of these guides if you are not familiar with 8086 assembly
|
|
|
|
language. If you would like to take advantage of the many
|
|
|
|
extensions to the Microsoft Language we have implemented in the
|
|
|
|
Arrowsoft Assembler, you must do one of two things: Try to figure
|
|
|
|
them out for yourself (using experimentation, disassembly or
|
|
|
|
anything else you can think of); or you can contact us about
|
|
|
|
purchasing the Arrowsoft Professional Assembler, which includes
|
|
|
|
the complete documentation. Again, please DO NOT CALL us about
|
|
|
|
the Arrowsoft Assembler; we will not answer any questions or
|
|
|
|
provide clues as to how to access the assembler's advanced
|
|
|
|
features.
|
|
|
|
|
|
|
|
|
|
LINKING AND EXECUTING ARROWSOFT OBJECT MODULES
|
|
|
|
The Arrowsoft Assembler produces relocatable object modules which
|
|
|
|
are compatible with the Microsoft 8086 Object Linker (versions
|
|
|
|
3.0 and later). This means that programs assembled by the
|
|
|
|
Arrowsoft Assembler may be linked with other Microsoft
|
|
|
|
Linker-compatible programs generated by other assemblers and
|
|
|
|
compilers. If you need more information on how to use the
|
|
|
|
Microsoft 8086 Object Linker, see your DOS or Microsoft language
|
|
|
|
manual.
|
|
|
|
|
|
|
|
|
|
|
|
-3-
|
|
|
|
|
|
|
|
|
|
|
|
Arrowsoft Assembler v1.00 User's Guide
|
|
|
|
|
|
|
|
|
|
By the way, we would like you to know about Arrowsofts Super Link
|
|
|
|
8086/8086 Object Link Utility. Super Link is a full-service
|
|
|
|
overlaying linker which is fully compatible with the Microsoft
|
|
|
|
8086 Object Linker, yet much faster and far more versatile.
|
|
|
|
Contact us at the address on the cover of this manual for more
|
|
|
|
information.
|
|
|
|
|
|
|
|
|
|
ASSEMBLER ERROR MESSAGES
|
|
|
|
An Arrowsoft Assembler error report consists of three parts: A
|
|
|
|
source file line number, an error number and a terse error
|
|
|
|
description. In most cases, the error messages, in spite of
|
|
|
|
their brevity, are self explanatory. However, for those few
|
|
|
|
messages which require addtional elaboration, we offer the
|
|
|
|
following explanations:
|
|
|
|
|
|
|
|
2 Internal error
|
|
|
|
|
|
This message will appear only if an error occurred within the
|
|
|
|
assembler itself. If you see this message, please send an
|
|
|
|
assembly listing of the source file and any other relevant
|
|
|
|
information (DOS version, assembler version, etc.) to the address
|
|
|
|
on the cover of this manual.
|
|
|
|
|
|
|
|
68 Can't reach with segment reg
|
|
|
|
|
|
You have not issued the appropriate ASSUME directive.
|
|
|
|
|
|
|
|
99 Line too long expanding <symbol>
|
|
|
|
|
|
Expanding an EQU-defined symbol would result in a line too long
|
|
|
|
for the assembler to handle. Check for inadvertent recursion in
|
|
|
|
the symbol.
|
|
|
|
|
|
|
|
Out of Memory
|
|
|
|
|
|
Either the source file exceeds the 64K limit of the assembler or
|
|
|
|
the symbol table exceeds its allocation. If this condition
|
|
|
|
occurs, try assembling without creating list or cross-reference
|
|
|
|
files. If this doesn't work, try dividing your source code into
|
|
|
|
several smaller source files and assembling them separately. The
|
|
|
|
resulting code may then be linked with a link utility. (Again,
|
|
|
|
we can't resist pointing out that the Arrowsoft Professional
|
|
|
|
Assembler uses ALL available memory for the assembly process; in
|
|
|
|
fact, it will assemble a file of arbitrary size, regardless of
|
|
|
|
memory limitations.)
|
|
|
|
|
|
|
|
Internal Error
|
|
|
|
|
|
See the explanation for error number 2 above.
|
|
|
|
|
|
|
|
|
|
|
|
-4-
|
|
|
|
|
|
|
|
|
|
|
|
Arrowsoft Assembler v1.00 User's Guide
|
|
|
|
|
|
|
|
|
|
|
|
|
|
THE ARROWSOFT PROFESSIONAL ASSEMBLER
|
|
|
|
Our real reason for giving you this program free of charge is to
|
|
|
|
encourage you to purchase our commercial product, the Arrowsoft
|
|
|
|
Professional Assembler. The program you have now differs from the
|
|
|
|
full program in only three respects: (1) It includes no
|
|
|
|
documentation for those language features which extend the
|
|
|
|
Microsoft Macro Assembly Language (although they are implemented
|
|
|
|
by the public domain version); (2) the maximum input file size is
|
|
|
|
limited to 64K bytes; and (3) it is not supported via our 24 hour
|
|
|
|
toll-free help line (in fact, it is not supported at all by us).
|
|
|
|
With these 3 exceptions, the program you now have is identical to
|
|
|
|
the Professional Assembler.
|
|
|
|
|
|
If you decide you'd like to purchase the Arrowsoft Professional
|
|
|
|
Assembler, send a postcard requesting our catalog to the address
|
|
|
|
on the cover of this manual. Our catalog will show you our
|
|
|
|
entire line of professional software development products and
|
|
|
|
will convince you that our quality and prices are as competitive
|
|
|
|
as you will find anywhere.
|
|
|
|
|
|
|
|
|
|
CONCLUDING REMARKS AND CREDITS
|
|
|
|
Again, we would like to thank you for trying our product. We
|
|
|
|
hope that the remarks we've made concerning our programming
|
|
|
|
products (Arrowsoft Professional Assembler and Super Link 8086
|
|
|
|
Object Linker) have piqued your curiosity enough that you'll
|
|
|
|
write to us for more information. Further, we hope that actually
|
|
|
|
using one of our products has convinced you of our dedication to
|
|
|
|
quality and performance. Finally, we hope to welcome you to our
|
|
|
|
growing family of satisfied customers.
|
|
|
|
|
|
Even if you don't buy anything from us, you can do us a favor.
|
|
|
|
We want you to distribute this product to all of your friends by
|
|
|
|
any means possible. You may post it to bulletin boards, offer it
|
|
|
|
through your computer club or just copy it and pass it around.
|
|
|
|
We only ask that (1) you charge nothing for the software beyond
|
|
|
|
reasonable copying and disk costs and (2) that you distribute the
|
|
|
|
two files (ASM.EXE and ASM.DOC) together and without
|
|
|
|
modification.
|
|
|
|
|
|
The Arrowsoft Assembler was written by Kaplan 'Kap' Morovitz and
|
|
|
|
tested by the programming staff at Arrowsoft. Since 'Kap' writes
|
|
|
|
only in assembly language and C, this manual was written by Stan
|
|
|
|
Goldwyn-Benton.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-5-
|
|
|
|
|
|
|