Сравнение в 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?

0 ответов

Другие вопросы по тегам