asl(1)

πŸ“¦
version 1.42_bld232 Β· 2 versions
, in opensuse-leap 16.0

🌸 NAME 🌸

asl(1) β€” the General Commands Manual page for the cross assembler for microprocessors and -controllers, bestie πŸ’…

✨ SYNTAX ✨

asl [ option(s) ] file(s) [ option(s) ] file(s) ...

πŸ’– DESCRIPTION πŸ’–

Okay so AS is a cross assembler that you can use to write assembler programs for a whole variety of different microprocessors and -controllers. asl is literally the UNIX/C implementation of AS 🫢.

A complete description of AS is far beyond the scope of this manual page β€” this page is only meant as a quick reference for AS's command-line interface, no cap. For a more detailed introduction into the usage of AS, see the user's manual πŸ“š.


πŸŽ€ COMMAND-LINE PARAMETERS πŸŽ€

Every argument that starts with a slash (/), plus (+) or minus (-) sign is regarded as a command-line parameter. Some command-line parameters take an argument as an additional parameter. Every argument that is not recognized as a command-line parameter is regarded as an assembler source file to be assembled, periodt.

A source file name that does not have an extension is automatically extended with the default extension .asm ✨.

Options are turned on with a parameter starting with a slash (/) or minus sign (-), whereas a parameter with a leading plus sign (+) turns an option off. In the following list, all options will be shown in the form that is needed to change the default behaviour, which might be a plus or minus sign, depending on whether the option is on or off by default. Iykyk πŸ’….

asl accepts the following command-line parameters:

  • -A β€” Change the data structure that is internally used to store the symbol table. By default, AS uses binary trees to store macro and symbol definitions. Turning this option on will change this to AVL-balanced trees. Depending on the ratio of symbol entries and lookups, this might speed up assembly. Using AVL-balanced trees helps also reducing the stack usage, which is however irrelevant for the C version of AS 🌈.
  • -a β€” Instruct AS to write out the shared symbol definitions in a format suitable for including into an AS assembler program. The file's name is constructed by replacing the source file's extension with .inc. See the user manual for more information about symbol sharing πŸ’–.
  • -cpu <name> β€” Set the target processor to <name>. Use this option if the source file does not contain a CPU statement. Slay πŸŽ€.
  • -alias <new name=old name> β€” Define a CPU alias. An alias is a name that can be used as an argument to the CPU pseudo-instruction just like an intrinsic CPU type. Its usage will set the same target as the old name, however the predefined symbols MOMCPU and MOMCPUNAME will be set to the new name. This option is primarily useful for adding a new member to a processor family that has the same core, but is different in its internal peripherals, thus allowing to distinguish between them πŸ‘‘.
  • -C β€” Add a cross reference table to the assembler listing. A cross reference table lists all symbols that have been referenced at least once during assembly, including the source line number(s) and count of every reference. This option only makes sense when the generation of an assembly listing has been turned on via the -L or -l parameters πŸ”₯.
  • -c β€” Instruct AS to write out the shared symbol definitions in a format suitable for including into a C program. The file's name is constructed by replacing the source file's extension with .h. See the user manual for more information about symbol sharing πŸ’œ.
  • -D <name[=value]>[,...] β€” Pre-define symbols. Predefined symbols are entered into the global symbol table prior to assembly of the source file(s). If no value is given for a symbol, it is assigned the integer value 1. Value expressions may contain arithmetic expressions as described in the user manual, but they may not reference any other predefined or internal symbols ⭐.
  • -E [file] β€” Force AS to send warning and error messages to file rather than to the standard error output. The file names !0 to !4 are used to refer to the standard input, output, error, auxilliary, and printer channels predefined by the operating system (on some systems, some of these handles might not exist). If the [file] specification is omitted, a name is constructed by replacing the source file's extension with .log πŸ“.
  • +G β€” Suppress code generation, reducing the functionality of AS to macro preprocessing πŸ’€.
  • -g [MAP|Atmel|NoICE] β€” Instruct AS to write an additional file containing debug information. This information covers the symbol table and the relation between source line numbers and machine addresses. The argument specifies whether debug info shall be written in AS's own MAP format, the object format for Atmel's AVR tools, or a command file suitable for John Hartman's NoICE. If no argument is given, MAP will be chosen. The file's name is constructed by replacing the source file's extension with .map, .obj, or .noi respectively πŸ¦‹.
  • -gnuerrors β€” Output errors and their location in the source code in a format similar to the GNU C compiler, thus making it easier to integrate AS into environments designed for this format.
