FIX: ORG Calculated from Label May Fail in 6.0a/6.0bLast reviewed: September 16, 1997Article ID: Q85509 |
6.00a 6.00b | 6.00a 6.00b
MS-DOS | OS/2kbtool kbfixlist kbbuglist The information in this article applies to:
SYMPTOMSIn Microsoft Macro Assembler (MASM) versions 6.0a and 6.0b, if the expression for an ORG directive is calculated from a label, the ORG directive will not give the correct results. The origin set by the ORG directive will be off by the value of the current location counter ($) prior to the ORG directive.
RESOLUTIONThe sample code below demonstrates a macro that can be used to correct the behavior of ORG. This macro should be used only if the expression being supplied to ORG was calculated using a label. If the expression being supplied to ORG was not calculated using any labels, the ORG directive should work correctly. This macro works correctly only under MASM versions 6.0a and 6.0b.
STATUSMicrosoft has confirmed this to be a problem in MASM versions 6.0a, and 6.0b. This problem was corrected in MASM for MS-DOS version 6.1.
MORE INFORMATION
Sample Code; Assemble options needed: none
ORGFIX MACRO arg1 ; This macro can be used ORG (arg1- ($- @CurSeg)) ; whenever the origin you are ENDM ; trying to set contains a LABEL ; or $ as part of the expression..MODEL small .STACK 4096 .CODE start LABEL BYTE .startup .exit 0finish LABEL BYTE
ORG ((finish- start)+ 10h) ; This will incorrectly set tst1 LABEL BYTE ; the origin.ORGFIX ((finish- start)+ 10h) ; This will correctly set tst2 LABEL BYTE ; the origin. DB 'hello'END
|
Additional reference words: 6.00a 6.00b buglist6.00a buglist6.00b
© 1998 Microsoft Corporation. All rights reserved. Terms of Use. |