- Important information
- New features
- Known problems
- Program corrections
- User guide corrections
- Miscellaneous
- Release history
Important information
- When building a pure assembler project from IAR Embedded Workbench, the Exclude RESET vector option should be used. This option has change name from Assembler only project, and will still exclude the runtime library from the project.
New features
- None
Known Problems
- EW18097: Crossing an IF block with a partially solved condition or an
unsolved condition can give internal errors.
Example:
label1: IF $-label1 ENDIF call #label1
- EW11791: If a move of an immediate value to an absolute address, for example MOV #0x1234, 0x300, is made in a RSEG or ASEG, the offset is calculated as if the code begins at address 0x0000. The assembler does not take into account the placement of the segment.
- EW10132: The reference guide, page 6, gives the impression that the
character sequence \' and '' both will generate the character ' inside a
string. This is not the case in the following example:
DB '''ABCD' ; Error[0]: Invalid syntax
Program Corrections
5.10.1
None.
4.21.6
EW21259, EW21260: When using symbolic mode with a PC offset of 0xFFFE, the assembler calculated the wrong PC offset. This has been corrected.
User guide corrections
The corrections below refer to the PDF version of the user guide MSP430 Assembler Reference Guide, A430-2. The information in the PDF file is, in the event of any differences, more accurate than the printed reference guide and the online help files.
-
Introduction to the MSP430 IAR Assembler, Predefined symbols, page 7.
The following predefinde symbold should be added:
Symbol
Value
__CORE__
An integer that identifies the chip architecture in use. The symbol reflects the -v option and is defined to __430_CORE__ for the MSP430 architecture and to __430X_CORE__ for the MSP430X architecture. These symbolic names can be used when testing the __CORE__ symbol.
-
Programming hints, page 10.
C-style preprocessor directives like #define are valid in the remainder of the source code file, while assembler directives like EQU is only valid in the current module. -
Assembler options, page 13.
The following options has been moved in the IDE and can now be found in the following option dialogs:Option
New location
-M
Language
-s
Language
-w
Language
-b
This option has been removed.
-
Assembler options, page 20.
Remove the -re option. It is not possible to include the full source file into the object file. -
Assembler options, page 21.
Add the option -v[0|1].
-v0 MSP430 device
-v1 MSP430X device
By default, the assembler generates code for MSP430 devices with up to 64 Kbyte of memory, 0x0000 - 0xFFFF. If the -v1 option is used, the address range is expanded to 1 Mbyte, 0x00000 - 0xFFFFF and the extended instruction set can be used. -
Assembler options, page 22.
Add the option -X which makes external symbols stay in the output file even if they are not referenced by the application. -
Assembler options, page 25.
Add the option -d <file> which makes it possible to specify a configuration file for the DLIB library. - Assembler operators, SFE, page 35.
The first sentence after the example for the operator SFR, should be changed into:
Even if the above code is linked with many other modules, end will still be set to the address of the first byte after the segment. - Assembler directives, page 39.
The following assembler directive should be added:
Directive
Description
sfrl
Creates 4 byte access SFR labels.
Miscellaneous
Nothing.
Release history
4.21.2 2009-09-01
- None.
4.11B 2008-07-10
- None.
4.10A 2007-09-27
- None.
3.42A 2006-12-07
- An error message is issued if an instruction with immediate source
operand is found in combination with the rpt instruction.
3.41A 2006-04-13
- None.
3.40A 2005-12-19
Program corrections
- EW17566: The check of max segment size was done before assembler optimization. This could lead to the error Error[66]: Segment too long (max is ffff) even when the segment was not to large.
- EW17059: The default name of an object file or a list file generated from a source file that has a name containing several period characters "." is now generated correctly.
- A new option -v has been added to include support for the MSP430X architecture. See User guide corrections for more information.
- A new assembler directive sfrl has been added. sfrl can be used to define SFR labels that require 4 byte accesses.
- A new predefined symbol __CORE__ has been added in the assembler. It reflects the -v option and can be used to determin which MSP430 architecture the code was built for. See User guide corrections for more information.
3.30A 2005-04-18
- None.
3.21A 2004-10-20
- The option -v[0|1] has been removed.
3.20A 2004-06-18
Program corrections
- None.
- A new option -v has been added to include support for 128-Kbyte devices. See User guide corrections for more information.
- A new data allocation directive WD16 has been added to make it possible to define a constant that points to the address range 0x10000 - 0x1FFFF. See User guide corrections for more information.
3.10A 2004-03-04
- None.
2.21B 2003-11-14
- None.
2.21A 2003-10-17
- EW13891: An internal error related to assembler macros has been corrected.
- EW14310: An internal error could occur when debug information was generated, and assembler macros where used.
2.20A 2003-05-23
- None.
2.10A 2003-02-28
Program corrections
- None.
- The assembler now generates a warning if an instruction has been placed on an odd address because of a preceding declaration or allocation of an odd number of bytes of data.
1.26B 2002-10-11
- EW11655: The assembler could not correctly handle sequential REPT directives inside a REPT directive.
- EW11675: When the .double directive was used to define a 48-bit floating point value in Texas Instrument format, the assembler allocated 3 words but made the calculations with 4. This caused all labels following this declaration to be placed on wrong addresses. The problem has been corrected so that 4 words are allocated.
1.26A 2002-02-26
- None.
1.25A 2001-11-09
- None.
1.24A 2001-04-06
-
The option -re (Generate source file embedded in the object file),
is now available in the IAR Embedded Workbench.
1.23A 2000-10-13
- The IAR Assembler now supports access to the constant generator by using the various addressing modes and the registers R2 and R3.
-
A0006: To compare a string with a register is not possible, the
assembler
should not generate an internal error, example: CMP #'HS',R1.
- A1010A: Using SET or EQU to nickname a register is not possible, the assembler should not generate an internal error.
1.22E 2000-06-26
- A0005: It was not possible to use a space after the ending quotation mark when using DB to create a string without a trailing zero. Everything following the space was ignored.
-
A0004: The following code with LABEL1 located in an absolute segment:
ASEG 0x200 LABEL1 DS 2 RSEG CODE MOV 0200h(R5),LABEL1
generated the following error:
"Error [400]: Absolute operand is not possible here" - AFE0103: Undefined symbols in IF/ENDIF macro statements sometimes caused internal errors after the appropriate error message had been displayed. This has been corrected.
1.22A 1999-11-25
- AFE0098: Alignments are now calculated correctly when preceded by a non-fixed instruction.
1.20A 1999-01-25
-
A0001: An error occured when a suffix (e.g. .B) was used as a symbol
(SET, EQU and DEFINE). This has been corrected.
-
A0002: An internal error produced when comments were placed on the same
line as assembler statements. This has been corrected.
- A0003: Operators of equal precedence are evaluated from right to left instead of left to right. This has been corrected.