ID Number: Q40452
5.10 | 5.10
MS-DOS | OS/2
buglist5.00 buglist5.10 buglist5.10a fixlist6.00
Summary:
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.00,
5.10, and 5.10a. The problem was corrected in MASM version 6.00.
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