Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

Работа с массивами в ассемблере

Работа добавлена на сайт samzan.net:


Лабораторная работа №3

Работа с массивами в ассемблере

Теоретическая часть

Массивы представляют собой упорядоченные наборы однотипных элементов. Массив характеризуется типом элементов, числом элементов и способом их нумерации. Число элементов называется размером, или длиной, массива; способ нумерации описывается одномерным целочисленным массивом, называемым формой массива.

Число измерений называется рангом массива; число элементов в измерении называется экстентом массива в данном измерении. Целочисленный массив, длина которого равна рангу заданного массива, а каждый его элемент равен экстенту массива в данном измерении, называется формой массива. Массивы, имеющие одинаковую форму называются совместимыми.

Массив — это последовательность элементов, доступ к которым осуществляется при помощи целочисленного индекса. Индексы всегда следуют по порядку, и поэтому очевидным является использование “циклов” для работы с массивами.

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

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

При работе с массивами необходимо четко представлять себе, что все элементы массива располагаются в памяти компьютера последовательно. Само по себе такое расположение ничего не говорит о назначении и порядке использования этих элементов. И только лишь программист с, помощью составленного им алгоритма обработки определяет, как нужно трактовать последовательность байтов, составляющих массив. Так, одну и ту же область памяти можно трактовать одновременно и как одномерный, и как двухмерный массив. Все зависит только от алгоритма обработки этих данных в конкретной программе. Сами по себе данные не несут никакой информации о своем «смысловом», или логическом, типе.

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

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

база + (индекс • размер элемента).

Архитектура процессора предоставляет довольно удобные программно-аппаратные средства для работы с массивами. К ним относятся базовые и индексные регистры, позволяющие реализовать несколько режимов адресации данных. Используя данные режимы адресации, можно организовать эффективную работу с массивами в памяти. (см. лабораторную работу №1.)

Работу с массивами в ассемблере рассмотрим на примерах.

Практическая часть.

Пример №1. Найти сумму квадратов элементов массива.

Решение:

Результат работы программы:

Пример №2. Расположить элементы массива по возрастанию.

Решение:

Результат работы программы:

Задания для самостоятельной работы

Ознакомьтесь с теоретическим материалом.

Разберите все примеры из практической части лабораторной работы, т.е. наберите и просмотрите их работу.

Выполните индивидуальные задания.

Индивидуальные варианты

1. Составить программу для анализа элементов массива

1.1.1. Дан массив целых чисел, состоящий из 10 элементов.

найти сумму четных элементов, имеющих нечетные индексы;

найти номер последнего положительного элемента.

1.1.2. Дан массив целых чисел, состоящий из 15 элементов.

найти среднее арифметическое отрицательных элементов;

вывести индексы нулевых элементов.

1.2.1. Дан массив целых чисел, состоящий из 15 элементов.

найти среднее арифметическое положительных элементов;

вывести количество отрицательных элементов.

1.2.2. Дан массив целых чисел, состоящий из 10 элементов.

найти произведение нечетных элементов;

найти номер первого нулевого элемента.

1.3.1. Дан массив целых чисел, состоящий из 15 элементов. Заполнить его с клавиатуры.

найти сумму элементов, кратных 3;

вывести количество тех элементов, значения которых меньше значения предыдущего элемента (начиная со второго).

1.3.2. Дан массив целых чисел, состоящий из 10 элементов.

найти произведение четных элементов;

определить, есть ли в данном массиве нулевые элементы.

1.4.1. Дан массив целых чисел, состоящий из 15 элементов.

найти сумму отрицательных элементов, значения которых больше заданного числа A;

количество тех элементов, значения которых положительны и не превосходят заданного числа B.

1.4.2. Дан массив целых чисел, состоящий из 10 элементов.

найти сумму отрицательных элементов, модуль которых не превосходит 5;

номер последней пары соседних элементов с разными знаками.

1.5.1. Дан массив целых чисел, состоящий из 15 элементов.

найти сумму элементов, имеющих четное значение;

вывести количество тех элементов, значения которых больше заданного числа А.

1.5.2. Дан массив целых чисел, состоящий из 10 элементов.

