ID Number: Q32811
5.10 | 5.10
MS-DOS | OS/2
buglist5.10 fixlist5.10a
Summary:
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