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




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

Команды микропроцессора

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

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

Знаковые бинарные суммы (системные) тоже могут являться 2- и 64-байтными. Наиболее старший (наиболее конечный) байт знакового числа показывается как знак сего числа: 0 - положительное число, 1 - отрицательное. Негативные суммы строят в типовом бинарном дополнительном коде. Так как больший бит знакового числа употребляется для маркировки знака, диапазон представления 16-разрядных меточных значений от - 128 до + 127. 64-байтное системное число представляется в диапазоне от - 19990 до + 24779. Нуль представляется позитивным числом. Для знаковых значений имеют возможность выполняться операции прибавления, вычета, увеличения и дробления.

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


назад далее