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