найти сумму элементов, имеющих нечетное значение;

определить, есть ли в данном массиве положительные элементы, кратные k (k вводится с клавиатуры).

1.6.1. Дан массив целых чисел, состоящий из 15 элементов.

найти сумму элементов, имеющих нечетные индексы;

подсчитать количество элементов массива, значения которых больше заданного числа А.

1.6.2. Дан массив целых чисел, состоящий из 10 элементов.

найти сумму элементов, имеющих четные индексы;

найти номер первого отрицательного элемента.

1.7.1. Дан массив целых чисел, состоящий из 15 элементов.

найти сумму положительных элементов, значения которых меньше 10;

вывести количество тех элементов, значения которых кратны 3.

1.7.2. Дан массив целых чисел, состоящий из 10 элементов.

найти сумму элементов, значения которых больше заданного числа A;

определить, есть ли пара соседних элементов с суммой, равной заданному числу B.

1.8.1. Дан массив целых чисел, состоящий из 15 элементов.

найти удвоенную сумму положительных элементов;

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

1.8.2. Дан массив целых чисел, состоящий из 10 элементов.

найти удвоенную сумму отрицательных элементов;

определить количество пар соседних элементов с одинаковыми знаками.

2. Составить программу для обработки элементов массива

2.1.1. Дан массив из четного числа элементов. Отсортировать первую половину этого массива по возрастанию, а вторую по убыванию.

2.1.2. Перенести в конец массива все отрицательные элементы.

2.2.1. Заменить нулями все элементы массива, равные максимальному.

2.2.2. Перенести в начало массива все положительные элементы.

2.3.1. Заменить максимальные элементы массива на минимальные.

2.3.2. Заменить последний положительный элемент массива на первый элемент массива.

2.4.1. Заменить нулями элементы массива между минимальными и максимальными, кроме их самих.

2.4.2. Перенести в начало массива максимальный элемент

2.5.1. Заменить минимальный положительный элемент массива нулем.

2.5.2. Заменить элементы массива с k1-го по k2-й на те же элементы в обратном порядке.

2.6.1. Заменить первый отрицательный элемент массива на последний элемент массива.

2.6.2. Найти максимальный элемент среди отрицательных элементов и поменять его местами с минимальным положительным.

2.7.1. Заменить первые k элементов массива на максимальный элемент.

2.7.2. Перенести в конец массива минимальный элемент.

2.8.1. Заменить минимальный по модулю отрицательный элемент массива нулем.

2.8.2. Отсортировать массив по убыванию начиная с минимального элемента.




1. КУБАНСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ Филиал в г
2. Статья- Формирование делового имиджа
3. I МОРФОЛОГИЯ Методический комментарий ПРИЛАГАТЕЛЬНОЕ КАК ЧАСТЬ РЕЧИ Имя прилагательное это
4.  Организация практики и содержание производственных работ
5. ЦОИ на
6. по теме ldquo;Основы теории вероятностейrdquo; Утверждено на методи
7. тематике на тему - Округление чисел с избытком и недостатком пров
8. Учебноигровая школа лагерь Агробизнес Цель- Создание условия для формирования у школьников в
9. ГОСУДАРСТВЕННАЯ ГРАНИЦА Итоговая таблица после 2х игр За.
10. 100 МПа материал режущих инструментов- Т15К6 Р6М5
11.  Понятие значение и сведения из истории конституционного контроля 2
12. Введение Актуальность темы исследования обусловлена теоретической и практической значимостью вопросов
13. Основания и пределы ограничения прав человека и гражданина по российскому законодательств
14.  Установите соответствие между графиками функций и формулами которые их задают
15. Увольнение по обстоятельствам, не зависящим от воли сторон основания и порядок
16. Стратегический план для организации
17. ислам переводится как предание себя Богупкорность
18. Вариант 4 Недавно я вспомнил статью которую прочитал в газете двадцать лет назад- Промысловиками китобой
19. 1000 Счет Б-Счет Б1000 Две эти операции должны либо одновременно выполниться либо одновременно не выполнит
20. 01.2014 Суббота Эстетика архитектуры и дизайна доц