MSM9107010: ORG Following ORG Statement with $ May Fail in 6.0

ID Number: Q74746

6.00 | 6.00

MS-DOS | OS/2

buglist6.00 fixlist6.00a

Summary:

SYMPTOMS

The Microsoft Macro Assembler (MASM) version 6.0 may generate an

incorrect offset when using the ORG directive following a previous

ORG statement that uses the current-address operator ($). For

example, incorrect code will be generated if the statement "ORG

$+1" is placed anywhere before another ORG statement.

STATUS

Microsoft has confirmed this to be a problem in MASM version 6.0.

This problem was corrected in MASM version 6.0a.

More Information:

The sample code below demonstrates this problem. You can see in the

source listing that the label "wrongoffset" has an incorrect offset.

Instead of having an offset of 200h, wrongoffset is placed at offset

304h, which is 104h plus the 200h specified in the last ORG statement.

Rather than assigning the location to 200h, the assembler added 200h

to the current location.

Sample Code

-----------

; Assemble options needed: none

_text SEGMENT

one BYTE ?

ORG 100h

two BYTE ?

ORG $+2

three BYTE ?

ORG 200h

wrongoffset LABEL word

_text ENDS

END

Source Listing

--------------

0000 _text SEGMENT

0000 00 one BYTE ?

ORG 100h

0100 00 two BYTE ?

ORG $+2

0103 00 three BYTE ?

ORG 200h

0304 wrongoffset LABEL word

0304 _text ENDS

END