FIX: .IF with Multiple Tests Adds a JMP Instruction

ID: Q120067


The information in this article applies to:
  • Microsoft Macro Assembler (MASM) for MS-DOS, version 6.1


SYMPTOMS

If two or more values known at assembly time evaluate as TRUE, .IF (below) will add a JMP instruction. In this first example, only the NOP is assembled:


   .IF 1
      nop
   .ENDIF 
In this second example, a JMP instruction is added:

   .IF 1 || 3
      nop
   .ENDIF 
If you use a register, as in this third example, the result is a conditional JMP to the location following the .IF:

   .IF ax || 3
      nop
   .ENDIF 
The code runs as expected, despite the extra instructions.


RESOLUTION

To eliminate the extra generated code, replace the "||" with an "OR".


STATUS

Microsoft has confirmed this to be a bug in MASM version 6.1. This problem was corrected in MASM version 6.11.

Additional query words: 6.10 buglist6.10 fixlist6.11

Keywords :
Version : :6.1
Platform :
Issue type :


Last Reviewed: January 6, 2000
© 2000 Microsoft Corporation. All rights reserved. Terms of Use.