Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовая программирование.doc
Скачиваний:
15
Добавлен:
19.03.2016
Размер:
931.33 Кб
Скачать

Разработка функции на языке Assembler

Как известно, функции, реализованные на языке «Ассемблер», работают быстрее. Компилятор, входящий в состав среды разработки VS2005, позволяет это реализовать.

Описание функции выполнено на языке Си, а тело функции представляет собой ассемблерную вставку. Для этого перед ассемблерной вставкой необходимо написать ключевое слово «__asm» и внутри фигурных скобок описать тело функции.

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

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

  1. инструкция movвыполняет копирование содержимого источника в приемник;

  2. инструкция subвыполняет вычитание содержимого источника и приемника;

  3. инструкция cmpвыполняет сравнение двух операндов и изменяет состояние флагов;

  4. инструкция jeвыполняет условный переход на метку, если операнды при выполнении инструкцииcmpбыли равны;

  5. инструкция jmpвыполняет безусловный переход на метку;

В результате был заменен следующий фрагмент кода программы:

pos = pos - 1;

if(pos == 0)

pos = line;

Ассемблерная вставка:

__asm {

mov al, pos;

mov bl, line;

sub al, 1;

cmp al, 0;

je equally;

jmp assignment;

equally:

mov al, bl;

assignment:

mov pos, al;

}

Руководство пользователя

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

Программа имеет функции создания, удаления и сохранения базы данных. Так же добавления, удаления и редактирования записи, осуществления поиска и сортировки элементов по признаку.

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

Группа 26

После нажатия любой клавиши программа выводит главное меню. Переход от одного пункта к другому осуществляется при помощи клавиатуры (стрелка вверх/вниз). Выбор пункта осуществляется нажатием кнопки ввода.

Главное меню состоит из следующих пунктов:

  1. Открытие файла

  2. Сохранение файла

  3. Удаление файла

  4. Просмотр данных

  5. Ввод данных

  6. Удаление всех данных

  7. Просмотр заставки

  8. О программе

  9. Выход

Группа 28

При возникновении каких-либо ошибок программа выводит оповещение. Например, если файл не найден. Если база данных пуста, то на экран выводится соответствующее информационное сообщение:

Группа 470

Если база данных содержит записи (или одну запись), то при выходе программа выводит диалоговое окно с запросом на сохранение файла:

Группа 478

При успешном открытии файла или после ввода записей на экране можно увидеть таблицу из пяти столбцов: порядковый номер товара, название товара, код товара, количество товаров на складе и стоимость единицы товара.

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

Переход от одного пункта к другому осуществляется при помощи клавиатуры (стрелка вправо/влево). Выбор пункта осуществляется нажатием кнопки ввода.

Группа 454

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

Для поля «Title» существует несколько проверок, таких как проверка на повторение одинакового названия, длину названия (30 символов) и проверка на содержание специального символа. Символ «*» существует как разделитель между столбцами в файлеdata.txt, следовательно он недопустим в полях базы данных. Для поля «Code» алгоритм аналогичный, но максимальная длина ограничивается до 6 символов.

Поля «Number» и «Cost» целочисленные, проверка ограничивается лишь диапазоном вводимых чисел (от 0 до 999999), так как эти поля не могут быть отрицательными.

При срабатывании функции проверки (было введено нежелательное значение) программа запрашивает ввод этого поля снова.

Группа 481

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

Для поиска нужной строки необходимо выбрать пункт «Find». Затем появится диалоговое окно, запрашивающее выбрать поле, по которому осуществляется поиск (По названию, либо по коду товара).

Затем, если найдена запись (или несколько), то результат будет выведен в виде той же таблицы со строкой или несколькими строками, по которым происходил поиск по вводимому критерию. При нажатии любой клавиши таблица вернет свой исходный вид (Будет показано подменю и исходная таблица).

НГруппа 487иже представлен результат поиска по критерию «Notebook». В названиях товара было найдено 3 совпадения, которые выведены на экран.

При выборе пункта подменю «Sort» происходит сортировка всех записей с указанными параметрами. В начале необходимо указать, по какому критерию осуществлять сортировку. Для этого было реализовано небольшое меню:

Группа 296

Затем необходимо определить тип сортировки (по возрастанию/убыванию):

Группа 299

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

Группа 302

Ниже представлен результат сортировки таблицы по цене в порядке убывания. Результат выводится на экран и ожидается нажатие клавиши.

Группа 305

Запрос на сохранение файла происходит либо при выходе из программы, либо при выборе пункта «Save File» в главном меню. Если база данных пуста, это окно выводится не будет.

Группа 306