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




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

Работа с функциями АЛУ

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

Не имеющие знака 32-разрядные двоичные цифры имеют возможность содержать вес от нуля до трёхсот. Для представления беззнаковых цифир в диапазоне от NULL до 65535 используются 16 байт. Над не имеющими знака бинарными суммами имеют возможность реализовываться операции прибавления, вычитания, умножения и разложения.

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

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


назад далее