MSM9201004: MASM 6.0 May Incorrectly Generate A4000 for CMP

ID Number: Q79821

6.00 | 6.00

MS-DOS | OS/2

buglist6.00 fixlist6.00a

Summary:

PROBLEM ID: MSM9201004

SYMPTOMS

Microsoft Macro Assembler (MASM) version 6.0 will incorrectly

generate the following error when the sample code below is

assembled:

A4000: cannot modify READONLY segment

CAUSE

This problem occurs because the segment is tagged as READONLY, and

MASM treats the CMP instruction as if it modifies memory. This is

incorrect behavior because the CMP instruction does not modify any

memory.

RESOLUTION

To work around this problem, either remove the READONLY tag from

the segment or ignore the warning when it is generated for CMP

instructions.

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 reproduces the problem.

Sample Code

-----------

; Assemble options needed: none

code SEGMENT word public readonly 'code'

ASSUME cs:code

cmp word ptr cs:[di], 0

code ENDS

END

Additional reference words: 6.00