"Оптимизация для PENTIUM процессора" - читать интересную книгу автора

если ваша программа будет запускаться на процессорах Pentium или более
современных. Я протестировал другие Intel процессоры и ни на каком не было
никаких проблем при опускании WAIT на любых 32 битных, хотя Intel утверждает,
что там WAIT необходим, за исключением FNSTSW и FNSTCW. Если вы хотите быть
уверенным, что бы ваш код работал на любом 32 битном процессоре (в том числе
и не Intel), то я рекомендую устанавливать WAIT, для безопасности.

Относительно в:
Ассемблер автоматически вставляет WAIT перед следующими инструкциями:
FCLEX, FINIT, FSAVE, FSTCW, FSTENV, FSTSW
Вы можете опускать WAIT используя FCLEX, мои тесты показывают, что
использование WAIT не необходимо, поскольку здесь и без WAIT будет
генерироваться прерывание, за исключением FNCLEX и FNINIT на 80387. (есть
некоторая несовместимость инструкции IRET и последующих инструкций FN..).

Почти все другие инструкции с генерируют прерывание, если предыдущая инструкция
размаскировала бит прерывания, так что прерывание рано или поздно произойдет
в любом случае.

Вам потребуется WAIT, если вы хотите узнать, где точно произошло исключение.
Рассмотрим например б.3: Если вы хотите получить возможность
восстанавливаться из исключения генерируемого FLD, то вам потребуется WAIT,
поскольку для ADD ESP,4 величина должна быть загружена.

17.11 FCOM + FSTSW AX
---------------------
Обычный путь сравнения чисел с плавающей точкой это:
FLD [a]
FCOMP [b]
FSTSW AX
SAHF
JB ASmallerThanB

Вы можете улучшить этот код, используя FNSTSW AX вместо FSTSW AX и тестируя
AH непосредственно, вместо использования неспариваемой SAHF.
(У TASM версии 3.0 есть баг инструкции FNSTSW AX)

FLD [a]
FCOMP [b]
FNSTSW AX
SHR AH,1
JC ASmallerThanB

Тестируем на ноль или равенство:

FTST
FNSTSW AX
AND AH,40H
JNZ IsZero ; (флаг нуля(ZF) инвертирован!)