Модуль с плавающей точкой (FPU) поддерживает работу с 80-битными упакованными целыми двоично-десятичными числами со знаком. В этом типе данных можно записать число, имеющее до 18 десятичных цифр. Почему не 20, ведь имеется десять байт? Дело в том, что старший байт целиком отводится для хранения знака, который хранится в в старшем бите этого байта.
Существует два способа представления вещественных данных в форме с фиксированной и с плавающей точкой.
Первый способ представления предполагает, что под число с дробной частью, записанное в двоичной системе счисления, например, один байт отводится под представление целой части числа и его знака и один байт под представление его дробной части. Другими словами, предполагается, что точка, разделяющая целую и дробную части числа всегда находится в одном и том же месте – между байтами отведенными под их представление.
Значения, которые могут быть представлены таким образом, будет попадать на отрезок значений от двоичного кода +1111111.11111111 = 127.9960937510, до двоичного кода –1111111.11111111 = -127.9960937510.
Второй способ представления предполагает, что двоичное представление числа с дробной частью приводится к нормализованному виду m*10k, такому, что 12£|m|<102. Так, например, (1/3)10 = 0.01010101012 = (1.01010101*10-10)2. Величину m принято называть мантиссой числа, а значение k - его порядком.
Поскольку мантисса всегда начинается с единицы, хранить её в памяти машины нет необходимости, а хранению подлежат знак числа, знак порядка, порядок, и дробная часть мантиссы.
Проведем сравнение с первым способом представления вещественных чисел. Предположим, что под знак числа отводится 15-й бит, под знак порядка и порядок – биты с 14 по10, а оставшиеся биты с 0 по 9 под мантиссу, то интервал представления будет от (+1.1111111111*10+1111)2 до (-1.1111111111*10+1111)2 или от (+2047*25)10 до –6550410.
На самом деле архитектура рассматриваемых нами машин предполагает существование трех форматов представления чисел с плавающей точкой: короткое вещественное (длиной 4 байта), длинное вещественное (длиной 8 байт) и расширенное вещественное (длиной 10 байт). При этом выделенная под представление числа память имеет следующую структуру:
Вещественное |
Знак числа |
Порядок |
Смещение |
Мантисса |
Директива |
Короткое |
31 |
30-23 |
127 |
22-0 |
dd |
Длинное |
63 |
62-52 |
1023 |
51-0 |
dq |
Расширенное |
79 |
78-64 |
16383 |
63-0 |
dt |
Знак числа стандартный: равен 0, если число положительное, или 1 – если число отрицательное. Дополнительный код для записи отрицательной мантиссы не используется. Порядок представляется положительным числом, поэтому нулевому порядку соответствует значение приведенного в таблице смещения.
Использование формата с плавающей точкой приводит к появлению специальных численных значений и даже не чисел, которые рассмотрены в разделе, посвященном работе математического сопроцессора.
Указатели это переменные, хранящие адреса. Указатели могут быть ближними (внутрисегментными) и внешними (межсегментными). В реальном режиме работы процессора ближний указатель занимает 16 бит и хранит смещение в байтах от начала сегмента, а дальний указатель занимает 32 бита и хранит полный логический адрес (сегмент (16 бит): смещение (16 бит)). В защищенном режиме работы процессора ближний указатель занимает 32 бита и хранит смещение в байтах от начала сегмента, а дальний указатель занимает 48 бит и хранит логический адрес в виде (селектор (16 бит) : смещение (32 бита)).
Битовое поле – является непрерывной последовательностью бит, в которой каждый бит является независимым и может рассматриваться как отдельная переменная. Битовое поле может начинаться с любого бита любого байта и содержать до 32 битов.
Строки это непрерывные последовательности бит, байт, слов или двойных слов. Битовые строки могут начинаться с любого бита и могут содержать до 232 - 1 бит. Байтовые строки содержат байты, слова или двойные слова и быть длиной от 0 до 232 - 1 байт.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.