MSM9109005: IVOKE May Cause Incorrect Line Information

ID Number: Q76725

6.00 | 6.00

MS-DOS | OS/2

buglist6.00 fixlist6.00a

Summary:

PROBLEM ID: MSM9109005

SYMPTOMS

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

information that does not match the assembled code. When the

parameters on an INVOKE statement are listed on more that one

source line, line number information after the INVOKE might not

match the assembled code. Incorrect line information will cause the

assembler to show errors on the wrong lines. It also causes the

CodeView debugger to appear to execute blank lines, comments, or

wrong lines. In addition, it can cause problems setting breakpoints

in CodeView.

RESOLUTION

To avoid this problem, put all of the parameters of an INVOKE call

on the same line in the source code.

STATUS

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

This problem was corrected in MASM version 6.0a.

More Information:

When the following sample code is run using CodeView, the debugger

will appear to execute the wrong lines.

Sample Code

-----------

; Assemble options needed: /Zi

.model small, c, os_dos

.stack

.data

Saaz dw 1234h, 17h

Hallertauer dq 0

.code

hops PROC FAR C USES ax si di, boiling:ptr, finishing:ptr

mov si,boiling

mov di,finishing

mov ax,[si]

mov [di],ax

mov ax,[si+2]

mov [di+2],ax

ret

hops endp

.STARTUP

mov ax,ds

mov es,ax

INVOKE hops,

offset Saaz,

offset Hallertauer ;CodeView appears to execute mov ax, Saaz here

;and mov bx, Saaz+2 on this line.

mov ax, Saaz

mov bx, Saaz+2

.EXIT

end

Additional reference words: 6.00