MSM9112003: Incorrect Code Generated If Operand Is

ID Number: Q79159

6.00 | 6.00

MS-DOS | OS/2

buglist6.00 fixlist6.00a

Summary:

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

CODE32 SEGMENT PUBLIC USE32

main proc near

lea esi, [esp][esp] ; An error A2029 should be generated.

ret

main endp

CODE32 ENDS

.STACK 4

END

Additional reference words: 6.00