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 ENDThe 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. |