Курсовая работа
На тему
"Перевод чисел из различных систем счисления"
Рязань 2009
В данной курсовой работе возникает задача разработки приложения, позволяющего выполнять перевод чисел из различных систем счисления, с применением средств ассемблера процессора x86.
Разработка программ ведется на основании следующих документов:
1. ГОСТ 19.001–77
Единая система программной документации. Общие положения
2. ГОСТ 19.101–77
Единая система программной документации. Виды программ и программных документов
3. ГОСТ 19.201–78
Единая система программной документации. Техническое задание. Требования к содержанию и оформлению
4. ГОСТ 19.202–78
Единая система программной документации. Спецификация. Требования к содержанию и оформлению
5. ГОСТ 19.301–79
Единая система программной документации. Программа и методика испытаний. Требования к содержанию и оформлению
6. ГОСТ 19.401–78
Единая система программной документации. Текст программы. Требования к содержанию и оформлению
7. ГОСТ 19.402–78
Единая система программной документации. Описание программы
8. ГОСТ 19.404–79
Единая система программной документации. Пояснительная записка. Требования к содержанию и оформлению
9. ГОСТ 19.503–79
Единая система программной документации. Руководство системного программиста. Требования к содержанию и оформлению
10. ГОСТ 19.504–79
Единая система программной документации. Руководство программиста. Требования к содержанию и оформлению
11. ГОСТ 19.505–79
Единая система программной документации. Руководство оператора. Требования к содержанию и оформлению
12. ГОСТ 19.701–90
Единая система программной документации. Схемы алгоритмов, программ, данных и систем. Условные обозначения и правила выполнения
Программа служит для перевода чисел из систем счисления с основанием 2, 8, 10, 16.
В программе организация входных данных осуществляется в виде поля для ввода числа и переключателей для выбора системы счисления. Организация выходных данных осуществляется в виде метки.
В программе обеспечивается контроль правильности ввода числа. Если число введено не корректно, то выводится сообщение об ошибке.
Наименование и обозначение программы «perevod».
Для выполнения программы необходима ОS Windows 9x/2000/XP/vista/7
Программа написана с использованием Delphi 7, TASM32.
1) Окно формы в начале выполнения программы:
Окно формы при выполнении
Алгоритмы обработчиков событий для программы:
1) Событие С1 – для выхода из программы. Выполнение обработчика происходит при нажатии кнопки «Выход».
Блок-схема алгоритма обработчика события Button2Click
2) Событие С2 – перевод числа из одной системы счисления в другую (Рис. 3.2). Выполнение обработчика происходит при нажатии кнопки «Выполнить».
Описание алгоритма:
Определяется выходная система счисления i при помощи переключателей RadioButton, копируется содержимое Edit1.text в параметр s, вызывается ассемблерная процедура, в которую передаются параметры s и i. После выполнения проверяется наличие ошибок, и если ошибки находятся, то выводится сообщение о соответствующей ошибке, иначе выводится результат выполнения процедуры.
3) Процедура Perevod – внешняя процедура(external), написанная на языке ассемблера. Модель памяти маленькая(small), передача параметров регистровым способом(register). Находится в модуле modul.obj.
Параметрами являются строка типа shortstring (указатель на строку), передается через регистр eax; число типа integer, передается через регистр ecx.
Объявляются локальные параметры: srt – массив, элементы которого типа byte, iss – параметр типа dword, для хранения входной системы счисления, oss – параметр типа dword, для хранения выходной системы счисления; flag – параметр типа dword, для хранения кода ошибки.
Блок-схема алгоритма обработчика события Button1Click
Описание алгоритма:
Определяем длину строки (нулевой элемент строки). Если длина равна нулю, то выходим из процедуры и передаем код ошибки 1, иначе вызываем процедуру inputss, в которой определяется входная разрядность и генерируется код ошибки. Далее проверяется код ошибки, если он не равен нулю, то выходим из процедуры и передаем код ошибки, иначе вызываем процедуру verinput, в которой проверяется правильность ввода, производится перевод символов в числа и генерируется код ошибки. Далее проверяется код ошибки, если он не равен нулю, то выходим из процедуры и передаем код ошибки, иначе вызываем процедуру perepolnenie, в которой производится окончательный перевод строки в число, происходит проверка на превышение допустимых значений входного числа, перевод в другую систему счисления, создание новой строки и генерация кода ошибки.
Далее проверяется код ошибки, если он не равен нулю, то выходим из процедуры и передаем код ошибки, иначе выходим из процедуры и передаем новую.
Блок-схема процедуры Perevod
4) Процедура inputs. Находится в модуле modul.obj.
Параметрами являются строка типа указатель на строку – ebx, длина строки – edi.
Описание алгоритма:
Считываем последний символ строки. Если его код находится в диапазоне 30h – 39h, то возвращаем 10, как основание входной системы счисления. Если код последнего символа 62h, то возвращаем 2, как основание входной системы счисления. Если код последнего символа 6аh, то возвращаем 8, как основание входной системы счисления. Если код последнего символа 68h, то возвращаем 16, как основание входной системы счисления. Иначе возвращаем код ошибки равный 2.
5) Процедура verinput. Находится в модуле modul.obj.
Описание алгоритма:
Считываем первый символ строки. Если его код 30h, то возвращаем код ошибки 4. Если основание входной системы счисления 16, то проверяем каждый элемент массива в диапазоны: если входит в диапазон 0..9, то вычитаем 30h, если входит в диапазон A..F, то вычитаем 37h, если входит в диапазон a..f, то вычитаем 57h, иначе возвращаем код ошибки 3.
6) Процедура perepolnenie. Находится в модуле modul.obj.
Описание алгоритма:
От младших адресов к старшим прибавляем элементы массива к результату и умножаем на основании системы счисления. Если результат больше 7fffffffh, то возвращаем код ошибки 5. Иначе делим результат на основание выходной системы счисления, пока результат не станет равным нулю и записываем остатки от деления в массив. Далее прибавляем к элементам массива 30h, если он входит в диапазон 1..9, или прибавляем 57h, если нет.
Блок-схема процедуры inputss
При выполнении данной курсовой работы используется персональный компьютер поколения Intel. Данный компьютер оснащен всеми устройствами необходимыми для работы в среде разработки Delphi 7, и последующем запуске полученных программ.
Программа №1 начинает свою работу при запуске приложения с именем «perevod.exe».
Для программы входными данными являются строка edit1.text и переключатели radiobutton1, radiobutton2, radiobutton3, radiobutton4.
В программе выходными данными будет являться строка label1.caption.
Объектами испытаний являются три разработанных приложения: perevod.exe.
Целью испытаний данных приложений является выяснение возможных ошибок во время выполнения программы, которые не были обнаружены на стадии разработки.
Программы должны надежно работать и выполнять свои функции при любых возможных наборах исходных данных, выдавая результат за конечное время.
Техническое задание – ГОСТ 19.201–78
Программа и методика испытаний – ГОСТ 19.301–79
Текст программы – ГОСТ 19.401–78
Описание программы – ГОСТ 19.402–78
Для проведения испытаний используется IBM-совместимый персональный компьютер с операционной системой семейства Windows.
· Входные данные:
строка: «»
переключатель: десятичная
Результат: сообщение «пустая строка»
· Входные данные:
строка: «12345q»
переключатель: десятичная