Article: Q32811
Product(s): Microsoft Macro Assembler
Version(s): 5.1
Operating System(s):
Keyword(s):
Last Modified: 04-MAY-2001
-------------------------------------------------------------------------------
The information in this article applies to:
- Microsoft Macro Assembler (MASM), version 5.1
-------------------------------------------------------------------------------
SYMPTOMS
========
MASM will generate both an address-size and operand-size override for a far call
from a USE16 segment to a USE32 segment. Only the operand-size override is
necessary.
STATUS
======
Microsoft has confirmed this to be a problem in Version 5.10. This problem was
corrected in MASM version 5.10a.
MORE INFORMATION
================
The address-size prefix is 67h and the operand-size prefix is 66h.
The following sample code demonstrates the problem:
Sample Code
-----------
;Assemble options needed: none
.386
s32 SEGMENT USE32
assume cs:@CurSeg
p PROC
p ENDP
s32 ENDS
s16 segment USE16
assume cs:@CurSeg
CALL far ptr p
s16 ENDS
END
The opcode generated for the far call by MASM 5.1 is as follows
67| 66| 9A 00000000
The correct opcode (generated by MASM 5.10a) is as follows
66| 9A 00000000
Additional query words: 5.10 buglist5.10 fixlist5.10a
======================================================================
Keywords :
Technology : kbMASMsearch kbAudDeveloper kbMASM510
Version : :5.1
Solution Type : kbfix
=============================================================================