FIX: Relational Operators Evaluate to Wrong ValueLast reviewed: September 10, 1997Article ID: Q26822 |
|
5.00 5.10 5.10a
MS-DOS
kbtool kbfixlist kbbuglist
The information in this article applies to:
SYMPTOMSWhen 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.
STATUSMicrosoft 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.
MORE INFORMATIONThe following demonstrates this problem with MASM 5.0:
Sample Code
.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 reference words: 5.00 5.10 5.10a buglist5.00 buglist5.10 5.10a
© 1998 Microsoft Corporation. All rights reserved. Terms of Use. |