Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
SP.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
166.62 Кб
Скачать

29. Описать и объяснить понятие массива, размера и размерности массива. Описать состав и особенности основных операций над массивами.

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

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

Объявление массива :

;массив из 5 элементов.Размер каждого

элемента 4 байта:

mas dd 1,2,3,4,5

Для того чтобы локализовать определенный элемент массива, к его имени нужно добавить индекс. Так как мы моделируем массив, то должны позаботиться и о моделировании индекса. В языке ассемблера индексы массивов — это обычные адреса, но с ними работают особым образом. Другими словами, когда при программировании на ассемблере мы говорим об индексе, то скорее подразумеваем под этим не номер элемента в массиве, а некоторый адрес.

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

mas dw 0,1,2,3,4,5

Пусть эта последовательность чисел трактуется как одномерный массив. Размерность каждого элемента определяется директивой dw, то есть она равна2 байта. Чтобы получить доступ к третьему элементу, нужно к адресу массива прибавить 6. Нумерация элементов массива в ассемблере начинается с нуля.  То есть в нашем случае речь, фактически, идет о 4-м элементе массива — 3, но об этом знает только программист; микропроцессору в данном случае все равно — ему нужен только адрес.

В общем случае для получения адреса элемента в массиве необходимо начальный (базовый) адрес массива сложить с произведением индекса (номер элемента минус единица) этого элемента на размер элемента массива:

30. Описать и объяснить понятие таблицы, принципы адресации элементов таблицы.

Объяснить понятие таблицы, принципы организации таблиц в памяти.

Для облегчения поиска большинство таблиц определяются систематично:

элементы таблицы имеют одинаковый формат (символьный или числовой),

одинаковую длину и восходящую или нисходящую последовательность элементов.

Например, стек представляет собой таблицу из 64-х неинициализированных слов:

STACK DW 64 DUP(?)

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

MONTAB DB 'JAN','FEB','MAR', ... ,'DEC'

COSTAB DB 205,208,209,212,215,224,...

Таблица MONTAB определяет алфавитные аббревиатуры месяцев, а COSTAB -

таблицу номеров служащих. Таблица может содержать смешанные данные

(регулярно чередуемые числовые и символьные поля). В следующей

ассортиментной таблице каждый числовой элемент (инвентарный номер)

имеет длину в две цифры (один байт), а каждый символьный элемент

(наименование) - длину девять байтов.

STOKTBL DB 12,'Computers',14,'Paper....',17,'Diskettes'

Прямой табличный доступ

Предположим, что пользователь ввел номер месяца "03", а программа

должна преобразовать этот номер в алфавитное значение March. Такая

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

имеющих одинаковую длину. Так как самое длинное название - September,

таблица имеет вид:

MONTBL DB 'January..'

DB 'February.'

DB 'March....'

Каждый элемент таблицы имеет длину 9 байтов. Адрес элемента 'January' -

MONTBL+0, 'February' - MONTBL+9, 'March' - MONTBL+18

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]