Программа-калькулятор, позволяющая пользователю выполнять четыре основных арифметических действия над числами, укладывающимися в 8-байтовый диапазон
Краткое сожержание материала:
Размещено на
6
Московский Энергетический Институт
Институт автоматики и вычислительной техники
Кафедра ВМСС
Курсовая работа по дисциплине
«Системное программное обеспечение»
Тема: Программа-калькулятор, позволяющая пользователю выполнять четыре основных арифметических действия над числами, укладывающимися в 8-байтовый диапазон
Студент: Резвая Г.В.
Принял: Чернов С.А.
Москва 2011
СОДЕРЖАНИЕ
Введение
1. Анализ задания
2. Проектирование пользовательского интерфейса
3. Выбор формата представления данных
4. Макросы, процедуры, их назначение
5. Используемые функции, их назначение
6. Тестирование и отладка
Заключение
Список литературы
Приложение А. Листинг программы
ВВЕДЕНИЕ
Проведение четырех основных арифметических операций над целыми числами - подзадача, реализованная в большинстве пользовательских программ (как явно, так и неявно). Решение данной задачи требует не столько обширных знаний языка Ассемблер, сколько практических навыков работы. Реализация многоэтапных алгоритмов вычисления требует использования многочисленных операторов и функций языка.
1. АНАЛИЗ ЗАДАНИЯ
Техническое задание: Разработать программу-калькулятор, позволяющую пользователю выполнять четыре основных арифметических действия над числами, укладывающимися в 8-байтовый диапазон.
Разобьем задачу на подзадачи:
- считывание чисел из командной строки;
- считывание символа операции;
- исходя из значения символа операции, выполнение необходимых вычислений;
- вывод результата;
- обработка исключений (например: проверка на корректность введенных символов; проверка на нулевой делитель, при выполнении операции деления и тп.).
По заданию числа должны укладываться в 8-байтовый диапазон. Было принято решение производить вычисления в 10-ричном формате (так как алгоритмы вычисления нетривиальны, в отличие от вычислений в 2-ном формате), отсюда следует, что одному разряду числа будет соответствовать один байт памяти, также один байт памяти должен быть выделен, на хранение знака (1 байт - знак + 7 байт - число = 8 байт).
2. ПРОЕКТИРОВАНИЕ ПОЛЬЗОВАТЕЛЬСКОГО ИНТЕРФЕЙСА
Входными данными являются 2а числа (обязательно со знаком), участвующие в вычислении, символ операции (+, -, *, /). При вводе некорректных численных знаков и символов операции действий не выполняется, так как программа находится в ожидании одного из необходимых символов и не продолжит работу до его ввода. При вводе некорректных числовых значений выводится сообщение об ошибке и приглашение повторить попытку ввода данных.
Если происходит то или иное исключение (например: пользователь ввел нулевой делитель при выполни операции деления), выводится сообщение об ошибки с понятным комментарием и приглашение повторить попытку ввода данных.
Выходными данными является результат выбранной операции со знаком (если не произошло исключений).
После выполнения операции можно выполнить следующую. Чтобы выйти из программы нужно записать символ q или Q при приглашении ввести символ операции.
3. ВЫБОР ФОРМАТА ПРЕДСТАВЛЕНИЯ ДАННЫХ
Для определения данных в программе используются следующие директивы: db (байт), dq (учетверенное слово). В таблице 1 перечислены переменные, которые фигурируют в программе. Переменные, которые используются для удобства (при просмотре состояния памяти через отладчик) в таблице не приведены.
Таблица 1
Имя |
Директива |
Назначение |
|
string_1 |
db |
«Введите число» |
|
string_2 |
db |
«Выберите операцию» |
|
string_3 |
db |
«Введено некорректное число. Попробуйте снова» |
|
string_4 |
db |
«Некорректная операция. a<b. Попробуйте снова» |
|
string_5 |
db |
Перевод каретки |
|
string_6 |
db |
«Результат операции» |
|
string_7 |
db |
«Некорректная операция. b=0. Попробуйте снова» |
|
chastnoe |
dq |
Результат операции деления. (Частное) |
|
bufer_01 |
dq |
Считанное с клавиатуры 1е число |
|
numbe_01 |
dq |
Переписанное 1 число. Запись справа налево, начиная с младших разрядов |
|
bufer_02 |
dq |
Считанное с клавиатуры 2е число |
|
numbe_02 |
dq |
Переписанное 2 число. Запись справа налево, начиная с младших разрядов |
|
bufer_03 |
dq |
Результат операций (сложение, вычитание) |
|
bufer_04 |
dq |
Промежуточный результат деления, умножения |
|
flag |
db |
Результат сравнения 2х чисел (00 - a > b, 01 - a < b) |
|
flag2 |
db |
Вспомогательный флаг при выполнении деления |
|
flag01 |
db |
Хранит знак 1 числа |
|
flag02 |
db |
Хранит знак 2 числа |
|
flag03 |
db |
Хранит знак результата |
4. МАКРОСЫ, ПРОЦЕДУРЫ, ИХ НАЗНАЧЕНИЕ
программа макрос алгоритм
Список макросов, процедур и описание их функциональной нагрузки приведено в таблице 2.
Таблица 2
Макросы |
||
|
Вывод строки |
|
znak |
Считывание знака числа (+, -) |
|
read_b |
Считывание строки в буфер из консоли |
|
perep |
Перенос числа из буфера в память, начиная с правого края |
|
perem |
Меняем местами 2а числа в памяти |
|
set_flag |
Установка знака результата операции |
|
nuli |
Обрезаем лидирующие нули. Проверяем нулевое ли число |
|
smesh |
Передвигаем разряд на одну ячейку влево. В указанном отрезке памяти |
|
read_kl |
Считывание символа операции |
|
Процедуры |
||
clear |
Очистка экрана |
|
srav |
Сравниваем 2а числа |
|
zp_znak |
Считываем знак числа из консоли |
|
Другие файлы:
Разработка программного обеспечения для реализации арифметических операций над комплексными числами Программа "Калькулятор" Родовое содержание и видовые формы арифметической операции над натуральными числами Действия над числами в различных системах счисления Калькулятор комплексных чисел |