Сравнение в x87 FPU
Я работаю над проектом MASM32, используя набор команд x87. Я хочу сравнить два числа с плавающей запятой и распечатать сообщение о результате сравнения. Моя программа:
.386
.model flat, stdcall
option casemap :none
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
include \masm32\include\user32.inc
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\user32.lib
include c:\masm32\include\masm32rt.inc
.data
_a DD ?
_b DD ?
FP_11_ DD 11.
FP_10_ DD 10.
.code
start:
MOV ebx, FP_10_
MOV _a, ebx
FLD _a
FCOM FP_11_
fstsw ax
sahf
JGE label5
print "less", 13, 10, 0
JMP label6
label5:
print "greater", 13, 10, 0
label6:
jmp end_program
end_program:
invoke ExitProcess, 0
end start
Ожидаемый результат "меньше", но я получаю "больше". Итак, мой вопрос: как я могу правильно сравнить два числа FP по <=
, >=
, <
, >
, ==
а также <>
используя инструкции x87?