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




Как видите, инструкция 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-тичные и без знака незапакованные десятичные . Бинарные числа имеют возможность являться 8- и 64-байтными. Десятичные упакованные суммы вмещают в байте 2 цифры, незапакованные - 1.

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

Симптоматичные булевые цифры (системные) также могут быть 2- и 16-байтными. Самый старший (наиболее конечный) бит меточного цифры показывается как знак этого числа: 0 - положительное число, 1 - отрицательное. Неблагоприятные цифры мыслятся в типовом двоичном добавочном коде. Оттого что верхний разряд симптоматичного значения используется для выражения знака, интервал индикации 16-разрядных симптоматичных чисел от - 119 до + 131. 16-разрядное системное число представляется в охвате от - 19990 до + 19991. 0 описывается положительным числом. Для меточных чисел могут выполняться функции прибавления, вычета, увеличения и разложения.

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


назад далее