Article: Q79286
Product(s): Microsoft Macro Assembler
Version(s): 6.0,6.0a,6.0b
Operating System(s):
Keyword(s):
Last Modified: 06-MAY-2001
-------------------------------------------------------------------------------
The information in this article applies to:
- Microsoft Macro Assembler (MASM), versions 6.0, 6.0a, 6.0b
-------------------------------------------------------------------------------
SYMPTOMS
========
If the NOT operator is used more than once in an expression in the Microsoft
Macro Assembler (MASM), an incorrect value may be generated. For example:
mov ax, not(not 0Fh)
incorrectly generates:
mov ax, FFF1h
RESOLUTION
==========
To work around this, avoid using consecutive NOT operators. Using two NOT
operators is equivalent to using none.
STATUS
======
Microsoft has confirmed this to be a problem in MASM versions 6.0, 6.0a, and
6.0b. This problem was corrected in MASM for MS-DOS version 6.1.
MORE INFORMATION
================
Since the NOT operator should perform a bitwise or logical NOT operation, two
consecutive NOTs should produce the original number. The sample code below
demonstrates the problem.
Sample Code
-----------
; Assemble options needed: none
.MODEL small
.STACK 4096
.CODE
.startup
mov ax, not(not 0fh)
.exit 0
END
Additional query words: 6.00 6.00a 6.00b buglist6.00 buglist6.00a buglist6.00b fixlist6.10
======================================================================
Keywords :
Technology : kbMASMsearch kbAudDeveloper kbMASM600 kbMASM600a kbMASM600b
Version : :6.0,6.0a,6.0b
Solution Type : kbfix
=============================================================================