Команды сравнения - часть 2
0000 9B D8 D1 FCOM
0003 9B D8 D2 FCOM ST(2)
0006 9B DE 16 0000 R FICOM WORD_INTEGER
000B 9B D8 16 0000 R FCOM SHORT_REAL
0010 9B D8 D9 FCOMP
0013 9B DA 1E 0000 R FICOMP SHORT_INTEGER
0018 9B DC 1E 0000 R FCOMP LONG_REAL
001D 9B DE D9 FCOMPP
0020 9B D9 E4 FTST
0023 9B D9 E5 FXAM
0026 CODE ENDS
END
Фиг. 7.18 Команды сравнения сопроцессора 8087
Сопроцессор 8087 помещает флаги состояния C3 и C0 в точности на те
же места, которые в регистре флагов микропроцессора 8088 занимают
флаги нуля C3 и переноса C0. Как показано на рисунке, если
программа переслала старший байт слова состояния сопроцессора 8087
в регистр флагов микропроцессора 8088, она может выполнить условный
переход с помощью непосредственной проверки состояния флагов с
использованием команды условного перехода, и не нужно выделять и
проверять отдельные биты слова состояния.
С3 С0 Порядок
--------------------------------------------------------------
0 0 ST > источник
0 1 ST < источник
1 0 ST = источник
1 1 ST и источник несравнимы
--------------------------------------------------------------
Фиг. 7.19 Порядок сравнения
На Фиг. 7.18 демонстрируется, что существуют и другие варианты
команды FCOM, в том числе и то, что для команды FCOM существует
версия FICOM необходимая для ставнения целых чисел. Команды FCOMP
и FICOMP идентичны командам FCOM и FICOM, за исключением того, что
сопроцессор 8087 извлекает из стека содержимое вершины после
выполнения операции. Это позволяет сравнить два числа с помощью
Содержание Назад Вперед