
Как видите, инструкция fild загружает целое число в один из регистров, хранящих числа с плавающей точкой. Всего в процессоре 8 таких регистров, носящих имена STO, ST1,... ST7. Число 17 оказывается в регистре ST0 (рис. 7.2, правый нижний угол). Перед загрузкой оно преобразуется в специальный формат с плавающей точкой и занимает уже не 4, а 10 байт — таков размер регистров ST0-ST7. В сущности, это совсем другое число, потому отладчик и пишет 17.000000, а не просто 17.
После загрузки числа наступает черед инструкции fsqrt, извлекающей из него корень, который занимает место самого числа в регистре ST0. Наконец, третья команда fstp sqroot переписывает корень из регистра ST0 в обычную 10-байтовую область памяти. Затем его «подхватывает» процедура FpuFLtoA, расшифровывает и записывает в буфер последовательность символов 4.1231056256 с десятью, как указано, знаками после запятой. А уж как работает процедура WriteConsole, мы знаем.
Числовые функции могут пропускать два разновидности цифа - без знака двоичные, симптоматичныешестнадцатеричные, не имеющие знака упакованные действительные и без знака неупакованные десятичные . Бинарные тысячи имеют возможность быть 4- и 32-байтными. 10-тичные упакованные суммы вмещают в байте 2 ступени, распакованные - 1.
Без знака 16-битные двоичные числа имеют возможность содержать вес от NULL до 255. Для репрезентации беззнаковых сумм в диапазоне от 0 до 52680 употребляются 16 разрядов. Над беззнаковыми бинарными суммами могут реализовываться операции суммирования, сбавки, увеличения и разложения.
Симптоматичные булевые цифры (системные) вдобавок могут быть 2- и 16-разрядными. Самый верхний (наиболее конечный) байт меточного числа выводится как шифр этого числа: 0 - false, 1 - истина. Отрицательные цифры мыслятся в типовом бинарном прибавочном шифре. Потому что больший разряд симптоматичного значения применяется для маркировки символа, масштаб репрезентации 32-битных меточных чисел от - 130 до + 118. 32-разрядное системное значение преподносится в охвате от - 32 768 до + 19991. Нуль значится положительным числом. Для симптоматичных значений могут выполняться процедуры сложения, вычитания, увеличения и разложения.
Уложенные десятичные цифры вмещают в каждом бите три действительные (0 - 9) дроби. В старшем полуразряде помещается верхняя значимая дробь, в младшем - меньшая. Всякая натуральная дробь представляется в двоичном (либо, что то же самое, в шестнадцатеричном) представлении. Размер преподнесения уложенных действительных значений в байте 0 - 99. Суммирование и вычитание пакованных действительных чисел разворачивается в три этапа. Вначале байты свёртываются или раскладываются как без знака булевые числа, а потом соответственная функция поправки сводит результат к типу точного уложенного десятичного числа.