Article: Q80120
Product(s): Microsoft Macro Assembler
Version(s): 6.0,6.0a,6.0b
Operating System(s):
Keyword(s):
Last Modified: 06-MAY-2001
-------------------------------------------------------------------------------
The information in this article applies to:
- Microsoft Macro Assembler (MASM), versions 6.0, 6.0a, 6.0b
-------------------------------------------------------------------------------
SYMPTOMS
========
The Microsoft Macro Assembler may incorrectly generate the following error:
A2032: invalid use of register
CAUSE
=====
This is demonstrated on lines eight and nine in the sample code below. The error
occurs because the LEA and MOV instructions on those lines use an equate and a
register as an address. In the example, table1 is equated to the value of the
location counter, "$", and the register is BP.
RESOLUTION
==========
To work around the problem, use the LABEL directive rather than an equate of the
current location counter.
STATUS
======
Microsoft has confirmed this to be a problem in MASM versions 6.0, 6.0a, and
6.0b. This problem was corrected in MASM for MS-DOS version 6.1.
MORE INFORMATION
================
The following sample code can be used to demonstrate the problem.
Sample Code
-----------
; Assemble options needed: none
code SEGMENT word public 'code'
ASSUME cs:code
table1 EQU $
;table1 LABEL word ; Use this line instead of previous one.
table2 DW 0
lea di, table1[bp] ; line 8
mov ax, table1[bp] ; line 9
code ENDS
END
Additional query words: 6.00 6.00a 6.00b buglist6.00 buglist6.00a buglist6.00b fixlist6.10
======================================================================
Keywords :
Technology : kbMASMsearch kbAudDeveloper kbMASM600 kbMASM600a kbMASM600b
Version : :6.0,6.0a,6.0b
Solution Type : kbfix
=============================================================================