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.