Курсовая работа: Перевод чисел из различных систем счисления

Курсовая работа: Перевод чисел из различных систем счисления




⚡ 👉🏻👉🏻👉🏻 ИНФОРМАЦИЯ ДОСТУПНА ЗДЕСЬ ЖМИТЕ 👈🏻👈🏻👈🏻




























































"Перевод чисел из различных систем счисления"
В данной курсовой работе возникает задача разработки приложения, позволяющего выполнять перевод чисел из различных систем счисления, с применением средств ассемблера процессора x86.
Разработка программ ведется на основании следующих документов:
Единая система программной документации. Общие положения
Единая система программной документации. Виды программ и программных документов
Единая система программной документации. Техническое задание. Требования к содержанию и оформлению
Единая система программной документации. Спецификация. Требования к содержанию и оформлению
Единая система программной документации. Программа и методика испытаний. Требования к содержанию и оформлению
Единая система программной документации. Текст программы. Требования к содержанию и оформлению
Единая система программной документации. Описание программы
Единая система программной документации. Пояснительная записка. Требования к содержанию и оформлению
Единая система программной документации. Руководство системного программиста. Требования к содержанию и оформлению
Единая система программной документации. Руководство программиста. Требования к содержанию и оформлению
Единая система программной документации. Руководство оператора. Требования к содержанию и оформлению
Единая система программной документации. Схемы алгоритмов, программ, данных и систем. Условные обозначения и правила выполнения
Программа служит для перевода чисел из систем счисления с основанием 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, в которой производится окончательный перевод строки в число, происходит проверка на превышение допустимых значений входного числа, перевод в другую систему счисления, создание новой строки и генерация кода ошибки.
Далее проверяется код ошибки, если он не равен нулю, то выходим из процедуры и передаем код ошибки, иначе выходим из процедуры и передаем новую.
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, если нет.
При выполнении данной курсовой работы используется персональный компьютер поколения Intel. Данный компьютер оснащен всеми устройствами необходимыми для работы в среде разработки Delphi 7, и последующем запуске полученных программ.
Программа №1 начинает свою работу при запуске приложения с именем «perevod.exe».
Для программы входными данными являются строка edit1.text и переключатели radiobutton1, radiobutton2, radiobutton3, radiobutton4.
В программе выходными данными будет являться строка label1.caption.
Объектами испытаний являются три разработанных приложения: perevod.exe.
Целью испытаний данных приложений является выяснение возможных ошибок во время выполнения программы, которые не были обнаружены на стадии разработки.
Программы должны надежно работать и выполнять свои функции при любых возможных наборах исходных данных, выдавая результат за конечное время.
Техническое задание – ГОСТ 19.201–78
Программа и методика испытаний – ГОСТ 19.301–79
Описание программы – ГОСТ 19.402–78
Для проведения испытаний используется IBM-совместимый персональный компьютер с операционной системой семейства Windows.
Результат: сообщение «пустая строка»
Результат: сообщение «неверный завершающий символ»
Результат: сообщение «превышение допустимого диапазона»
· Результат: сообщение «строка введена не корректно»
· Результат: сообщение «строка начинается с нуля»
Программа служит для перевода чисел из систем счисления с основанием 2, 8, 10, 16. Для того чтобы программа работала и выполняла соответствующие функции, компьютер должен иметь определенные технические средства, а именно:
Для запуска программы необходимо запустить приложение «perevod.exe».
Для программы входными данными являются число и переключатели.
Выходным данным будет число, переведенное в систему счисления.
1) если поле ввода пусто, то выводится сообщение:
2) если завершающий символ введен неверно, то выводится сообщение:
3) если превышен диапазон значений, то выводится сообщение:
4) если число введено не корректно, то выводится сообщение:
5) если первый символ ноль, то выводится сообщение:
Текст основного модуля среды Delphi
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
procedure Button1Click (Sender: TObject);
procedure Button2Click (Sender: TObject);
procedure perevod (var s:shortstring; i:integer); external;
procedure TForm1. Button1Click (Sender: TObject);
showmessage ('последний символ должен быть:'+#13+#10+'цифра, если десятичная система, '+#13+#10+'b, если двоичная система, '+#13+#10+'o, если восьмеричная система, '+#13+#10+'h, если шестнадцатиричная система')
showmessage ('число введено неправильно')
showmessage ('ноль не может быть первым символом числа')
showmessage ('число должно быть в диапазоне'+#13+#10+'0..2147483647, если десятичная система, '+#13+#10+'1111111111111111111111111111111, если двоичная система, '+#13+#10+'17777777777, если восьмеричная система, '+#13+#10+'7FFFFFFF, если шестнадцатиричная система')
procedure TForm1. Button2Click (Sender: TObject);
; #########################################################################
;##########################################################################
; in ebx указатель на строку, edi длина строки
; out iss выходная разрядность, flag код ошибки
inputss proc; процедура для определения входной системы счисления
cmp BYTE PTR [ebx+edi], 30h; если последний элемент массива меньше 30h
cmp BYTE PTR [ebx+edi], 39h; если последний элемент массива больше 39h
mov iss, 10; иначе копируем 10 в iss
jmp.exitinputss; переход к.exitinputss
cmp BYTE PTR [ebx+edi], 62h; если последний элемент массива не равен 62h
mov iss, 2; иначе иначе копируем 2 в iss
cmp BYTE PTR [ebx+edi], 6fh; если последний элемент массива не равен 6fh
mov iss, 8; иначе иначе копируем 8 в iss
cmp BYTE PTR [ebx+edi], 68h; если последний элемент массива не равен 68h
jne. ErrInSS; то переход к. ErrInSS
mov iss, 16; иначе иначе копируем 16 в iss
mod:; если система счисления 2, 8 или 16
dec BYTE PTR [ebx]; то декремент системы счисления в паияти
jmp.exitinputss; переход к.exitinputss
mov flag, 2; присваеваем flag код ошибки 2
; #########################################################################
; in iss входная разрядность, ebx указатель на строку, edi длина строки
verinput proc; процедура проверки правельности ввода
mov eax, iss; копируем основание системы счисления в eax
cmp eax, 16; если основание системы счисления равно 16
sub BYTE ptr [ebx+edi], 30h; вычитаем из элемента массива 30h
jb.errinput; если результат меньше 0, то переход к.errinput
cmp BYTE ptr [ebx+edi], al; если результат больше или равен основанию системы счисления
jae.errinput; то переход к.errinput
jmp.exitverinput; переход.exitverinput
sub BYTE ptr [ebx+edi], 30h; вычитаем из элемента массива 30h
jb.errinput; если результат меньше 0, то переход к.errinput
cmp BYTE ptr [ebx+edi], 10; если результат меньше 10
jb.p2; то переход к.p2 (если символ в диапазоне 0..9)
sub BYTE ptr [ebx+edi], 7h; вычитаем из элемента массива 7h
cmp BYTE ptr [ebx+edi], 10; если результат меньше 10
jb.errinput; если результат меньше 10, то переход к.errinput
cmp BYTE ptr [ebx+edi], 10h; если результат меньше 10
sub BYTE ptr [ebx+edi], 20h; вычитаем из элемента массива 20h
jb.errinput; если результат меньше 0, то переход к.errinput
jb.p2; то переход к.p2 (если символ в диапазоне a..f)
jmp.errinput; иначе переход к.errinput
mov flag, 3; присваеваем flag код ошибки 3
jmp.exitverinput; переход к.exitverinput
jmp.exitverinput; иначе переход к.exitverinput
mov flag, 4; присваеваем flag код ошибки 4
;#########################################################################
; in iss входная разрядность, ebx указатель на строку, edi длина строки, oss выходная; разрядность
perepolnenie proc; проверка превышения максимальных значений и окончание перевода
mov cl, BYTE ptr [ebx+esi+1]; пересылаембайтподномером esi в cl
add eax, ecx ; прибавляем его к eax
mul iss ; умножаем eax на основание входной системы
cmp edx, 0 ; если старшее слово произведения не равно нулю,
cmp eax, 7fffffffh; если eax больше 7fffffffh,
mov ecx, oss; посылаем в ecx основание выходной системы
xor edx, edx ; очищаем edx (остаток от деления)
mov BYTE ptr str[esi], dl; пересылаем остаток от деления в массив str
cmp eax, 0; если частное не равно нулю,
mov edx, esi ; сохраняем esi (количество элементов нового массива в edx)
mov BYTE ptr [ebx], dl; сохраняем в память длинну массива
mov al, BYTE ptr str [edx-1]; сохраняем символ из str в al (начиная с конца)
mov BYTE ptr [ebx+esi+1], al ; сохраняем его в исходном массиве
cmp edx, 0 ; если edx не равен нулю
mov dl, BYTE ptr [ebx]; копируем в dl длинну массива
mov edi, edx; копируем в edi длину массива
cmp BYTE ptr [ebx+edi], 9; если элемент массива больше 9
add BYTE ptr [ebx+edi], 30h; иначе прибавляем 30h
add BYTE ptr [ebx+edi], 57h; прибавляем к элементу массива 57h
cmp ecx, 2 ; если выходная система не равна 2
mov BYTE ptr [ebx+esi+1], al ; в последний байт массива
add BYTE ptr [ebx], 1; и увеличиваем длину массива на 1
jmp.exitperepolnenie ; переход на выход
cmp ecx, 8 ; если выходная система не равна 8
mov BYTE ptr [ebx+esi+1], al; в последний байт массива
add BYTE ptr [ebx], 1; и увеличиваем длину массива на 1
jmp.exitperepolnenie ; переход на выход
cmp ecx, 16 ; если выходная система не равна 16
jne.exitperepolnenie ; то переходим к.exitperepolnenie
mov BYTE ptr [ebx+esi+1], al ; в последний байт массива
add BYTE ptr [ebx], 1; и увеличиваем длину массива на 1
jmp.exitperepolnenie ; переход на выход
mov flag, 5; присваеваем flag код ошибки 5
;##########################################################################
; in eax указатель на строку, edx разрядность выходной строки
mov ebx, eax; записываем в ebx указатель на строку
mov oss, ecx; записываем в oss разрядность выходной строки
mov al, BYTE PTR [ebx]; записываем в edi длину строки
mov edi, eax; копируем в edi длину строки
cmp edi, 0; если длина строки равна нулю,
je.pustayastroka; то переходим к.pustayastroka
call inputss; определяем входную разрядность, результат в iss
cmp flag, 0; если флаг ошибки не равен нулю,
jne.exitperevod; то переход к.exitperevod
call verinput; переводим символы в массиве в цифры и проверяем правильность ввода
cmp flag, 0; если флаг ошибки не равен нулю,
jne.exitperevod; то переход к.exitperevod
call perepolnenie; проверяем на превышение максимальных значений и производим перевод числа
jmp.exitperevod; переход к.exitperevod
mov flag, 1; присваеваем флагу код 1
mov BYTE PTR [ebx], 1; устанавливаем длину строки в 1
mov BYTE PTR [ebx+1], al; записываем в первый элемент массива код ошибки

Название: Перевод чисел из различных систем счисления
Раздел: Рефераты по информатике, программированию
Тип: курсовая работа
Добавлен 05:36:57 02 января 2011 Похожие работы
Просмотров: 466
Комментариев: 14
Оценило: 2 человек
Средний балл: 5
Оценка: неизвестно   Скачать

Привет студентам) если возникают трудности с любой работой (от реферата и контрольных до диплома), можете обратиться на FAST-REFERAT.RU , я там обычно заказываю, все качественно и в срок) в любом случае попробуйте, за спрос денег не берут)
Да, но только в случае крайней необходимости.

