COMM Directive Produces Error If Count Field Not Specified

ID Number: Q74221

6.00 | 6.00

MS-DOS | OS/2

buglist6.00

Summary:

The Microsoft Macro Assembler (MASM) version 6.0 will produce a syntax

error when multiple variables (separated by commas) are listed

following a COMM directive if any variable, except the last one in the

list, does not have a count field specified.

More Information:

The sample code below illustrates this problem. MASM version 5.1 and

5.1a assemble the code without any errors. According to the BNF

Grammar in Appendix B of the "Microsoft Macro Assembler Programmer's

Guide," this should also assemble correctly with MASM version 6.0.

However, assembling sample code #1 with MASM 6.0 produces the

following error:

error A2008: syntax error: dec

When assembling sample code #2, MASM 6.0 produces this error:

error A2008: syntax error: inc

The following methods may be used to work around these problems:

1. Place the count field with each variable specified. For example:

COMM NEAR var1:word:1,var2:word:1,var3:word:3

-or-

2. Make multiple COMM statements. For example:

COMM NEAR var1:word

COMM NEAR var2:word

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

are researching this problem and will post new information here as it

becomes available.

Sample Code #1

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

; Assemble options needed: none

.model small

.data

COMM NEAR var1:WORD, var2:WORD ; This doesn't work

; COMM NEAR var1:WORD:1, var2:WORD ; This works

end

Sample Code #2

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

.model small

.data

COMM NEAR var1:WORD,

var2:WORD, var3:WORD ; This doesn't work

; COMM NEAR var1:WORD:1,

; var2:WORD:1, var3:WORD:1 ; This works

end