ID Number: Q26822
5.00 5.10 5.10a
MS-DOS
buglist5.00 buglist5.10 buglist5.10a fixlist6.00
Summary:
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.
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
More Information:
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.
Additional reference words: 5.00 5.10 5.10a 6.00