Microsoft KB Archive/67760

= FIX: Bad Object File Generated with MASM 5.1 and 5.1a =

Article ID: 67760

Article Last Modified on 10/17/2003

-

APPLIES TO


 * Microsoft Macro Assembler 5.1 Standard Edition
 * Microsoft Macro Assembler 5.1a

-



This article was previously published under Q67760



SYMPTOMS
The following mixed-language program does not assemble properly under the Microsoft Macro Assembler (MASM) version 5.1 and 5.1a.



CAUSE
The assembler does not generate the correct .OBJ record for the linker to resolve the reference properly. When the .EXE is built, the _test variable is located in the NULL segment instead of the _DATA segment; therefore, instead of the residing 1 byte apart, they are actually 42h bytes apart.



RESOLUTION
Removing the ASSUME statements from the assembly code eliminates the problem. These ASSUME statements are not necessary.



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.



Sample Code #1
; Assemble options needed: none

.model small, c

.data ASSUME ds: nothing PUBLIC xxx xxx   DB 1 ASSUME ds: @data PUBLIC yyy yyy   DB 2

.code PUBLIC func func  PROC MOV ax, OFFSET yyy SUB ax, OFFSET xxx RET func  ENDP

END

Sample Code #2
/* Compile options needed: none

extern char xxx; extern char yyy;
 * 1) include 

void main {  printf( &quot;C distance of yyy - xxx = %X\n&quot;, &yyy - &xxx ); printf( &quot;MASM distance of yyy - xxx = %X\n&quot;, func ); }

Additional query words: 5.10 5.10a 6.00 buglist5.10 buglist5.10a fixlist6.00

Keywords: kbfix KB67760

-

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

© Microsoft Corporation. All rights reserved.