Курсовая работа: Перевод чисел из различных систем счисления
Огэ По Русскому Языку Цыбулько Сочинения
Контрольная работа: Дипломатія у Древньому Римі
Реферат: Региональные проблемы экологической безопасности на полуострове Ямал
Ослышки При Восприятии Речи Реферат
Дипломная работа: Особенности перевода английских частиц в художественной литературе
Дипломная работа: Бухгалтерский учет, анализ и контроль кассовых операций
Лекции - Фармакология (гиполипидемические средства)
Реферат На Тему Реклама В Рыночной Экономике
Реферат: Влияния самооценки на уровень успешности профессиональной деятельности
Примерные Темы Эссе По Английскому
Реферат: Sometimes A Shining Moment Good Teachers Bad
Реферат: Параметры качества управленческого решения и условия их обеспечения
Реферат: Краткий путеводитель по стилям и направлениям в искусстве. Скачать бесплатно и без регистрации
Дипломная работа по теме Информационные потоки и их правовое регулирование
План Сочинения Век Нынешний Век Минующий
Реферат по теме Отношения организмов в агросистемах
Контрольная работа: Социология в России конец 19 начало 20 века
Дипломная работа по теме Построение защищенной базы данных предприятия
Сочинение Ревизор 8 Класс Темы
Реферат: The Tortilla Curtain By T. Coraghessan Boyle
Реферат: Юридическое обеспечение электронного маркетинга
Реферат: Атомная бомба
Реферат: Основи розчинення та його використання в хімічному аналізі

Report Page