FIX: A2006: Phase Error Using EQU in An IFNDEF Block

ID: Q40452


The information in this article applies to:
  • Microsoft Macro Assembler for MS-DOS and OS/2, version 5.1


SYMPTOMS

When using an equate in an ifndef block, the following error is generated

A2006: phase error between passes


CAUSE

On pass 1 if the symbol is not defined, it gets defined. On pass 2 it is defined; therefore, you get a phase error.


STATUS

Microsoft has confirmed this to be a problem in MASM versions 5.0, 5.1, and 5.1a. The problem was corrected in MASM version 6.0.


RESOLUTION

When using the equate, specify a size (with WORD PTR, for example).


MORE INFORMATION

The following sample code demonstrates the problem. In order to work around the problem change


   MOV bx, SAVE 
to the following

   MOV bx, WORD PTR SAVE 

Sample Code:


;Assemble options needed: none

ifndef SAVE
   SAVE EQU 1
endif

code SEGMENT
   assume cs:code

   MOV bx, SAVE

endcode:

code ENDS
    END 

Additional query words: 5.10 buglist5.00 buglist5.10 buglist5.10a fixlist6.00

Keywords :
Version : MS-DOS:5.1
Platform : MS-DOS
Issue type :


Last Reviewed: January 7, 2000
© 2000 Microsoft Corporation. All rights reserved. Terms of Use.