MSM9112002:A2029 Incorrectly Generated If Operand =

ID Number: Q79067

6.00 | 6.00

MS-DOS | OS/2

buglist6.00 fixlist6.00a

Summary:

PROBLEM ID: MSM9112002

SYMPTOMS

With the Microsoft Macro Assembler (MASM) 6.0, the following error

is generated incorrectly for instructions using the operand

[ebx][ebx]:

error A2029 : multiple base registers not allowed

For example:

lea esi, [ebx][ebx]

mov esi, [ebx][ebx]

CAUSE

The operand [ebx][ebx] is available only when using the .386 or

.486 directives.

RESOLUTION

A workaround for this problem is to embed the opcode for the

instruction directly in the code. The sample code below demonstrates

this method.

STATUS

Microsoft has confirmed this to be a problem in MASM version 6.0.

This problem has been corrected in MASM version 6.0a.

More Information:

Error A2029 will be incorrectly generated for the following program.

The code that should be generated for lea esi [ebx][ebx] is 8D 34 1B.

Sample Code

-----------

; Assembler options needed none

.386

.MODEL FLAT

CODE32 SEGMENT PUBLIC USE32

main proc near

lea esi, [ebx][ebx] ; Replace this by BYTE 8Dh, 34h, 1Bh

ret

main endp

CODE32 ENDS

.STACK 4

END

Additional reference words: 6.00