Основными типами
данных являются байты, слова и двойные слова (смотри Рис. 6). Байт образуют
восемь соседних битов, которые нумеруются с 0 до 7, причем бит 0 является самым
младшим значащим битом.
Слово состоит из двух
байтов, имеющих последовательные адреса. Т.о. слово содержит 16 бит, которые
нумеруются от 0 до 15. Байт, содержащий нулевой бит, называется младшим байтом,
а байт, содержащий 15-й бит - старшим байтом. В процессоре i486 младший байт
хранится по меньшему адресу. Адресом слова считается адрес его младшего байта.
Адрес старшего байта может быть использован для доступа к старшей половине
слова.

Рис. 5. Сегментная адресация
Двойное слово
состоит из четырех байт, имеющих последовательные адреса. Т.о. двойное слово
содержит 32 бита, которые нумеруются от 0 до 31. Слово, содержащее нулевой бит,
называется младшим словом, а слово, содержащее 31-й бит - старшим словом.
Младшее слово хранится по меньшему адресу. Адресом двойного слова считается
адрес его младшего слова. Адрес старшего слова может быть использован для
доступа к старшей половине двойного слова.
Для достижения
максимальной гибкости в структурах данных и эффективного использования памяти,
слова необязательно выравнивать по четным адресам. Двойные слова также
необязательно выравнивать по адресам, кратным четырем. Однако, из-за того, что
процессор i486 имеет 32-разрядную шину, обмен данными между процессором и
памятью производится двойными словами, начинающимися с адресов, кратных
четырем. Процессор преобразует запросы не выровненных слов или двойных слов в
последовательность запросов, допустимых для интерфейса с памятью. Таким
образом, отсутствие выравнивания данных снижает производительность из-за
увеличения количества обращений к памяти. Для повышения производительности
структуры данных (особенно стеки) следует выравнивать по четным адресам и по
адресам, кратным четырем.

Рис. 6. Основные типы данных

Рис. 7. Байты, слова и двойные слова
в памяти
Т.к. байты, слова
и двойные слова являются основными типами операндов, процессор также
поддерживает дополнительную интерпретацию этих операндов. Специализированные
команды распознают следующие типы данных (смотри Рис. 8):
· Целый тип: знаковое двоичное значение, содержащееся в
32-разрядном двойном слове, 16-разрядном слове или 8-разрядном байте. Все
операции предполагают представление чисел в дополнительном коде. Знаковый бит
расположен в бите 7 в байте, в бите 15 в слове и в бите 31 в двойном слове. Он
равен 0 для положительных чисел и 1 для отрицательных. 8-разрядное целое число
может изменяться в диапазоне от -128 до +127, 16-разрядное целое число в
диапазоне от -32768 до +32767, а 32 -разрядное целое число в диапазоне от -231
до +231-1.
· Обычный тип: беззнаковое двоичное значение,
содержащееся в 32- разрядном двойном слове, 16-разрядном слове или 8-разрядном
байте. Значение числа для байта может изменяться от 0 до 255, для слова от 0 до
65535 и для двойного слова от 0 до 232-1.
· Ближний указатель: 32-разрядный логический адрес,
который представляет собой относительный адрес внутри сегмента. Ближние
указатели используются для всех указателей в сплошной модели и для ссылок
внутри сегмента в сегментированной модели памяти.
· Дальний указатель: 48-разрядный логический адрес из
двух компонентов: 16-разрядного селектора сегмента и 32-разрядного
относительного адреса. Дальние указатели используются программами только в том
случае, когда конструкторы системы выбирают сегментированную модель памяти.
· Строка: непрерывная последовательность байтов, слов
или двойных слов. Строка может содержать от 0 до 232-1 байтов или 4
Гбайт.
· Битовое поле: непрерывная последовательность битов, в
которой каждый бит рассматривается как независимая переменная. Битовое поле
может начинаться с любого бита любого байта и может быть длиной до 32 бит.
· Битовая строка: непрерывная последовательность битов.
Битовая строка может начинаться с любого бита любого байта и иметь длину до (232-1)
бит.
· Неупакованный двоично-десятичный тип (НДД):
распакованное байтовое представление десятичной цифры от 0 до 9. Распакованные
десятичные числа хранятся как беззнаковые байтовые значения по одной цифре в
каждом байте. Значение цифры определяется младшим полубайтом. Старший полубайт
должен быть равным нулю при делении и умножении, но может иметь любое значение
при вычитании или сложении.
· Упакованный двоично-десятичный тип (УДД): упакованное
байтовое представление двух десятичных цифр от 0 до 9. Каждая цифра хранится в
своем полубайте. Цифра в старшем полубайте является более значимой. Диапазон
упакованного десятичного байта составляет от 0 до 99.
· Вещественные типы (типы данных с плавающей точкой).

Рис. 8. Типы данных