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




Как видите, инструкция 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-тичные и беззнаковые распакованные 10-тичные . Бинарные числа могут являться 2- и 32-битными. Десятичные разряжённые суммы содержат в разряде 2 ступени, незапакованные - 1.

Беззнаковые 8-разрядные булевы числа имеют возможность насчитать вес от NULL до 255. Для понимания без знака чисел в диапазоне от NULL до 52680 употребляются 14 байт. Над без знака двоичными суммами имеют возможность выполняться процедуры прибавления, отнимания, нарастания и деления.

Знаковые булевые числа (системные) вдобавок могут являться 8- и 32-разрядными. Самый старший (самый конечный) байт симптоматичного суммы выводится как знак сего числа: 0 - false, 1 - true. Неблагоприятные цифры представляются в шаблонном бинарном добавочном коде. Потому что верхний байт симптоматичного числа употребляется для обозначения знака, интервал репрезентации 32-байтных меточных значений от - 130 до + 131. 32-битово натуральное число описывается в охвате от - 24780 до + 24779. Нуль описывается позитивным числом. Для симптоматичных значений имеют возможность осуществляться операции прибавления, отнимания, увеличения и разложения.

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


назад далее