assembler. Учебник для вузов_Юров В.И_2003 -637с (862834), страница 25
Текст из файла (страница 25)
5.17. Основные типы данных процессораж Слово — последовательность из двух байтов, имеющих последовательные адреса. Размер слова — 16 битов; биты в слове нумеруются от 0 до 15. Байт, содержащий нулевой бит, называется младшим байтом, а байт, содержащий 15-й бит, —старшим. Процессоры Intel имеют важную особенность — младший байт всегда хранится по меньшему адресу. Адресом слова считается адрес его младшегобайта. Адрес старшего байта может быть использован для доступа к старшейполовине слова.х Двойное слово — последовательность из четырех байтов (32 бита), расположенных по последовательным адресам. Нумерация этих битов производится от Одо 31.
Слово, содержащее нулевой бит, называется младшим словом, а слово,содержащее 31-й бит, — старшим словом. Младшее слово хранится по меньшему адресу. Адресом двойного слова считается адрес его младшего слова. Адресстаршего слова может быть использован для доступа к старшей половине двойного слова.я Учетверенное слово — последовательность из восьми байтов (64 бита), расположенных по последовательным адресам.
Нумерация битов производится от Одо 63. Двойное слово, содержащее нулевой бит, называется младшим двойнымсловом, а двойное слово, содержащее 63-й бит, — старшим двойным словом.Младшее двойное слово хранится по меньшему адресу. Адресом учетверенногослова считается адрес его младшего двойного слова. Адрес старшего двойногослова может быть использован для доступа к старшей половине учетверенногослова.* 128-битный упакованный тип данных. Этот тип данных появился в процессореPentium III. Для работы с ним в процессор введены специальные команды.Кроме трактовки типов данных с точки зрения их разрядности, процессор науровне команд поддерживает логическую интерпретацию этих типов, как показанона рис.
5.18 (Зн означает знаковый бит).ж Целый тип со знаком — двоичное значение со знаком размером 8,16 или 32 бита.Знак в этом двоичном числе содержится в 7, 15 или 31 бите соответственно.Ноль в этих битах в операндах соответствует положительному числу, а единица —112Глава 5. Синтаксис ассемблерацелые оез знакаДвойное словоСлово [3 нДвойное слово(Зн||3н|15731Битовое полеiiiiiii31157Упакованное десятичное (BCD) числоСлово|31157Байтовая строкаiiгiiiiДо 4 Гбайт157Неупакованное десятичное (BCD) число00|оооо|вср| - | - |OOOO|BCD|OOOO|BCD|157Указатель ближнего типа||j СМЕЩЕНИЕ JО|BCD|BCD| - | - |BCD|BCD|BCD|BCD|0|0157О|3115Указатель дальнего типа|47СЕЛЕКТОР|31^МЕЩЕНИЕ15|7ОТипы данных сопроцессораТипы данных ММХ (целочисленные)| Типы данных ММХ (с плавающей точкой)Рис. 5.18. Основные логические типы данных процессораотрицательному. Отрицательные числа представляются в дополнительном коде.Числовые диапазоны для этого типа данных следующие:П 8-разрядное целое— от-128 до+127;П 16-разрядное целое — от -32 768 до +32 767;D 32-разрядное целое — от -231 до +231 - 1.Целый тип без знака — двоичное значение без знака размером 8,16 или 32 бита.Числовой диапазон для этого типа следующий:D байт — от 0 до 255;П слово — от 0 до 65 535;П двойное слово— от 0 до 232 - 1.Указатель на память бывает двух типов:П ближний тип — 32-разрядный логический адрес, представляющий собойотносительное смещение в байтах от начала сегмента; указатели подобноготипа могут также использоваться в сплошной (плоской) модели памяти, гдесегментные составляющие одинаковы;П дальний тип — 48-разрядный логический адрес, состоящий из двух частей:16-разрядной сегментной части (селектора) и 32-разрядного смещения.Цепочка представляет собой некоторый непрерывный набор байтов, слов илидвойных слов максимальной длиной до 4 Гбайт.Простые типы данных ассемблера113ж Битовое поле представляет собой непрерывную последовательность битов, в которой каждый бит является независимым и может рассматриваться как отдельная переменная.
Битовое поле может начинаться с любого бита любого байтаи содержать до 32 битов.ii Неупакованный двоично-десятичный тип — байтовое представление десятичной цифры от 0 до 9. Неупакованные десятичные числа хранятся как байтовыезначения без знака по одной цифре в каждом байте. Значение цифры определяется младшим полубайтом.^ Упакованный двоично-десятичный тип представляет собой упакованное представление двух десятичных цифр от 0 до 9 в одном байте. Каждая цифра хранится в своем полубайте.
Цифра в старшем полубайте (биты 4-7) является старшей.s Типы данных с плавающей точкой. Сопроцессор имеет несколько собственныхтипов данных, несовместимых с типами данных целочисленного устройства.Подробно этот вопрос обсуждается в главе 17.* Типы данных MMX-расширения Pentium MMX/II/HI/IV. Данный тип данныхпоявился в процессоре Pentium MMX. Он представляет собой совокупностьупакованных целочисленных элементов определенного размера.9 Типы данных MMX-расширения Pentium III/IV.
Этот тип данных появился в процессоре Pentium III. Он представляет собой совокупность упакованных элементов с плавающей точкой фиксированного размера.Описанные ранее данные можно определить как данные простого типа. Описать их можно с помощью специального вида директив — директив резервирования и инициализации данных. Эти директивы, по сути, являются указаниями транслятору на выделение определенного объема памяти. Если проводить аналогиюс языками высокого уровня, то директивы резервирования и инициализации данных являются определениями переменных.
Машинного эквивалента этим (впрочем, как и другим) директивам нет; просто транслятор, обрабатывая каждую такуюдирективу, выделяет необходимое количество байтов памяти и при необходимости инициализирует эту область некоторым значением. Формат директив резервирования и инициализации данных простых типов показан на рис. 5.19.Выражение |Выражение^1LЗначениеинициализацииКоличествоповторений_-pup) — Г0~| Выражение к У У• •*Рис.
5.19. Директивы описания данных простых типов114Глава 5. Синтаксис ассемблераНа рисунке использованы следующие обозначения.* Знак вопроса (?) показывает, что содержимое поля не определено, то есть призадании директивы с таким значением выражения содержимое выделенногоучастка физической памяти изменяться не будет. Фактически, создается неинициализированная переменная.Ж Значение и н и ц и а л и з а ц и и — значение элемента данных, которое будет занесенов память после загрузки программы.
Фактически, создается инициализированная переменная, в качестве которой могут выступать константы, строки символов, константные и адресные выражения в зависимости от типа данных.Выражение — итеративная конструкция, о синтаксисе которой можно судить порисунку. В частности, она позволяет повторить занесение в физическую памятьвыражения в скобках столько раз, сколько повторений указано.18 Имя — некоторое символическое имя метки или ячейки памяти в сегменте данных, используемое в программе.Далее представлены поддерживаемые TASM и MASM директивы резервирования и инициализации данных, а также информация о возможных типах и диапазонах значений, которые можно описывать или задавать с их помощью.я DB — резервирование памяти для данных размером 1 байт. Директивой DB можно задавать следующие значения:D выражение или константу, принимающую значение из диапазона -128...+127(для чисел со знаком) или 0...255 (для чисел без знака);О 8-разрядное относительное выражение, использующее операции HIGH и LOW;D символьную строку из одного или более символов, которая заключается в кавычки (в этом случае определяется столько байтов, сколько символов в строке).til DW — резервирование памяти для данных размером два байта.
Директивой DWможно задавать следующие значения:П выражение или константу, принимающую значение из диапазона-32 768...32 767 (для чисел со знаком) или 0...65 535 (для чисел без знака);D выражение, занимающее 16 или менее битов, в качестве которого можетвыступать смещение в 16-битовом сегменте или адрес сегмента;D 1-или 2-байтовая строка, заключенная в кавычки.и! DD — резервирование памяти для данных размером четыре байта. ДирективойDD можно задавать следующие значения:D выражение или константу, принимающую значение из диапазона-32 768...+32 767 (для чисел со знаком и процессора i8086), 0...65 535 (длячисел без знака и процессора 18086), -2 147 483 64S...+2 147 483 647 (длячисел со знаком и процессора 1386 и выше) или 0...4 294 967 295 (для чиселбез знака и процессора 1386 и выше);D относительное или адресное выражение, состоящее из 16-разрядного адресасегмента и 16-разрядного смещения;О строку длиной до 4 символов, заключенную в кавычки.Простые типы данных ассемблера115DF и DP — резервирование памяти для данных размером 6 байтов.
ДирективамиDF и DP можно задавать следующие значения:п выражение или константу, принимающую значение из диапазона-32 768...+32 767 (для чисел со знаком и процессора 18086), 0...65 535 (длячисел без знака и процессора 18086), -2 147 483 64S...+2 147 483 647 (длячисел со знаком и процессора 1386 и выше) или 0...4 294 967 295 (для чиселбез знака и процессора 1386 и выше);П относительное или адресное выражение, состоящее из 32 или менее битов(для i80386) или 16 или менее битов (для первых моделей процессоров Intel);П адресное выражение, состоящее из 16-разрядного сегмента и 32-разрядногосмещения;П константу со знаком из диапазона -247...247 - 1;П константу без знака из диапазона 0...248 - 1;П строку длиной до 6 байтов, заключенную в кавычки.DQ — резервирование памяти для данных размером 8 байтов.
Директивой DQможно задавать следующие значения:Р выражение или константу, принимающую значение из диапазона-32 768...+32 767 (для чисел со знаком и процессора 18086), 0...65 535 (длячисел без знака и процессора 18086), -2 147 483 64S...+2 147 483 647 (длячисел со знаком и процессора 1386 и выше) или 0...4 294 967 295 (для чиселбез знака и процессора 1386 и выше);П относительное или адресное выражение, состоящее из 32 или менее битов(для i80386) или 16 или менее битов (для первых моделей процессоров Intel);D константу со знаком из диапазона -263...263~ 1;Р константу без знака из диапазона 0...264 - 1;Р строку длиной до 8 байтов, заключенную в кавычки.DT — резервирование памяти для данных размером 10 байтов.