Основными типами данных являются байты, слова и двойные слова (смотри Рисунок 2-2). Байт образуют восемь соседних битов, которые нумеруются с 0 до 7, причем бит 0 является самым младшим значащим битом. Слово состоит из двух байтов, имеющих последовательные адреса. Т.о. слово содержит 16 бит, которые нумеруются от 0 до 15. Байт, содержащий нулевой бит, называется младшим байтом, а байт, содержащий 15-й бит - старшим байтом. В процессоре i486 младший байт хранится по меньшему адресу. Адресом слова считается адрес его младшего байта. Адрес старшего байта может быть использован для доступа к старшей половине слова.
+--------------------------------------------------------------+| || 7 0 || +---------------+ || | Байт | БАЙТ || +---------------+ || 15 0 || +---------------------------+ || | Старший байт| Младший байт| СЛОВО || +---------------------------+ || адрес N+1 адрес N || 31 15 0 || +--------------------------------------------------+ || | Старшее слово | Младшее слово | ДВОЙНОЕ || +--------------------------------------------------+ СЛОВО || адрес N+3 адрес N+2 адрес N+1 адрес N || |+--------------------------------------------------------------+ Рисунок 2-2. Основные типы данных +--------------------------------------------------------------+| || +---------------+ || | | Е || Двойное слово по адресу A --- +---------------| || содержит 7AFE0636 | | 7A | D || --- | +---------------| || | | | FE | C || Слово по адресу B содержит | | +---------------| || FE06 | | | 06 | B || --- | +---------------| || | | 36 | A || --- --- +---------------| || Байт по адресу 9 | | 1F | 9 || содержит 1F --- +---------------| || | | 8 || --- +---------------| || | | 23 | 7 || Слово по адресу 2 содержит | +---------------| || | | 0B | 6 || --- +---------------| || | | 5 || +---------------| || | | 4 || Слово по адресу 2 содержит --- +---------------| || 74CB | | 74 | 3 || --- | +---------------| || | | | CB | 2 || Слово по адресу 1 содержит | --- +---------------| || CB31 | | 31 | 1 || --- +---------------| || | | 0 || +---------------+ || |+--------------------------------------------------------------+ Рисунок 2-3. Байты, слова и двойные слова в памяти
Т.к. байты, слова и двойные слова являются основными типами операндов, процессор также поддерживает дополнительную интерпретацию этих операндов. Специализированные команды распознают следующие типы данных (смотри Рисунок 2-4):
Целый тип: знаковое двоичное значение, содержащееся в 32-разрядном двойном слове, 16-разрядном слове или 8-разрядном байте. Все операции предполагают представление чисел в дополнительном коде. Знаковый бит расположен в бите 7 в байте, в бите 15 в слове и в бите 31 в двойном слове. Он равен 0 для положительных чисел и 1 для отрицательных. 8-разрядное целое число может изменяться в диапазоне от -128 до +127, 16-разрядное целое число в диапазоне от -32768 до +32767, а 32 -разрядное целое число в диапазоне от -2**31 до +2**31-1.
Обычный тип: беззнаковое двоичное значение, содержащееся в 32- разрядном двойном слове, 16-разрядном слове или 8-разрядном байте. Значение числа для байта может изменяться от 0 до 255, для слова от 0 до 65535 и для двойного слова от 0 до 2**32-1.
Ближний указатель: 32-разрядный логический адрес, который представляет собой относительный адрес внутри сегмента. Ближние указатели используются для всех указателей в сплошной модели и для ссылок внутри сегмента в сегментированной модели памяти.
Дальний указатель: 48-разрядный логический адрес из двух компонентов: 16-разрядного селектора сегмента и 32-разрядного относительного адреса. Дальние указатели используются программами только в том случае, когда конструкторы системы выбирают сегментированную модель памяти.
Строка: непрерывная последовательность байтов, слов или двойных слов. Строка может содержать от 0 до 2**32-1 байтов или 4 Гбайт.
Битовое поле: непрерывная последовательность битов, в которой каждый бит рассматривается как независимая переменная. Битовое поле может начинаться с любого бита любого байта и может быть длиной до 32 бит.
Битовая строка: непрерывная последовательность битов. Битовая строка может начинаться с любого бита любого байта и иметь длину до (2**32-1) бит.
Неупакованный двоично-десятичный тип (НДД): распакованное байтовое представление десятичной цифры от 0 до 9. Распакованные десятичные числа хранятся как беззнаковые байтовые значения по одной цифре в каждом байте. Значение цифры определяется младшим полубайтом. Старший полубайт должен быть равным нулю при делении и умножении, но может иметь любое значение при вычитании или сложении.
Упакованный двоично-десятичный тип (УДД): упакованное байтовое представление двух десятичных цифр от 0 до 9. Каждая цифра хранится в своем полубайте. Цифра в старшем полубайте является более значимой. Диапазон упакованного десятичного байта составляет от 0 до 99.
Вещественные типы (типы данных с плавающей точкой): описание данных для операций с плавающей точкой приводится в Главе 15.