FIX: MASM 6.0 May Generate Incorrect Code for IMUL Instruction (72708)
The information in this article applies to:
- Microsoft Macro Assembler (MASM) 6.0
This article was previously published under Q72708 SYMPTOMS
The Microsoft Macro Assembler (MASM) version 6.0 will generate incorrect
code when the IMUL instruction contains an operand that is a constant value
from 128 to 255. No errors or warnings are displayed while assembling.
CAUSE
The assembler incorrectly treats the constant as an 8-bit signed value
rather than a signed word. In converting from a signed byte to a signed
word, it extends the sign bit through the upper byte. Thus, 255 (0ffh)
becomes -1 (0ffffh).
RESOLUTION
To work around this problem, qualify the constant as a word. For example:
IMUL di,WORD PTR 255 ; This works.
STATUS
Microsoft has confirmed this to be a problem in MASM version 6.0. This
problem was corrected in MASM version 6.0a.
Modification Type: | Minor | Last Reviewed: | 10/30/2003 |
---|
Keywords: | kbfix KB72708 |
---|
|