
МУ_2542_МПТ_Тарабардин_2010
.pdf
ЛАБОРАТОРНАЯ РАБОТА №7 ОПЕРАЦИИ НАД МАССИВАМИ ДАННЫХ
Цель работы: изучение применения вычислительных операций над массивами данных.
Краткие теоретические сведения
Впредыдущей работе была рассмотрена работа с массивами данных – чтение элементов массива и запись элементов в массив. Массивы удобны тем, что многократное обращение к их элементам производятся с помощью циклов. Представление данных в виде массивов очень удобно при решении ряда прикладных задач, например, при анализе функций, при анализе статистической информации, обработки баз данных и таблиц и др.
Вданной работе рассмотрен простейший пример применения арифметических операций над элементами массива – вычисление суммы элементов массива.
Оборудование для выполнения работы
Работа выполняется на ПК с операционной системой Windows NT/2000/XP в среде отладки CPM.
Порядок выполнения работы
1.Дан массив, состоящий из пяти элементов. Элементы массива располагаются в ЯП с адресами 200h, 201h, …, 204h. Необходимо вычислить сумму элементов данного массива. Результат записать в аккумулятор.
2.Блок-схема алгоритма программы вычисления суммы элементов массива показана на рис. 1.
Рис. 1. Блок-схема алгоритма программы
3. Текст программы, реализующей данный алгоритм, представлен ниже.
org 100h |
|
mvi A,02h |
;Запись первого элемента массива в память |
sta 0200h |
;с адресом 200h |
mvi A,03h |
;Запись второго и последующих |
sta 0201h |
;элементов массива в память |
mvi A,0Ah |
|
sta 0202h |
|
mvi A,10h |
|
sta 0203h |
|
mvi A,7h |
|
sta 0204h |
|
mvi A,0 |
;Инициализация начального значения суммы |
mvi B,5 |
;Установка счётчика цикла равным 5 |
lxi h,0200h |
;Загрузка в регистровую пару HL |
|
;адреса первого элемента массива |
L1: |
|
add M |
;Увеличение значения суммы на число, равное |
|
;текущему элементу массива |
inx H |
;Увеличение адреса текущего элемента массива |
dcr B |
;Декрементирование счётчика цикла |
jnz L1 |
;Возврат в начало цикла, |
|
;если значение счётчика не достигло нуля |
hlt |
;Завершение выполнения программы |
4.Результатом работы программы является записанная в аккумулятор процессора сумма элементов массива, равная 26h.
5.Самостоятельно вычислите сумму чётных элементов массива. Для проверки на чётность используйте операцию сдвига влево RRC и операцию перехода по условию переноса JC.
Содержание отчёта
1.Титульный лист работы.
2.Формулировка цели и задач работы.
3.Описание и результаты используемых операций.
4.Краткие выводы по проделанной работе.
Контрольные вопросы
1.Перечислите преимущества использования массивов.
2.Назовите области применения массивов данных.
3.Какие типы адресации используются при работе с массивами?
ЛАБОРАТОРНАЯ РАБОТА №8 АНАЛИЗ ДАННЫХ В МАССИВАХ
Цель работы: изучение механизмов анализа данных, представленных в массивах.
Краткие теоретические сведения
Ранее была отмечена роль массивов при представлении данных. На практике часто необходим анализ таких данных, например, сортировка, поиск элементов, обработка статистической информации и т.п. В данной работе рассмотрим анализ данных на примере поиска максимального элемента в массиве.
В работе также будут использованы две новые команды языка Ассемблер. Команда CMP сравнивает содержимое регистра или ЯП с содержимым аккумулятора. Если в аккумулятор записано число, меньшее, чем в указанном регистре или ЯП, то в регистре флагов F устанавливается единичный бит в поле знака результата (результат отрицательный). Команда JP осуществляет переход к выполнению команды по адресу или метке в случае, если не установлен бит S регистра флагов F (т.е. если результат положительный при использовании арифметических операций или значение аккумулятора больше значения регистра или ЯП при использовании команды CMP).
Оборудование для выполнения работы
Работа выполняется на ПК с операционной системой Windows NT/2000/XP в среде отладки CPM.
Порядок выполнения работы
1.Дан массив, состоящий из 5 элементов. Массив имеет начальный адрес 200h. Необходимо среди его элементов найти максимальный.
2.Основой алгоритма поиска максимального элемента в массиве является цикл. Сначала в качестве максимума устанавливается первый элемент массива (или ноль, если считать, что все элементы массива неотрицательны). Далее проверяется следующий за ним элемент. Если следующий элемент меньше текущего максимума, то максимум остаётся без изменений, а если следующий элемент больше текущего максимума, то в качестве максимума выбирается тот самый элемент массива. Цикл выполняется для всех элементов массива.
3.Блок схема описанного алгоритма показана на рис. 1.
4.Текст программы, реализующей данный алгоритм, приведён ниже.
org 100h |
|
|
mvi A,02h |
|
;Запись числа 2 в аккумулятор |
sta 0200h |
|
;Запись содержимого аккумулятора в ячейку |
|
|
;памяти с адресом 200h |
mvi A,03h |
|
|
sta 0201h |
|
|
mvi A,0Ah |
|
|
sta 0202h |
|
|
mvi A,10h |
|
|
sta 0203h |
|
|
mvi A,7h |
|
|
sta 0204h |
|
|
mvi A,0 |
|
;Запись в аккумулятор начального максимума |
mvi B,5 |
|
;Установка счётчика цикла равным длине массива |
lxi h,0200h |
;Загрузка в HL стартового адреса массива |
|
L2: |
|
;Начало цикла |
cmp M |
;Сравнение аккумулятора с текущим элементом массива |

