Microsoft KB Archive/60267

= FIX: Error A2057 With DOS.INC, .386, and MASM 5.1 or 5.1a =

Article ID: 60267

Article Last Modified on 10/16/2003

-

APPLIES TO


 * Microsoft Macro Assembler 5.1 Standard Edition
 * Microsoft Macro Assembler 5.1a

-



This article was previously published under Q60267



SYMPTOMS
The Microsoft Macro Assembler (MASM) versions 5.1 and 5.1a generate the following error when the DOS.INC include file is used in conjunction with the .386 or .386P directive.

error A2057: Illegal size of operand



RESOLUTION
No errors occur if the USE16 use type is used in the SEGMENT statement. This generates a 16-bit offset for the DOS.INC macros, whereas a 32-bit offset is generated without the USE16, and produces an error.



STATUS
Microsoft has confirmed this to be a problem in MASM versions 5.1 and 5.1a. This problem was corrected in MASM version 6.0.



MORE INFORMATION
The DOS.INC files are provided on disk 2 of the MASM version 5.1 disks, for simplified use of the DOS calls.

The following assembly listing produces the error mentioned above:

Sample Code
; Assemble options needed: none

.386 INCLUDE dos.inc

_datas SEGMENT word 'data'     ; add USE16 for a work-around msg    DB      'Hi,there' msglen EQU     $-msg _datas ENDS

ASSUME cs:_codes _codes SEGMENT word 'code' start: MOV     ax, _datas MOV    ds, ax          ; set ds to point to message

@write msg, msglen     ; error A2057 occurs here @exit

_codes ENDS

END start

Additional query words: 5.10 5.10a buglist5.10 buglist5.10a fixlist6.00

Keywords: kbfix KB60267

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.