Обозначение чисел и директивы определения данных
Типы данных ассемблера
1. С точки зрения процессора
a. Байт: 0-7 (8 бит);
b. Слово: 0-15 (16 бит);
c. Двойное слово: 0-31 (32 бита);
d. Учетверенное слово: (64 бита);
e. 128-битное упакованное слово (используется в процессорах от Intel P‑III и выше).
Адресным словом считается адрес его младшего байта. Адрес старшего байта может быть использован в качестве доступа к старшей половине слова.
Адресом двойного слова является адрес его младшего слова по аналогии с адресом слова.
2. С точки зрения логики
a. Целый бит со знаком;
b. Целый тип без знаков;
c. Указатель на память;
d. Цепочка;
e. Битовое поле;
f. Неупакованный двоично-десятичный тип (BCD-число);
g. Упакованный двоично-десятичный тип
h. Тип данных с плавающей запятой;
i. Тип данных MMX;
j. MMX-расширение.
Если используется целый бит со знаком (8, 16, 32), то знак числа: 7, 15, 31 (0 ‑ положительный знак, 1 – отрицательный знак). Если 8 разрядов: интервал (-128; 127). Если слово (16 разрядов): интервал (-32768; 32767). Если двойное слово (32 разряда): интервал (-231; (231-1)).
Если используется целый тип без знаков, то интервалы значений будут следующие: при 8 разрядах (0; 255), при 16 разрядах (0; 65535), при 32 разрядах (0; (231-1)).
Указатели на память бывают двух типов:
1. Ближний тип – 32-разрядный логический адрес (используется в P4) – смещение в байтах от начала сегмента;
2. Дальний тип – 48-разрядный логический адрес. 16 разрядов – сегментный регистр + 32 разряда – смещение.
Цепочка используется для работы с текстовыми переменными. Пример – ИНН.
ИНН 4027 671265
40 – регион; 27 – ИНС; 67126 – номер; 5 – контрольное число (контрольная сумма)
Цепочка является непрерывным набором байтов, слов или двоичных слов максимальной длиной до 4 ГБ.
Битовое поле является непрерывной последовательностью битов, в которой каждый бит является независимым и может рассматриваться как отдельная переменная. Может начинаться с любого байта и может записать до 32 бит.
BCD-число – байтовое представление десятичной цифры от 0 до 9. Неупакованные десятичные числа хранятся как байтовое значение без знака по одной цифре в каждом байте. Используется полубайт (4 бита).
Упакованный двоично-десятичный тип – представление двух десятичных цифр в одном байте.
Тип данных с плавающей запятой может быть представлен в кратком, длинном или расширенном форматах. Краткий формат – 32 разряда, с 0 по 23 разряд – мантисса, с 24 по 30 – характеристика, 31 – знак. Длинный формат – 64 разряда, с 0 по 51 разряд – мантисса, с 52 по 62 – характеристика, 63 разряд – знак. Расширенный формат – 80 разрядов.
MMX-расширение – команды MMX с плавающей запятой
Обозначение чисел и директивы определения данных
Обозначение чисел с помощью суффиксов:
1. B – двоичное число (xB)
2. Q – восьмеричное число
3. D – десятичное число (xD)
4. H – шестнадцитиричное (первое 0)
Примеры:
14 – 14; 012 – 18; 12H – 18; 11B – 3; 0ah – 10; aH – 10; 11Q – 9; 011B – 283; 11d – 11; 011d – 283; 0a – 10
Директивы определения данных:
1. DB – резервируется 1 байт;
2. DW – резервируются 2 байта;
3. DD – резервируются 4 байта;
4. DF (DP) – резервируются 6 байт
5. DQ – резервируются 8 байт
6. DT – резервируются 10 байт
Примеры:
DW 10 – записали число 10 в 2 байта
DD? – зарезервировали значение, полученное ниже
DB ‘?’ – поместили ASCII-код “?”
DB ‘?’, ‘8’, 1,1,1 – директива работы определения 5 байт
DB ‘?8’, 3dup1 – дублируется «1» 3 раза
DB 2dup(1,3dup0)=DB 1,0,0,0,1,0,0,0
DW 256 – 256
DW 0100 – 256 – 16-ричное число
DB 0,1 – 256 – или 1 или 256