Microsoft KB Archive/35128

= PRB: Line Parsing Order: Looks Up Second Token First =

Article ID: 35128

Article Last Modified on 11/19/2003

-

APPLIES TO


 * Microsoft Macro Assembler 5.1 Standard Edition
 * Microsoft Macro Assembler 5.1a
 * Microsoft Macro Assembler 6.0 Standard Edition
 * Microsoft Macro Assembler 6.0a
 * Microsoft Macro Assembler 6.0b

-



This article was previously published under Q35128



SYMPTOMS
The example below will generate the warning:

warning A4016: Reserved word used as symbol: MOV

when assembled with Microsoft Macro Assembler (MASM) 5.1 and 5.1a. This warning is misleading. MASM 6.0, 6.0a, and 6.0b generate the more specific error message:

error A2001: immediate operand not allowed



CAUSE
The reference to a_struc.a in the example below is a reference to a structure template and not to a variable stored in memory. Thus, a_struc.a is a constant or immediate operand. MASM 5.1 and 5.1a always looks up the second token on the line first. In the case below, it sees &quot;a_struc&quot;. Because a_struc is a structure declaration, MASM assumes the line declares a structure instance with &quot;MOV&quot; being the label. At this point, MASM errors on trying to use reserved symbol &quot;MOV&quot; as a structure instance label.



RESOLUTION
This is the expected behavior of MASM.



Sample Code
; Assemble options needed: none

a_struc STRUC a DW ? a_struc ENDS

_TEXT SEGMENT 'CODE' ASSUME CS:_TEXT start: mov a_struc.a, ax   mov ax, 4C00h int 21h _TEXT ENDS

END start

Additional query words: 5.10 5.10a 6.00 6.00a 6.00b

Keywords: KB35128

-

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

© Microsoft Corporation. All rights reserved.