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

ID: Q60267


The information in this article applies to:
  • Microsoft Macro Assembler for MS-DOS, versions 5.1, 5.1a
  • Microsoft Macro Assembler for OS/2, versions 5.1, 5.1a


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 :
Version : :5.1,5.1a
Platform :
Issue type :


Last Reviewed: January 7, 2000
© 2000 Microsoft Corporation. All rights reserved. Terms of Use.