jp L1 |
;Пропуск следующей команды, если значение |
|
;аккумулятора, т.е. текущий максимум, больше |
|
;текущего элемента массива |
mov A,M |
;Установка текущего элемента массива |
|
;в качестве максимума |
L1: |
|
inx H |
;Увеличение адреса текущего элемента массива |
dcr B |
;Уменьшение счётчика цикла |
jnz L2 |
;Возврат в начало цикла, если счётчик не достиг нуля |
hlt |
;Завершение выполнения программы |
Рис. 1. Блок-схема алгоритма программы
5.Результатом работы программы будет запись в аккумулятор числа 10h – максимального элемента данного массива.
6.Самостоятельно составьте программу для поиска минимального элемента
вмассиве.
Содержание отчёта
1.Титульный лист работы.
2.Формулировка цели и задач работы.
3.Описание и результаты используемых операций.
4.Краткие выводы по проделанной работе.
Контрольные вопросы
1.Какие новые команды языка Ассемблер использовались в программе? Опишите их синтаксис и принцип работы.
2.Опишите алгоритм поиска минимального элемента в массиве. В чём его принципиальное отличие от алгоритма поиска максимального элемента?
БИБЛИОГРАФИЧЕСКИЙ СПИСОК
1. Засов В.А. Основы микропроцессорной техники. Учебное пособие.
–Самара: СамИИТ, 2001. -215 с.
2.Засов В.А. Микропроцессорная техника: конспект лекций для студентов специальности 220401 « Мехатроника» очной формы обучения. – Самара:
СамГУПС, 2008. -196 с.
3.Кулаков В. Программирование на аппаратном уровне. Специальный справочник. – СПб.: Питер, 2001. – 496с.
4.Юров В. Assembler. – СПб.: Питер, 2001. – 624с.Пирогов В.Ю. Ассемблер для Windows. - СПб.: БХВ Петербург, 2003. – 656 с.
5.Жмакин А.П. Архитектура ЭВМ. –СПб.: БХВ-Петербург, 2006. -320 с.
6.Таненбаум Э. Архитектура компьютера. – СПб.: Питер, 2002. -704 с.
7.Гук М. Аппаратные средства IBM PC: Энциклопедия, 2-е изд. – СПб.:
Питер, 2002. -928 с.
8.Фролов А.В., Фролов Г.В. Аппаратное обеспечение персонального компьютера: Библиотека системного программиста. т.33. – М.: ДИАЛОГ – МИФИ, 1997. – 304 с.