Автор работы: Пользователь скрыл имя, 18 Ноября 2012 в 08:44, курсовая работа
Распространение процессоров выявило необходимость изучения языка Ассемблер для написания программ для персональных ЭВМ из-за двух причин. Во-первых, программы, написанные на языке Ассемблер, требуют значительно меньшего объема памяти и ресурсов компьютера. Во-вторых, знание языка Ассемблер и машинного кода дает понимание архитектуры машины. А знание архитектуры машины и принципов ее работы дает возможность усовершенствовать написанные программы и повысить их быстродействие за счет применения некоторых специальных методов программирования.
1 Введение……………………………………………………………………..4
2 Постановка задачи……………………………………………………….….6
3 Метод решения задачи……………………………………………………...8
4 Разработка состава исходных, промежуточных и
выходных данных………………………………………………………………9
5 Разработка алгоритма решения задачи…………………………………..10
6 Описание программы…………………………………………………......11
7 Отладка программы……………………………………………………….12
8 Описание языка программирования……………………………………..13
9 Руководство системного программиста…………………………………16
10 Руководство оператора…………………………………………………...21
11 Заключение………………………………………………………………..22
12 Список литературы……………………………………………………….23
Приложение А
Схема данных………………………………………………………………..26
Приложение Б
Схема программы……………………………………………………………27
Приложение В
Текст программы…………………………………………………………….29
Приложение С
Пример выполнения………………………………………………………....36
1 Введение
Распространение процессоров выявило необходимость изучения языка Ассемблер для написания программ для персональных ЭВМ из-за двух причин. Во-первых, программы, написанные на языке Ассемблер, требуют значительно меньшего объема памяти и ресурсов компьютера. Во-вторых, знание языка Ассемблер и машинного кода дает понимание архитектуры машины. А знание архитектуры машины и принципов ее работы дает возможность усовершенствовать написанные программы и повысить их быстродействие за счет применения некоторых специальных методов программирования.
Программы на языке ассемблера
также переводятся в машинный
код с помощью программы-
Почему нельзя разрабатывать программы непосредственно в машинных кодах, если язык ассемблера и машинный код однозначно соответствуют один другому? Ответ прост: машинный код слишком громоздкий. Хотя первые программы для компьютеров действительно писались в машинном коде, сегодня по веским причинам это практически не делается. Например, многие машинные коды зависят от относительного положения в памяти. Кроме того, в чисто машинном коде не используются именованные и нет возможности указать программе фиксированные адреса, по которым содержатся различные значения и подпрограммы. Это означает, что если вы измените одну команду 10000-байтовой программе на машинном коде, то, возможно, вам придётся модифицировать кроме этого ещё 9000 других кодов!
2 Постановка задачи
Разработать программу на языке Assembler, которая вычисляет значения функции в пределах от x=1..n при изменении x с шагом H.
Код для выполнения арифметических операций двоичный.
Формат исполняемого модуля: com
Программа оформляется в виде законченного программного модуля который должен выполнять следующее функции:
Процесс создания программы включает в себя следующие этапы:
1) Постановка задачи.
2) Методы решения задачи.
3) Разработка структур данных.
4) Разработка алгоритмов решения.
5) Разработка программы.
6) Отладка программы.
7) Оформление технической документации к программе
3 Метод решения задачи
На курсовом проектировании необходимо создать программу на языке Assembler ,выполняющую следующие операции: ввод данных с клавиатуры, вычисление заданной функции и вывод результата.
Для реализации поставленной задачи необходимо составить алгоритм программы, учитывающий как специфику программы, так и специфику языка программирования.
Программу необходимо написать по процедурному принципу, для уменьшения ее размера, а также для удобства и быстроты изменения самой программы.
Для описания данных создадим сегмент данных, в котором укажем имена переменных и их типы.
Необходимо предусмотреть следующие процедуры, реализующие следующие операции: Вывод (сообщений и результатов), Ввод (с клавиатуры), Обработка ошибок, Вычисление функции, процедура работы с экраном.
4 Разработка состава исходных, промежуточных и выходных данных
В программе используются следующие типы данных:
Таблица 1
Обозначение |
Тип |
Назначение |
T0 - T16 |
db(1 байт) |
Константы, содержат текст выводимого на экран сообщения |
A, B, C, Y, X1, Xn, h, pause |
db(1 байт) |
Переменные предназначенные |
ascii |
dw(2 байта) |
Память для ASCII-кодов используется программой для хранения преобразованных значений |
mn |
dw(2 байта) |
Константа, множитель для вычисления ASCII кодов |
Ak, Bk, Ck, Yk, X1k, Xnk, xni, hk, cods |
dw(2 байта) |
Переменные для хранения переведённых значений в виде ASCII кодов |
Cur,cuy |
dw(2 байта) |
Переменные для хранения координат курсора |
rez1 – rez4, rezf |
dw(2 байта) |
Переменные для хранения промежуточных результатов вычисления |
5 Разработка алгоритма решения задачи
Алгоритм решения поставленной задачи мы будем разрабатывать по процедурному принципу. Алгоритм решения задачи можно представить следующим образом:
Результатом выполнения данной части курсовой работы является блок-схема программы, приведенная в Приложении А и Приложении Б
6 Описание программы
Программа состоит из :
1) Главная часть – эта часть программы, которая организует пользовательский интерфейс, также она объединяет все процедуры используемые в программе.
2) (inp)Ввод – это процедура ввода всех переменных.
Заполнение происходит следующим образом:
Ввод A Ввод B Ввод C Ввод y Ввод X1 Ввод Xn Ввод Xn Введите шаг H
3) (oput) Вывод – эта процедура вывода текстовых сообщений.
4) (clear) Очистка – эта процедура очистки экрана.
5) (cursor) Установка курсора в заданное место
6) (cod) Вычисление порядкового символа производиться перевод в ASCII код
7) (decod) Обратная процедура перевода
8) (error) Обработка ошибок– процедура вывода ошибки при делении на 0
9) (zf) Процедура вывода положительного значения функции и увеличения x на h.
Значение функции Y=
Основное тело программы определено:
begin:
……………..
END begin
Текст программы приведён в приложении В.
7 Отладка программы
Отладка и тестирование
проводились встроенными
После создания программы возникла необходимость исправить синтаксические и лексические ошибки. Нахождение ошибок осуществлялось попыткой запустить программу, при этом система показывала номер строки ошибки и выводила код данной ошибки. Исправление синтаксических и лексических ошибок осуществлялось при помощи пункта меню Debug, а также с помощью литературы, приведённой в разделе пояснительной записки
Список литературы. После исправления синтаксических ошибок, средствами Отладки, производилась проверка всех путей алгоритма, посредством ввода разнообразных, тестирующих данных. После устранения всех ошибок и недочётов, программа стала отвечать требованиям задания курсового проекта. Дальнейшая отладка и тестирование программы на этом прекратилось.
8 Описание языка программирования
В задании на курсовое проектирование в качестве языка программирования указан язык Ассемблер. Язык Ассемблера – это язык программирования низкого уровня, приближенный к системе команд процессора ЭВМ.
Турбо Ассемблер фирмы Borland представляет собой многопроходный ассемблер с разрешением опережающих ссылок, скоростью ассемблирования до 48000 строк в минуту (на компьютере IBM PS/2, модель 60), совместимый с макроассемблером фирмы Microsoft MASM и дополнительной возможностью использования режима расширенного синтаксиса Ideal. Независимо от вашего опыта в программировании вы, несомненно, оцените эти особенности, а также ряд других средств, которые значительно облегчают программирование на Ассемблере. Турбо Ассемблер является мощным ассемблером, работающим с командной строкой, который воспринимает ваши исходные файлы (файлы с расширением .ASM) и создает из них объектные модули (файлы с расширением .OBJ). После этого вы можете использовать программу-компоновщик фирмы Borland TLINK.EXE, отличающуюся высокой скоростью компоновки, для компоновки полученных объектных модулей и создания выполняемых файлов (файлов с расширением .EXE).
Требования к программному и аппаратному обеспечению
Турбо Ассемблер работает на компьютерах семейства IBM PC, включая модели XT, AT и PS/2, а также на полностью совместимых с ними компьютерах. Для работы Турбо Ассемблера требуется операционная система MS-DOS (версии 2.0 или более поздняя) и не менее 256К оперативной памяти.
Турбо Ассемблер генерирует инструкции процессоров 8086, 80186, 80286, 80386 и i486, а также инструкции с плавающей точкой для арифметических сопроцессоров 8087, 80287 и 80387. (Подробнее об инструкциях процессором семейства 80х86/80х87 рассказывается в книгах фирмы Intel.)
Поддержка DPMI
Турбо Ассемблер поддерживает спецификацию Интерфейса защищенного режима DOS (DOS Protected Mode Interface - DPMI). Будучи разработанным комитетом ведущих компаний-производителей программного и аппаратного обеспечения (включая Borland), DPMI определяет стандартный интерфейс, полностью использующий преимущества средств защищенного режима процессоров 80286, 386 и i486.
По мере увеличения числа компьютеров на базе процессоров 386 и i486 растет и число программных продуктов, использующих возможности этих процессоров. Защищенный и виртуальный 8086 режимы данных процессоров означают изменение самого вычислительного процесса. Теперь мы можем использовать многозадачный режим и средства расширенной памяти. Раньше организация работы прикладной программы, использующей расширенную память, в многозадачном режиме с другим программным обеспечением представляла собой проблему. Стандарт DPMI решает эту проблему. Прикладные программы, использующие расширенную память, разработанные в стандарте DPMI, будут надежно работать в многозадачных системах.
В настоящее время Турбо Ассемблер использует сервисные средства DPMI, предлагаемые Microsoft Windows. Турбо Ассемблер может работать в операционной среде, использующей средства DPMI. Если вы решите перейти на новую операционную среду, в которой эти сервисные средства доступны, то ваши затраты на программное обеспечение себя оправдают.
Примечание: Стандарт DPMI поддерживает версия Турбо Ассемблера TASMX.EXE.
Известно, что программы, выполняемые под управлением MS-DOS, могут быть одного из двух типов: COM или EXE. Основное различие этих типов заключается в том, что программы типа COM состоят из единственного сегмента памяти, в котором размещаются программные коды, данные и стек, то есть программа этого типа не может занимать объем памяти более 64 Кбайт. Программы типа ЕХЕ не ограничены по объему памяти и для хранения программных кодов, данных и стека используют разные сегменты памяти. В формате СОМ пишутся специфические программы (обработчики прерываний, резидентные программы).
9 Руководство системного программиста
Программа написана в виде com модуля. Имеет в себе следующие процедуры
Clear, cursor, oput, inp, error, zf, cod, decod.
Опишем принцип работы программы
Вывод сообщения о начале работы программы:
mov dx,0000h ;в регистр dx заносим координаты курсора (0 строка)
call cursor ;вызов процедуры установки курсора
lea dx,T0 ;загружаем подсказку (сообщение о разработчике)
call oput ;вызов процедуры вывода на экран
и т.д. нужное количество раз со смещением курсора вниз.
Аналогично производится ввод для B, C, x, y, h
Вычисление функции производится с использованием команд SUB, MUL, DIV, запись переменных и временных результатов осуществляется командой
Опишем подробнее процедуры, применяющиеся в программе
1. Процедура очистки экрана:
clear proc ;процедура очистки экрана
mov AH,6h ;переносим в регистр AH 06h
mov BH,07h ;переносим в регистр BH 07h
mov CX,0000h ;переносим в регистр CX 0000h
mov DX,184fh ;переносим в регистр DX 184fh
int 10h ;прерывание BIOS
ret ;выход из процедуры
clear endp
2. Процедура установки курсора:
cursor proc ;процедура установки курсора
mov AH,2h ;переносим в регистр AH 2h