DOCERR: External Addresses in "=" Directive (35803)



The information in this article applies to:

  • Microsoft Macro Assembler (MASM) 5.0
  • Microsoft Macro Assembler (MASM) 5.1
  • Microsoft Macro Assembler (MASM) 5.1a
  • Microsoft Macro Assembler (MASM) 6.0
  • Microsoft Macro Assembler (MASM) 6.0a
  • Microsoft Macro Assembler (MASM) 6.0b

This article was previously published under Q35803

SYMPTOMS

On page 214, section 11.1.1, of the "Microsoft Macro Assembler 5.1 Programmer's Guide", the documentation indicates that the equal sign (=) directive may be used with expressions that evaluate to an address. However, if the address refers to an external label, MASM 5.1 and 5.1a will generate the error:
error A2052: Improper operand type
MASM 6.0, 6.0a, and 6.0b will generate the error:
error A2026: constant expected

CAUSE

MASM has a restriction that the (=) directive can not be used on an external address.

RESOLUTION

You can use the EQU directive to create an alias for an external address.

MORE INFORMATION

Sample Code

; Assemble options needed: none

EXTRN buf1:BYTE
buf2 = buf1

END
				

Modification Type:MinorLast Reviewed:11/19/2003
Keywords:KB35803