Article: Q85509
Product(s): Microsoft Macro Assembler
Version(s): MS-DOS:6.0a,6.0b
Operating System(s):
Keyword(s):
Last Modified: 06-MAY-2001
-------------------------------------------------------------------------------
The information in this article applies to:
- Microsoft Macro Assembler (MASM), versions 6.0a, 6.0b
-------------------------------------------------------------------------------
SYMPTOMS
========
In 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.
RESOLUTION
==========
The 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.
STATUS
======
Microsoft 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 0
finish 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 query words: 6.00a 6.00b buglist6.00a buglist6.00b fixlist6.10
======================================================================
Keywords :
Technology : kbMASMsearch kbAudDeveloper kbMASM600a kbMASM600b
Version : MS-DOS:6.0a,6.0b
Solution Type : kbfix
=============================================================================