- 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.
When using the
macros.m43
file replace the following:XBR #func
XCALL #funcwith
XXBR func
XXCALL funcThe old format is still supported, although deprecated. The reason behind the change is that the old macros do not work with ROPI.
New features
The IAR Assembler Reference Guide has been updated.
Known Problems
EW22728: An include directive, that is inside a skipped portion of a conditional preprocessor directive, is still parsed for validity.
- 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
None.
User guide corrections
The corrections below refer to the PDF version of the user guide MSP430 Assembler Reference Guide, A430-3.
None.
Miscellaneous
Nothing.
Release history
5.30.1 - 2011-06-30
EW22303: When using the instruction
MOVX &abs, X(Ry)
with a negative value onX
, the instruction is now correctly generated by the assembler.
5.20.1 - 2010-12-01
None.
5.10.1 - 2010-04-12
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.
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 correctionsEW17566: 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.