
Дополнительные 4 типа данных для сопроцессора:

1) fbld источник – загрузить десятичное число в стек. Преобразовывает BCD-число из источника (m80) и помещает в стек. Структура двоично-десятичных чисел такова: в первых девяти байтах (c нулевого по восьмой) хранится модуль BCD-числа. Каждые 4 бита BCD-числа содержат десятичную цифру (подобно двоично-десятичным командам ALU). Например, число 127 запишется так:
9-й байт 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000001 00100111
Число 327 запишется так:
9-й байт 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000011 00100111
Старший бит девятого байта хранит знак числа. Остальные биты девятого байта ни на что не влияют. Поэтому если старший бит в диапазоне от 0 до 127, то число положительное, а если старший бит в диапазоне от 128 до 255, то число отрицательное. Поэтому, например, если число записано так:
10001111 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 10001000, то это -88

2) fbstp приёмник – считать десятичное число из стека. Попытка записи слишком большого числа приводит к вылетанию программы (если IM=0)

3) fiadd источник – источником является m16|m32, содержащая целое число, приёмник – st(0)

4) (fisub, fisubr, fimul, fidiv, fidivr) источник – аналогично fiadd

5) ficom источник – сравнить целые числа
5) ficomp источник – сравнить целые числа и вытолкнуть из стека
Эти команды сравнивают содержимое регистра st(0) и источника (m16|m32), причём считается, что источник содержит целое число. Остальное аналогично fcom|fcomp

1) fcmovcc приёмник, источник – набор команд, каждая из которых копирует содержимое источника (регистр st(n) в приёмник (только st(0)), если выполняется необходимое условие. Реально каждое условие соответствует тем или иным значениям регистра flags:
| если равно | ||
| если не равно | ||
| если меньше | ||
| если меньше или равно | ||
| если не меньше | ||
| если не меньше или равно |
2) fcomi|fcomip источник – сравнивает и устанавливает flags. Выполняет сравнение регистра st(0) и источника (регистр st(i)), и устанавливает флаги. Работает быстрее, чем с помощью последовательности команд fcom|fcomp|fcompp, fstsw, sahf:
| st(0)>источник | ||
| st(0)<источник | ||
| st(0)=источник |

