"Operand Expected" Error Message

ID Number: Q26796

5.00 5.10 5.10a | 5.10 5.10a

MS-DOS | OS/2

buglist5.00 buglist5.10 buglist5.10a fixlist6.00

Summary:

SYMPTOMS

The expression 'PUSH DWORD PTR OFFSET alabel' causes the Microsoft

Macro Assember (MASM) versions 5.0, 5.1, and 5.1a to generate the

error message:

error A2027: Operand expected

RESOLUTION

The line 'PUSH DWORD PTR (OFFSET alabel)' works correctly. Since

OFFSET is a unary operator, it should not require parentheses.

STATUS

Microsoft has confirmed this to be a problem in MASM versions 5.0,

5.1, and 5.1a. This problem was corrected in MASM version 6.0.

More Information:

It is important to note that the operating system that your program is

running on must be capable of supporting 32 bit code segments to be

able to run code in 32 bit segments. Most PC based operating systems

such as MS-DOS 5.0, Windows 3.0, and OS/2 1.x do not provide support

for 32 bit code segments. Newer operating systems and DOS extender

packages may provide this support.

Sample Code

-----------

; Assemble options needed: none

.MODEL small

.386

.STACK 1024

seg32 SEGMENT USE32

a32label DW 4321h

seg32 ENDS

.CODE

start:

;push DWORD PTR (OFFSET a32label) ;This is the MASM 5.0,

;5.1, and 5.1a workaround

push DWORD PTR OFFSET a32label

mov ax, 4C00h

int 21h

END start

Additional reference words: 6.00 6.00a 6.00b