Разработка программы на Ассемблере

Автор работы: Пользователь скрыл имя, 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

Работа состоит из  3 файла

Основная часть.doc

— 369.00 Кб (Скачать документ)

1 Введение

 

Распространение процессоров  выявило необходимость изучения языка Ассемблер для написания программ для персональных ЭВМ из-за двух причин. Во-первых, программы, написанные на языке Ассемблер, требуют значительно меньшего объема памяти и ресурсов  компьютера. Во-вторых, знание языка Ассемблер и машинного кода дает понимание архитектуры машины. А знание архитектуры машины и принципов ее работы дает возможность усовершенствовать написанные программы и повысить их быстродействие за счет применения некоторых специальных методов программирования.

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

Почему нельзя разрабатывать  программы непосредственно в  машинных кодах, если язык ассемблера и машинный код однозначно соответствуют один другому? Ответ прост: машинный код слишком громоздкий. Хотя первые программы для компьютеров действительно писались в машинном коде, сегодня по веским причинам это практически не делается. Например, многие машинные коды зависят от относительного положения в памяти. Кроме того, в чисто машинном коде не используются именованные и нет возможности указать программе фиксированные адреса, по которым содержатся различные значения и подпрограммы. Это означает, что если вы измените одну команду 10000-байтовой программе на машинном коде, то, возможно, вам придётся модифицировать кроме этого ещё 9000 других кодов!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2 Постановка  задачи

 

Разработать программу на языке Assembler, которая вычисляет значения функции в пределах от x=1..n при изменении x с шагом H.

Код для выполнения арифметических операций двоичный.

Формат исполняемого модуля: com

Программа оформляется  в виде законченного программного модуля который должен выполнять следующее функции:

 

  1. Вывод сообщения о начале работы программы (назначение программы, разработчик)
  2. Вывод приглашения для ввода исходных данных.
  3. Ввод исходных данных с клавиатуры.
  4. Предусмотреть обработку ошибок.
  5. Выполнение заданной функции.
  6. Вывод результатов на экран или в файл.

 

Процесс создания программы  включает в себя следующие этапы:

 

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 Разработка  алгоритма решения задачи

 

Алгоритм решения поставленной задачи мы будем разрабатывать по процедурному принципу. Алгоритм решения задачи можно представить следующим образом:

 

  1. Вывод сведений о программе.
  2. Организация ввода данных.
  3. Обработка данных (кодирование и декодирование ASCII кодов).
  4. Проверка на ошибки.
  5. Вычисление функции.
  6. Обработка данных (перевод результата в форму для вывода)
  7. Вывод результатов на экран.
  8. Завершение работы программы.

 

Результатом выполнения данной части курсовой работы является блок-схема программы, приведенная  в Приложении А и Приложении Б

 

 

 

 

 

 

 

 

 

 

 

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 Отладка программы

 

Отладка и тестирование проводились встроенными средствами интегрированной среды  программирования с помощью Turbo Debuger (TD.EXE)

 После создания  программы возникла необходимость исправить синтаксические и лексические ошибки. Нахождение ошибок осуществлялось попыткой запустить программу, при этом система показывала номер строки ошибки и выводила код данной ошибки. Исправление синтаксических и лексических ошибок осуществлялось при помощи пункта меню 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                    

Содержание.doc

— 28.00 Кб (Открыть документ, Скачать документ)

Титульник.doc

— 25.00 Кб (Открыть документ, Скачать документ)

Информация о работе Разработка программы на Ассемблере