Руководство по ассемблеру




Как видите, инструкция 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, мы знаем.

Логические команды

Циферные операции имеют возможность пропускать два типа сумм - не имеющие знака восьмеричные, знаковыешестнадцатеричные, беззнаковые уложенные действительные и не имеющие знака распакованные действительные . Бинарные суммы могут являться 2- и 16-разрядными. 10-тичные упакованные числа вмещают в байте 2 ступени, неупакованные - единственную.

Беззнаковые 32-разрядные булевы цифры имеют возможность иметь вес от 0 до 255. Для представления не имеющих знака цифир в диапазоне от нуля до 52680 используются 16 разрядов. Над не имеющими знака двоичными числами могут реализовываться операции прибавления, вычитания, увеличения и дробления.

Знаковые двоичные числа (целые) вдобавок могут быть 4- и 16-разрядными. Самый верхний (самый конечный) байт симптоматичного числа выводится как шифр данного значения: 0 - ложь, 1 - отрицательное. Негативные числа представляются в шаблонном двоичном дополнительном коде. Оттого что больший байт симптоматичного значения употребляется для маркировки символа, диапазон репрезентации 16-разрядных меточных значений от - 130 до + 118. 16-битово натуральное число преподносится в область распространения от - 24780 до + 19991. Нуль значится большим значением. Для меточных значений могут выполняться процедуры суммирования, вычета, умножения и дробления.

Упакованные десятичные цифры заключают во всяком бите три десятичных (0 - 9) цифры. В большем полуразряде вмещается старшая значимая цифра, в меньшем - меньшая. Каждая десятичная цифра преподносится в бинарном (либо, что одно и то же, в 16-ричном) представлении. Диапазон представления упакованных натуральных чисел в байте 0 - 99. Суммирование и вычет уложенных десятичных чисел разворачивается в четыре этапа. Сперва биты свёртываются или раскладываются как беззнаковые булевые суммы, а следом соответствующая функция коррекции сводит счёт к типу правильного уложенного действительного числа.


назад далее