Microsoft KB Archive/26822

= FIX: Relational Operators Evaluate to Wrong Value =

Article ID: 26822

Article Last Modified on 10/29/2003

-

APPLIES TO


 * Microsoft Macro Assembler 5.0
 * Microsoft Macro Assembler 5.1 Standard Edition
 * Microsoft Macro Assembler 5.1a

-



This article was previously published under Q26822



SYMPTOMS
When used with a MOV instruction, some relational operators will evaluate to the wrong value. The following listing file sections are examples of this problem. It is important to note that FFFF = true, and 0000 = false. It is also important to note that when FFFFh is used with the GT, GE, or LT, LE operator, it is interpreted as the largest positive number and not as -1.



STATUS
Microsoft has confirmed this to be a problem in Microsoft Macro Assembler (MASM) version 5.0, 5.1, and 5.1a. This problem was corrected in MASM version 6.0.



Sample Code
The following demonstrates this problem with MASM 5.0: .MODEL SMALL 0000  .CODE 0000  B8 0000    MOV AX, 0FFFFH GT -1 0003  B8 FFFF    MOV AX, 0FFFFH LE -1 0006

.386             .MODEL SMALL 0000  .CODE 0000  66 | B8 FFFF   MOV AX, -1 GE 0FFFFFFFFH 0004  66 | B8 FFFF   MOV AX, 0FFFFFFFFH LE -1 0008  66 | B8 0000   MOV AX, 0FFFFFFFFH GT -1 000C  66 | B8 0000   MOV AX, -1 LT 0FFFFFFFFH 0010  END The following demonstrates the problem MASM 5.1: .MODEL SMALL 0000  .CODE 0000  B8 0000    MOV AX, 0FFFFH GT -1 0003  B8 FFFF    MOV AX, 0FFFFH LE -1 0006

.386             .MODEL SMALL 0000  .CODE 0000  66 | B8 FFFF   MOV AX, -1 GE 0FFFFFFFFH 0004  66 | B8 0000   MOV AX, 0FFFFFFFFH LE -1 0008  66 | B8 FFFF   MOV AX, 0FFFFFFFFH GT -1 000C  66 | B8 0000   MOV AX, -1 LT 0FFFFFFFFH 0010  END

Additional query words: 5.00 5.10 5.10a buglist5.00 buglist5.10 fixlist6.00

Keywords: kbfix KB26822

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.