FIX: Bad Object File Generated with MASM 5.1 and 5.1aLast reviewed: September 11, 1997Article ID: Q67760 |
5.10 5.10a | 5.10 5.10a
MS-DOS | OS/2kbtool kbfixlist kbbuglist The information in this article applies to:
SYMPTOMSThe following mixed-language program does not assemble properly under the Microsoft Macro Assembler (MASM) version 5.1 and 5.1a.
CAUSEThe 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.
RESOLUTIONRemoving the ASSUME statements from the assembly code eliminates the problem. These ASSUME statements are not necessary.
STATUSMicrosoft 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
Sample Code #1; Assemble options needed: none
.model small, c .data ASSUME ds: nothingPUBLIC xxx xxx DB 1 ASSUME ds: @dataPUBLIC yyy yyy DB 2
.codePUBLIC func func PROC MOV ax, OFFSET yyy SUB ax, OFFSET xxx RETfunc ENDP
END Sample Code #2
/* Compile options needed: none */ #include <stdio.h>extern char xxx; extern char yyy;
void main (){ printf( "C distance of yyy - xxx = %X\n", &yyy - &xxx ); printf( "MASM distance of yyy - xxx = %X\n", func () );}
|
Additional reference words: 5.10 5.10a 6.00 buglist5.10 buglist5.10a
© 1998 Microsoft Corporation. All rights reserved. Terms of Use. |