Q60267: FIX: Error A2057 With DOS.INC, .386, and MASM 5.1 or 5.1a
Article: Q60267
Product(s): Microsoft Macro Assembler
Version(s): 5.1,5.1a
Operating System(s):
Keyword(s):
Last Modified: 06-MAY-2001
-------------------------------------------------------------------------------
The information in this article applies to:
- Microsoft Macro Assembler (MASM), 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 :
Technology : kbMASMsearch kbAudDeveloper kbMASM510 kbMASM510a
Version : :5.1,5.1a
Solution Type : kbfix
=============================================================================
THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.
Copyright Microsoft Corporation 1986-2002.