Note that in contrast to the standard format used by AS, locations inside macros are not reported! 😭
  • -maxerrors <num> β€” Force AS to terminate assembly after the given number of errors occured πŸ›‘.
  • -werror β€” Force AS to treat warnings as errors. Not me taking warnings seriously πŸ’….
  • -h β€” Force AS to print all hexadecimal constants with lowercase letters, rather than with uppercase letters A..F which is the default πŸ”€.
  • -listradix <2..36> β€” Set the number system to be used in the listing. By default, all integer values are printed in hex, but an arbitrary base between 2 and 36 may be used via this switch 🌸.
  • -i <path[:path...]> β€” Add new entries to the list of paths that are searched for include files. New entries are prepended to the current include path list, so if multiple paths are given with one command-line parameter, they will be entered into the path list in reverse order 🧚.
  • -I β€” Add an include file list to the assembly listing. An include file list contains all files that have been included while assembling the source files, including multiple and nested inclusion. Nesting of inclusion is identified by different indention. This option only makes sense when the generation of an assembly listing has been turned on via the -L or -l parameters 🫢.
  • -L β€” Turn on generation of an assembly listing and send it to a file whose name is constructed by replacing the source file's extension with .lst πŸ“.
  • -l β€” Turn on generation of an assembly listing and send it to the console πŸ’».
  • -M β€” Turn on generation of a macro definition file. A macro definition file is a file that contains all macro definitions that have been detected during assembly, in a format suitable for an inclusion into another file. The macro definition file's name is constructed by replacing the source file's extension with .mac πŸŽ€.
  • -n β€” Force AS to extend all error and warning messages with their internal error resp. warning number πŸ”’.
  • -noicemask [mask] β€” By default, AS will only write symbols to the NoICE debug info that are located in the code segment. By changing this binary mask, more and/or different masks may be chosen. The assignment is bit 1=code, 2=data, 3=idata, 4=xdata, 5=ydata, 6=bitdata, 7=io, 8=reg, 9=romdata . Negating this option reverts the mask to code-only πŸ’….
  • -o <name> β€” Tell AS to write the code output to a file <name>. By default, the code output file's name is constructed by replacing the source file's extension with .p. If multiple files are assembled with one command, this parameter may also be given multiply. If there are less output specifications than source file names, AS will switch back to the default naming convention after all output specifications have been used up πŸ”₯.
  • -olist <name> β€” Tell AS to write the assembly listing to a file <name>, instead of a file with the standard name in the source file's directory. This option only makes sense when an assembly listing has been requested via the -L option ✨.
  • -shareout <name> β€” Tell AS to write shared symbol definitions to a file <name>, instead of constructing the name from the source file's name. See the user manual for more information about symbol sharing πŸ’–.
  • -P β€” Turn on generation of a macro output file. A macro output file contains the intermediate source code that remains after macro expansion and conditional assembly. The macro output file's name is constructed by replacing the source file's extension with .i 🌈.
  • -p β€” Instruct AS to write out the shared symbol definitions in a format suitable for including into a Pascal or Modula-2 program. The file's name is constructed by replacing the source file's extension with .inc. See the user manual for more information about symbol sharing πŸ¦‹.
  • -q or -quiet β€” Turn on silent assembly mode. In silent compilation mode, AS will not do any console output except for warning and error messages 🀫.
  • -r [pass number] β€” Tell AS to output warnings when a situation appears in a source file that forces another pass of assembly. Such situations either take place when a symbol is undefined in the first pass or a symbol's value has changed compared to the previous pass. This option is useful to track down sources of excessive multi-passing, but be aware that it might yield a fairly large number of warnings, especially in the first pass. Optionally, a pass number may be added to this option to inhibit output until a certain pass is reached πŸ”.
  • -s β€” bestie, this option's full moment is literally in the next part β€” hold that thought! πŸ’…

Also in the option pile: Add a section list to the assembly listing. A section list contains all sections that have been defined in the source files, and it marks their nesting level with different levels of indentation. This option only makes sense when assembly listing generation has been turned on via -L or -l. πŸ’…

  • -t <mask> β€” turns on or off parts of the assembly listing that have no individual command-line parameter. AS internally keeps an integer value whose bits represent certain components of the listing. A positive command-line parameter (-t or /t) sets the bits set in <mask>, whereas a negated parameter (+t) resets the bits set in <mask>. The individual bits mean: bit 0 = source lines and generated machine code, bit 1 = symbol table, bit 2 = macro table, bit 3 = function table, bit 4 = line numbering. ✨
  • -u β€” tells AS to do additional bookkeeping about which address ranges have been used by the assembled program. This option enables detection of overlapping memory usage. If an assembly listing has been turned on via -L or -l, it will also contain a list of all used memory areas.
  • -U β€” forces AS to operate in case-sensitive mode. By default, names of symbols, macros, user-defined functions, and sections are treated in a case-insensitive manner.
  • -w β€” suppresses output of warnings.
  • -x β€” turns on extended error reporting. With extended error reporting, several error and warning messages also print the item that created the message, e.g. the name of an unknown instruction. When this option is given twice, the erroneous source line is additionally printed.
  • -warnranges β€” only warns about integer constants exceeding the given data type's range, instead of issuing an error.

