Microsoft KB Archive/119872

= PRB: Error A2032 Using Indexed Addressing =

Article ID: 119872

Article Last Modified on 2/11/2004

-

APPLIES TO


 * Microsoft Macro Assembler 6.0 Standard Edition
 * Microsoft Macro Assembler 6.0a
 * Microsoft Macro Assembler 6.0b
 * Microsoft Macro Assembler 6.1 Standard Edition
 * Microsoft Macro Assembler 6.1a
 * Microsoft Macro Assembler 6.11 Standard Edition

-



This article was previously published under Q119872



SYMPTOMS
Assembling a line of code that performs indexed addressing, such as the following:

mov dx,mylabel-2[bx]

produces the following error:

error A2032: invalid use of register

The same line of code assembles without error under MASM version 5.1.



CAUSE
The index operator '[]' is now at the very top of the MASM operator precedence list, while the binary "+" and "-" operators are in the lower half. So, for example, if the expression

2 - 3[bx]

is no longer equivalent to

2 - 3 + bx

but rather to

2 - (3 + bx) ; or 2 - 3 - bx

then it is the "- bx" that is causing the A2032 error.



RESOLUTION
Assemble using the OPTION M510 directive, the /Zm switch (which implies the OPTION M510), or use one of the following syntaxes:

mov dx, (mylabel-2)[bx]

mov dx, mylabel-2+[bx]

mov dx, mylabel[bx]-2

NOTE: The OPTION M510 is used for compilation with maximum MASM version 5.10 compatibility.

Additional query words: 6.00 6.00a 6.00b 6.10 6.10a

Keywords: KB119872

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.