- •Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования
- •«Вычислительные машины, системы и сети»
- •Оглавление
- •Требования к оформлению отчетов по лабораторным работам
- •Лабораторная работа №1. Изучение программной среды mpladide. Введение в язык ассемблер.
- •Цель работы
- •Содержание работы
- •1.1 Создание нового проекта
- •1.2 Подключение библиотек и упаковочных файлов процессора
- •1.3 Создание файла с исполняемым кодом
- •Программа работы и последовательность выполнения
- •Контрольные вопросы
- •2.3 Битовые операции
- •2.4 Логические операции
- •Программа работы и последовательность выполнения
- •Контрольные вопросы
- •3.3 Инструкция вычитания
- •Синтаксис:
- •3.4 Инструкция деления
- •Программа работы и последовательность выполнения
- •Контрольные вопросы
- •4.2 Инструкции сравнения
- •4.3 Инструкции переходов
- •Программа работы и последовательность выполнения
- •Контрольные вопросы
- •Лабораторная работа №5. Работа со стеком.
- •Цель работы
- •Содержание работы
- •5.1 Помещение в стек
- •Примеры помещения в стек
- •5.2 Извлечение из стека
- •Примеры извлечения из стека
- •Программа работы и последовательность выполнения
- •Контрольные вопросы
- •6.2 Расчет зависимости.
- •Данную программу можно записать более компактно:
- •Программа работы и последовательность выполнения
- •Контрольные вопросы
- •7.2 Инструкции сдвига
- •Программа работы и последовательность выполнения
- •Контрольные вопросы
- •8.2 Сортировка обменом (метод пузырька)
- •Программа работы и последовательность выполнения
- •Контрольные вопросы
- •9.2 Поиск с предварительным анализом
- •Программа работы и последовательность выполнения
- •Контрольные вопросы
- •Контрольные вопросы
- •11.2 Rot13.
- •Программа работы и последовательность выполнения
- •Контрольные вопросы
- •12.2 Вычисление crc
- •Прямой табличный алгоритм crc16
- •Программа работы и последовательность выполнения
- •Контрольные вопросы
- •Лабораторная работа №13. Синтез сигналов специальной формы
- •Цель работы
- •Содержание работы
- •Программа работы и последовательность выполнения
- •Контрольные вопросы
- •Список литературы
- •Приложение 1. Ассемблерные инструкции микропроцессора
9.2 Поиск с предварительным анализом
Алгоритмы, реализованные в этих программах, можно использовать для организации поиска в строке S небольшой длины, так как попытки повысить эффективность приведут к излишним накладным расходам. Для строки S большой размерности (потоковые данные для приложений мультимедиа) прямые алгоритмы поиска могут быть неэффективными. Положение можно исправить рассмотренными ниже алгоритмами поиска с предварительным анализом искомой подстроки.
Основу материала этого раздела составляет алгоритм КМП-поиска. Имя "КМП" является выборкой первых букв фамилий его создателей: Д. Кнута, Д. Мориса и В. Пратта. В основе алгоритма КМП-поиска лежит идея о том, что в процессе просмотра строки S с целью поиска вхождения в нее образца Р становится известной информация о просмотренной части. Работа алгоритма производится в два этапа.
Анализируется строка-образец Р. По результатам анализа заполняется вспомогательный массив смещений D.
Производится поиск в строке S с использованием строки-образца Р и массива смещений D.
Ниже приведена программа, реализующая алгоритм КМП-
Идея алгоритма БМ-поиска в том, что сравнению подвергаются не первые, а последние символы образца Р и очередного фрагмента строки S. Если они не равны, то сдвиг в строке S осуществляется сразу на всю длину образца. Если последние символы равны, то сравнению подвергаются предпоследние символы, и т. д. При несовпадении очередных символов величина сдвига извлекается из таблицы D, которая, таким образом, выполняет ключевую роль в этом алгоритме.
Заполнение таблицы происходит на основе конкретной строки-образца Р следующим образом. Размер таблицы определяется размером алфавита, то есть количеством кодов символов, которые могут появляться в тексте. В нашем случае мы отвели под таблицу D память длиной, равной длине кодовой таблицы ASCII. Таким образом, строки S и Р могут содержать любые символы. Первоначально все байты кодовой таблицы заполняются значением, равным длине строки-образца для поиска Р. Далее последовательно извлекаются символы строки-образца Р начиная с первого. Для каждого символа определяется позиция его самого правого вхождения в строку-образец Р. Это значение и заносится в таблицу D на место, соответствующее этому символу.
Программа работы и последовательность выполнения
Создайте новый проект. Процессор – dsPIC33FJ256GP710.
Подключите необходимые библиотеки.
Подключите отладчик (симулятор), встроенный в среду MPLABIDE.
Разработать программу, выполняющую поиск в строке по алгоритму указанному в таблице в соответствии с номером варианта
№ Варианта
|
Алгоритм поиска |
Задание
|
1 |
Прямой поиск |
Находит все вхождения слова «мой» и копирует их 2 раза. |
2 |
Прямой поиск |
Находит все вхождения слова «ты» и заменяет их на слово «вы». |
3 |
Прямой поиск |
Находит все вхождения слова «дурак» и удаляет их их текста. |
4 |
Прямой поиск |
Находит все вхождения слова «мы» и копирует их 3 раза, все вхождения слова «вы» удаляет. |
5 |
КМП |
Находит все вхождения слова «мой» и копирует их 2 раза. |
6 |
КМП |
Находит все вхождения слова «ты» и заменяет их на слово «вы». |
7 |
КМП |
Находит все вхождения слова «дурак» и удаляет их их текста. |
8 |
КМП |
Находит все вхождения слова «мы» и копирует их 3 раза, все вхождения слова «вы» удаляет. |
9 |
БМ |
Находит все вхождения слова «мой» и копирует их 2 раза. |
10 |
БМ |
Находит все вхождения слова «ты» и заменяет их на слово «вы». |
11 |
БМ |
Находит все вхождения слова «дурак» и удаляет их их текста. |
12 |
БМ |
Находит все вхождения слова «мы» и копирует их 3 раза, все вхождения слова «вы» удаляет. |
Открыть окно Watchи внести в него все регистры, которые используются в коде. В пошаговом режиме отладить код, контролируя изменение регистров в окнеWatch. После отладки программы, показать код и результаты работы программы преподавателю.
Создать блок схему программы.
Подготовить отчет.