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




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

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

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

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


назад далее