вообщем начитался, и понял что если стек fpu переполнить, то он вызовет qnan в st0. Нужно за этим следить, чтобы он не переполнялся или сбрасывать командой finit.
для примера файл:
по умолчанию последний вызов fld переполнит стек, но если передним раскоментить finit, то все будет круто.