Version 4.00 of the ASxxxx Cross Assemblers
features 7 additional assemblers:
Rabbit 2000/3000 processors
Atmel AVR processors
Microchip PIC processors
Texas Instruments MPS430 processors
Sharp SC61860 processor
CDP1802 COSMAC processor
Mitsubishi 740 processors
Internally the assembler and linker cores have been
rewritten to support processor architectures having
upto 32 bit addressing, independent program and data
addressing, and a new linker bit merging method
allowing arbitrary positioning of linking addresses /
data within an instruction opcode. The bit scheme
allows simplified writing of assemblers for the AVR,
PIC, DS80cxxx, 8051 or newer RISC style instruction
processors which have non contiguous address / data
bits within the instruction opcode. The bit merging
definitions for any particular processor are included
in the .rel file output by the assembler for that
processor. This method allows the linker to 'learn'
the merge method for each .rel file as it is linked.
(The linker is also compatible with Version 3 of the
ASxxxx assemblers.)
One of the additional new features is a new
construct called a bank. The bank is a collection of
code and/or data areas which are linked as a group. A
bank has optional attributes of base address, size,
and of specifying a seperate linked output file. The
bank is useful in defining banked overlay/program
sections.
Other new features include the .local ( =: )
directive which defines a local variable that will not
be output to the .rel file even when the -a (make all
variables global) option is specified. This feature is
useful when defining a large number of assembler
constants that should be localized to a single
assembly process. Additional directives have been
added which are synonyms of existing directives:
.byte (.fcb), .word (.fdb), .blkb (.rmb, .rs), .ascii
(.fcc, .str), .ascis (.strs), and .asciz (.strz). And,
the addition of many new directives: .equ, .gblequ,
.lclequ, .end, .ifdef, .ifndef, .define, and .undefine.
The .define directive defines a substitution string
for a keyword in an assembly input line. The keyword
substitution is recursive for additional flexibility.
The .undefine directive removes the definition of a
defined keyword. The .ifdef and .ifndef directives test
the existance of a .define keyword definition or symbol
definition to assist in conditional assembly processing.
The assembler/linker -z option has been changed to
specify case insensitivity.