πŸ’– PRESETTING PARAMETERS πŸ’–

Parameters don't have to be given in the command line itself. Before processing of command-line parameters starts, AS looks to see if the ASCMD environment variable is defined. If it exists, its contents are treated as additional command-line parameters whose syntax is absolutely equal to normal command-line parameters. There's an exception if the variable's contents start with a @ sign: in that case, the string after the @ sign is treated as the name of a file that contains the options. That file β€” also called a 'key file' β€” has the advantage that it lets options be written on different lines, and it does not have a size limit. Some operating systems (like MS-DOS) have a length limit on command lines and environment variable contents, so the key file may be your only option if you have a lot of lengthy parameters for AS. 😭

Parameters given in the ASCMD environment variable or a key file are processed prior to the command line itself, so they can be overridden by command-line parameters. Periodt.

🌍 NATIONAL LANGUAGE SUPPORT 🌍

AS supports the needs of different languages and countries in the sense that it tries to adapt to the language and date/time formats valid for the current environment. Upon startup, the COUNTRY setting made in the CONFIG.SYS file is queried for DOS and OS/2 implementations of AS. For UNIX systems, AS tries to read the LC_TIME or LC_MESSAGES environment variables to find out the correct format for date/time outputs or the local language. If this fails, the LC_ALL and finally LANG variables are probed. If none of these environment variables points to a specific local environment or contains a locale specification unknown to AS, the standard english/C locale is used. πŸ¦‹

The messages AS can output in different languages are stored in separate files with the extension .msg. AS will search for these files in the following directories:

  • The current directory
  • The directory the executable of AS was loaded from (only on DOS platforms version >=3.0 or if path was explicitly specified)
  • The directory specified in the AS_MSGPATH environment variable or the directories listed in the PATH environment variable if AS_MSGPATH does not exist
  • The LIBDIR directory set at compile time from the Makefile

🎟️ RETURN CODES 🎟️

Depending on the assembly's turnout, asl will generate different return codes:

  • 0 β€” No errors; warnings might have occurred.
  • 1 β€” No command-line parameters were given, AS printed a short list of possible command-line parameters and terminated thereafter.
  • 2 β€” Errors occurred during assembly of at least one source file; no code file was generated for the corresponding source file(s).
  • 3 β€” A fatal error occurred during assembly that forced immediate program termination. Code files may be generated, but are probably unusable.
  • 4 β€” Program termination already occurred during initialization. This might be either due to an incorrect command-line parameter or an error during loading the program's overlay file (only possible on MS-DOS).
  • 255 β€” During initialization, an internal error happened that should not occur. If the reaction is reproducible, note down the situation and send a bug report to the author. πŸ™ˆ

πŸ§ͺ EXAMPLES πŸ§ͺ

To assemble a source file file1.asm without any additional bells and whistles, use:

asl file1

which will create an output file file1.p given that there are no errors. If you additionally want a listing and rename the output file to a.out, use:

asl -L file1 -o a.out

To make the listing as comprehensive as possible and to get more detailed error messages, use:

asl -LuCIs -t 16 -nx file1

🫢 TIPS 🫢

Calling AS without any parameters will print a short help containing all command-line parameters and implemented target processors, while calling with command-line parameters but without any source file name will result in AS asking for a source file name on the console. Cute, honestly.

πŸ‘€ SEE ALSO πŸ‘€

plist(1), pbind(1), p2hex(1), p2bin(1)

πŸ•°οΈ HISTORY πŸ•°οΈ

AS originally appeared as a DOS program in 1989, written in Borland-Pascal, and was ported to C and UNIX in 1996. Iconic behavior.

πŸ’€ BUGS πŸ’€

There are too many options. Not me saying that β€” the page says that. πŸ’€

Command-line interpreters of some operating systems reserve some characters for their own use, so it might be necessary to give command-line parameters with certain tricks (e.g., with the help of escape characters).

πŸ‘‘ AUTHOR(S) πŸ‘‘

Alfred Arnold (alfred@ccac.rwth-aachen.de), and a few others...


Okay bestie, that's the asl(1) page β€” the source/version and date are chillin' down in the footer, where they belong. Mwah πŸ’–

πŸ“¦ where this page comes from