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
=============================================================================