Типы данных. Понятие типы данных носит двойственный характер: с точки зрения аппаратной поддержки и с точки зрения логической организации данных

Понятие типы данных носит двойственный характер: с точки зрения аппаратной поддержки и с точки зрения логической организации данных. С точки зрения аппаратной поддержки процессор поддерживает следующие типы данных:

Байт – объявляется директивой db в сегменте данных

Слово (2 байта) – объявляется директивой dw в сегменте данных

Двойное слово (4 байта) – объявляется директивой dd в сегменте данных

Учетверенное слово (8 байт) – объявляется директивой dq в сегменте данных (начиная с процессора I80486).

Необходимо отметить, что младший байт каждой переменной занимает младший адрес в памяти, этот адрес и является адресом операнда (переменной!)

С точки зрения логической организации данных, данные могут быть следующих типов:

Цифровые типы данных, которые делятся на целые числа без знака, целые числа со знаком и числа с плавающей запятой.

Целые – числа в диапазоне от 0 до 255 (1 байт)

Со знаком – числа в диапазоне от -128 до +127 (1 байт). Необходимо отметить, что числа со знаком представлены в виде дополнительного кода.

Числа с плавающей запятой – числа в диапазонеот 1.18∙10–38 до 3.40∙10 38 длиной в 32 бита и с точностью 24 бита. Эти числа хранятся в специальных регистрах данных с плавающей запятой (регистры FPU).

Указатели на память:

Ближний указатель (near) 32-х или 16-ти разрядный адрес, представляющий собой смещение относительно начала сегмента. Его также называют эффективным (effective) адресом. Этот указатель используется в плоской модели памяти и в сегментной модели памяти, если нет необходимости выходить за пределы сегмента.

Дальний указатель (far) 48-и разрядный адрес, состоящий из 16-и разрядного номера сегмента (селектора) и 32-х разрядного смещения внутри этого сегмента. Для 64-х разрядных операндов дальний указатель содержит 80 бит: 16-и разрядный селектор сегмента и 64-х разрядное смещение.

Битовое поле – представляет собой непрерывную последовательность битов, в которой каждый бит является независимым и может рассматриваться как отдельная переменная. Битовое поле может начинаться с любого бита в байте и может содержать до 32 битов. Доступ к битам и обработка битовых полей осуществляется с помощью специальных команд.

Двочно-десятичные типы данных, т.е.десятичные числа, записанные в двоичной системе счисления делятся на две группы:

Упакованные двоично-десятичные – каждая десятичная цифра записывается в одну тетраду

Неупакованные двоично-десятичные – каждаядесятичная цифра записывается в один байт

Массив – структурированный тип данных, состоящий из некоторого числа элементов одного типа. Несмотря на то, что массивы могут быть в общем случае n-мерными, необходимо четко представлять себе, что элементы массива располагаются в памяти последовательно друг за другом. Т.е. физически, двумерный или трехмерный массив ничем не отличается от одномерного массива. Доступ к элементам массива осуществляется с помощью индексов (смещения относительно начала массива).

Например:

Mass db 5,2,3

db 1,4,6

В массиве с именем Mass элемент «5» будет иметь индекс равный 0, элемент «2» – индекс равный 1, элемент «4» – индекс равный 4. И хотя пользователь пытался создать двумерный массив к массиву Mass можно обратиться как к одномерному. Чтобы обращаться к массиву Mass как к двумерному массиву необходимо использовать 2 индекса: адрес начала строки элементов массива и смещение элемента относительно адреса начала строки.

Структуры – тип данных, состоящий из фиксированного числа элементов разного типа. Перед использованием структуры необходимо задать её шаблон:

<имя_структуры> STRUC

<описание_полей>

< имя_структуры >ENDS

В отличие от массива элементы структуры могут быть разных типов. Обращение к полям структуры осуществляется по имени переменной и поля структуры, разделенным точкой.

Например:

Объявление шаблона:

Data STRUC

type db 30 dup (“”); описание типа данных, dup – оператор дублирования

znachen dw; значение типа данных

ENDS

Присвоение значений переменной типа Data:

Danny1 data <”какие-то данные”,'10202'>;

Danny2 data <”новые данные”,'393032'>;

Обращение к значениям переменной типа Data:

Mov ax,Danny1.znachen


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: