Article: Q79159
Product(s): Microsoft Macro Assembler
Version(s): 6.0
Operating System(s):
Keyword(s):
Last Modified: 04-MAY-2001
-------------------------------------------------------------------------------
The information in this article applies to:
- Microsoft Macro Assembler (MASM), version 6.0
-------------------------------------------------------------------------------
SYMPTOMS
========
In the Microsoft Macro Assembler (MASM) version 6.0, incorrect code is generated
for instructions using operand [esp][esp], such as the following instructions:
lea esi, [esp][esp]
mov esi, [esp][esp]
CAUSE
=====
The operand [esp][esp] is not supported in the Intel instruction set. An error
such as:
error A2029 : multiple base registers not allowed
should have been generated by the assembler.
STATUS
======
Microsoft has confirmed this to be a problem in MASM version 6.0. This problem
was corrected in MASM version 6.0a.
MORE INFORMATION
================
A listing file from the following program will show that the instruction lea
esi, [esp][esp] is encoded as 8D 34 24. This is incorrect.
Sample Code
-----------
; Assembler options needed: none
.386
.MODEL flat
.STACK 4096
CODE32 SEGMENT PUBLIC USE32
main PROC near
lea esi, [esp][esp] ; An error A2029 should be generated.
ret
main ENDP
CODE32 ENDS
END
Additional query words: 6.00 buglist6.00 fixlist6.00a
======================================================================
Keywords :
Technology : kbMASMsearch kbAudDeveloper kbMASM600
Version : :6.0
Solution Type : kbfix
=============================================================================