Microsoft KB Archive/32811

= FIX: Wrong Opcode For Far Call from USE16 Seg to USE32 Seg =

Article ID: 32811

Article Last Modified on 11/17/2003

-

APPLIES TO


 * Microsoft Macro Assembler 5.1 Standard Edition

-



This article was previously published under Q32811



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: kbfix KB32811

-

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

© Microsoft Corporation. All rights reserved.