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

Автор работы: Пользователь скрыл имя, 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 Кб (Скачать документ)

       mov BH,0                 ;переносим в регистр BH 0                     

       int 10h                       ;прерывание BIOS                              

       ret                              ;выход из процедуры                           

cursor endp                                                          

3. Процедура  вывода:

oput   proc                         ;процедура вывода                             

       mov AH,09h             ;переносим в регистр AH 09h                   

       int 21h                        ;прерывание DOS                               

       ret                               ;выход из процедуры                           

oput   endp            

4. Процедура перевода введённого значения с клавиатуры.

cod    proc          ;процедура перевода введённого значения с клавиатуры

                           ;в соответствующий ей по номеру  порядковый символ ASCII

                           ;для удобства вычислений (см. таб. ASCII)

       xor ax,ax            ;обнуление регистра AX

       mov cods,ax      ;чистим переменную decods

       mov cx,10         ;заносим в регистр CX значение 10

cd:    mov al,[si+bx]  ;выбор ASCII - символа

       and AX,000fh   ;удаление 3 (AL&0Fh)

       mul mn               ;умножение на множитель для преобразования

       add cods,ax        ;добавление к полученному результату

       mov ax,mn        ;вычисление следующего значения множителя

       mul cx                 ;умножение AX на CX

       mov mn,ax          ;запись в переменную mn значения AX

       dec bx                 ;если не последняя цифра, то - продолжать

       jnz cd                  ;переход по метке cd если не ноль

       xor ax,ax             ;обнуление регистра AX

       mov ax,mn          ;записываем в регистр множитель

       mov mn,1           ;записываем 1 в переменную mn

       ret                       ;выход из процедуры

cod    endp                 ;результат после выхода из процедуры в cods

                                              

5. Процедура ввода:

inp    proc                          ;процедура ввода                             

       mov AH,0ah              ;переносим в регистр AH 0ah                  

       int 21h                        ;прерывание DOS                               

       ret                               ;выход из процедуры                          

inp    endp                                                           

6. Процедура  вывода значения функции и  увеличения x на h.

zf     proc

       mov dx,cur       ;устанавливаем координаты курсора

       call cursor        ;вызов процедуры установки курсора

       lea dx,t13       ;указываем ссылку на сообщение

       call oput          ;вызываем процедуру вывода

       mov ax,rezf    ;записываем в ax результат функции

       call decod      ;вызов процедуры обратного перевода

       mov ax,cur      ;записываем в ах координаты курсора

       add ax,0015h    ;смещаем в право на 15

       mov cuy,ax      ;сохраняем новое значение курсора для вывода значения функции

       mov dx,cuy     ;записываем в dх координаты  курсора

       call cursor      ;вызов процедуры установки курсора

       lea dx,ascii    ;заносим в dx адрес значения функции

       call oput          ;вызываем процедуру вывода

       mov cuy,0      ;обнуляем значение курсора для вывода значения функции

       mov ax,xni      ;значение x

       add ax,hk     ;x+h

       mov xni,ax      ;сохраняем новое значение x

       ret

zf     endp

7. Процедура обратного перевода.

decod  proc             ;процедура перевода результата  представленного в

                               ;символах кода ASCII,

                                ;в форму приемлемую для вывода (в виде чисел)

       mov ascii,0      ;записываем 0 в переменную asc

       mov cx,10        ;заносим в регистр CX значение 10

       lea si,ascii+4  ;заносим в регистр si значение asc смещенное на 4                                          

dcd2:  cmp ax,10   ;сравниваем значение в регистре AX с 10

       jb  dcd1           ;если в АХ число меньше 10, то - выход

       xor dx,dx        ;обнуление

       div cx              ;деление содержимого AX на 10; остаток - в DL

       or  dl,30h         ;формирование кода ASCII очередной цифры

       mov [si],dl      ;сохранение ASCII - символа

       dec si               ;декремент si-1

       jmp dcd2         ;переход на dcd2

dcd1:  or al,30h     ;формирование кода ASCII последней (старшей) цифры

       mov [si],al     ;сохранение ASCII - символа

       ret                    ;выход из процедуры

decod  endp  

8. Процедура обработки ошибки

error  proc              ;ошибка при делении на 0

       mov dx,0D00h  ;указываем координаты курсора

       call cursor         ;вызов процедуры установки курсора

       lea dx,t14         ;указываем ссылку на сообщение

       call oput            ;вызываем процедуру вывода

       mov ah,0ah       ;считываем ввод

       lea dx,pause     ;записываем в регистр

       int 21h         

       jmp exit

       ret

error  endp

   

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

10 Руководство  оператора

 

Программа состоит из запускного KR.COM файла, в дистрибутив также включены файлы TASM.EXE, TD.EXE, TLINK.EXE, KR.asm и поставляется на любом носителе. Также идет исходный текст программы, который можно скомпилировать в тот же com файл.

Делается это так : набирается в  командной строке

tasm.exe KR.asm /w0 /m9

tlink.exe KR.obj /t

Результатом работы данных программ является запускной com файл KR.COM.

Для запуска программы необходимо нажать ENTER на файле KR.COM.

Результатом выполнения программы будет:

Вывод текстового сообщения  об авторах программы, и реализуемой  с помощью нее функции, а также  предложение о вводе необходимых  переменных. После ввода всех данных программа выводит конечный результат. Для выхода из программы необходимо нажать ENTER.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

11 Заключение

 

Итогом данной курсовой работы стала программа вычисления специальной функции. Программа  соответствует всем требованиям, предъявленным в данном курсовом проектировании.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

12 Список литературы

 

   1. Абель  П. Язык программирования для  IBM PC и программирования.-

М.: Выс. шк., 1992.

   2. Бек Л. Введение  в системное программирование. - М.: Мир, 1988.

   3. Бредли Л.  Программирование  на языке ассемблера для ПЭВМ  фирмы

IBM. - М.: Радио и связь, 1988.

   4. Брябрин В.М. Программное  обеспечение ПЭВМ. - М.: Наука, 1988.

   5. ГОСТ 2.104-68. ЕСКД. Основные  надписи.

   6. ГОСТ 2.105-79. ЕСКД. Общие  требования к текстовым документам.

   7. ГОСТ 2.106-68. ЕСКД. Текстовые  документы.

   8. ГОСТ 2.301-68. ЕСКД. Форматы.

   9. ГОСТ 2.303-68. ЕСКД. Линии.

   10. ГОСТ 2.304-68. ЕСКД. Шрифты  чертежные.

   11. ГОСТ 19.101-77. ЕСПД. Виды программ и программных  документов.

   12. ГОСТ 19.103-77.  ЕСПД. Обозначения программ  и программных до-

кументов.

   13. ГОСТ 19.105-78. ЕСПД. Общие требования к  программным докумен-

там.

   14. ГОСТ 19.401-78.  ЕСПД. Текст программы.

   15. ГОСТ 19.402-78.  ЕСПД. Описание программы.

   16. ГОСТ 19.502-78.  ЕСПД. Описание применения.

   17. ГОСТ 19.503-79.  ЕСПД. Руководство системного  программиста.

   18. ГОСТ 19.504-79.  ЕСПД. Руководство программиста.

   19. ГОСТ 19.505-79.  ЕСПД. Руководство оператора.

   20. ГОСТ 19.701-90.  ЕСПД.  Схемы алгоритмов,  программ, данных и

систем. Условные обозначения и правила выполнения. - М.: Издательст-

во стандартов, 1991.

   21. Грис  Д.  Конструирование компиляторов  для  ЦВМ.  -  М.: Мир,

1975.

   22. Дао  Л.  Программирование микропроцессора  8088.  -  М.:  Мир,

1988.

   23. Джордейн  Р.  Справочник программиста персональных  компьютеров

типа IBM PC, XT и AT.- М.: Финансы и статистика, 1991.

   24. Зуев  Е.А.  Язык программирования Turbo Pascal 6.0.  - М.: Уни-

тех, 1992.

   25. Йенсен  К.,  Вирт Н.  Паскаль: руководство  для пользователя. -

М.: Финансы и  статистика, 1989.

   26. Льюис   Ф.,  Розенкранц Д.,  Стирнз Р.  Теоретические основы

проектирования  компиляторов. - М.: Мир, 1980.

   27. Лю Ю-Чжен, Гибсон г. Архитектура, программирование и проек-

тирование микрокомпьютерных  систем.  - М.: Радио и связь, 1987.

   28. Нортон  П.  Персональный  компьютер   фирмы IBM и операционная

система MS DOS. - М,: Радио и связь, 1991.

   29. Нортон  П.  Справочное руководство по MS DOS.  - М.:  Радио и

связь, 1992.

   30. РД40.РСФСР-050-87.  Проекты  (работы)  дипломные   и курсовые.

Правила оформления. Руководящий нормативный документ.

   31. Скляров  В.А. Применение ПЭВМ. В 3 кн. Кн.1. Организация и уп-

равление ресурсами ПЭВМ.  Кн.2. Операционные системы ПЭВМ : Практич.

пособие. - М.: Выс. шк., 1992.

   32. Скэнлон  Л.  Персональные ЭВМ IBM PC и XT.  Программирование на

языке ассемблера. - М.: Радио и связь, 1991.

   33. Фигурнов  В.Э.  IBM PC для пользователя. - м: Финансы и ста-

тистика, 1991.

   34. Хершель  Р. Turbo Pascal 4.0/5.0. - Вологда: МИК, 1991.

   35. Чижов  А.А. Системные программные средства  ПЭВМ. - М.: 1990.

   36. Шнайдер  А.  Язык ассемблера  для   персонального  компьютера

фирмы IBM. - М.: Мир, 1988.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Приложение А. Схема данных

Переменная

Тип данных

Назначение

t0

DB

Содержит текстовое  сообщение

t1

DB

Содержит текстовое  сообщение

t2

DB

Содержит текстовое  сообщение

t3

DB

Содержит текстовое  сообщение

t4

DB

Содержит текстовое сообщение

t5

DB

Содержит текстовое  сообщение

t6

DB

Содержит текстовое  сообщение

t7

DB

Содержит текстовое  сообщение

t8

DB

Содержит текстовое  сообщение

t9

DB

Содержит текстовое  сообщение

t10

DB

Содержит текстовое  сообщение

t11

DB

Содержит текстовое сообщение

t12

DB

Содержит текстовое  сообщение

t13

DB

Содержит текстовое  сообщение

t14

DB

Содержит текстовое  сообщение

t15

DB

Содержит текстовое  сообщение

t16

DB

Содержит текстовое  сообщение

A

DB

Хранение значения A введённое  с клавиатуры

B

DB

Хранение значения B введённое  с клавиатуры

C

DB

Хранение значения C введённое  с клавиатуры

Y

DB

Хранение значения Y введённое  с клавиатуры

X1

DB

Хранение значения X1 введённое  с клавиатуры

Xn

DB

Хранение значения Xn введённое  с клавиатуры

h

DB

Хранение значения h введённое с клавиатуры

pause

DB

Хранение значения stp введённое с клавиатуры

ascii

DW

Память для ASCII-кодов

cur

DW

Хранение координат  курсора вывода сообщения

cuy

DW

Хранение координат  курсора вывода результата

rezf

DW

Хранение результата функции

rez1

DW

Хранение промежуточных  результатов

rez2

DW

Хранение промежуточных  результатов

rez3

DW

Хранение промежуточных  результатов

rez4

DW

Хранение промежуточных  результатов

rez5

DW

Хранение промежуточных  результатов

rez6

DW

Хранение промежуточных результатов

rez7

DW

Хранение промежуточных  результатов

Ak

DW

Хранение переведённого  значения A

Bk

DW

Хранение переведённого  значения B

Ck

DW

Хранение переведённого  значения C

Yk

DW

Хранение переведённого  значения y

X1k

DW

Хранение переведённого значения x1

Xnk

DW

Хранение переведённого  значения xn

Xni

DW

Хранение временного значения х

hk

DW

Хранение переведённого  значения шага h

mn

DW

Константа равная 1 (множитель  для перевода) 

cods

DW

Хранение переведённого  значения


 

Приложение Б. Схема программы

Блок-схема вычисления значения функции

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Приложение В. Текст  программы.

 

 

CODE SEGMENT   ;начало сегмента кода

ORG 100h

start proc

ASSUME cs:code ;директива  установки сегмента кода

begin:

call clear    ;вызов процедуры очистки экрана

mov dx,0000h  ;записываем  в dх координаты курсора

call cursor   ;вызов процедуры установки курсора

lea dx,t0     ;указываем ссылку на сообщение

call oput     ;вызываем процедуру вывода

mov dx,0100h  ;записываем в dх координаты курсора

call cursor   ;вызов процедуры установки курсора

lea dx,t1     ;указываем ссылку на сообщение

call oput     ;вызываем процедуру вывода

mov dx,0200h  ;записываем  в dх координаты курсора

call cursor   ;вызов процедуры установки курсора

lea dx,t2     ;указываем ссылку на сообщение

call oput     ;вызываем процедуру вывода

mov dx,0320h  ;записываем  в dх координаты курсора

call cursor   ;вызов процедуры установки курсора

lea dx,t3     ;указываем ссылку на сообщение

call oput     ;вызываем процедуру вывода

mov dx,0420h  ;записываем  в dх координаты курсора

call cursor   ;вызов процедуры установки курсора

lea dx,t4     ;указываем ссылку на сообщение

call oput     ;вызываем процедуру вывода

mov dx,0520h  ;записываем  в dх координаты курсора

call cursor   ;вызов процедуры установки курсора

lea dx,t5     ;указываем ссылку на сообщение

call oput     ;вызываем процедуру вывода

mov dx,0600h  ;записываем  в dх координаты курсора

call cursor   ;вызов процедуры установки курсора

lea dx,t6     ;указываем ссылку на сообщение

call oput     ;вызываем процедуру вывода

      

       ;Ввод значения А

mov dx,0600h  ;координаты  курсора

call cursor   ;вызов процедуры

lea dx,t7     ;загружаем подсказку

call oput     ;выводим на экран

mov ah,0ah   ;считываем ввод

lea dx,A      ;записываем в регистр

int 21h       ;прерывание DOS

mov bl,A+1    ;в bl записываем значение A со смещением  на 1

lea si,A+1    ;в si записываем значение A со смещением  на 1

call cod      ;вызываем процедуру перевода

sub ax,ax     ;чистим регистр

mov ax,cods   ;пишем в ax введённое значение

mov Ak,ax   ;записываем переведённое значение

        

     ;Ввод значения B

mov dx,0700h  ;координаты  курсора

call cursor   ;вызов процедуры

lea dx,t8     ;загружаем подсказку

call oput    ;выводим на экран

mov ah,0ah    ;считываем ввод

lea dx,B      ;записываем в регистр

int 21h       ;прерывание DOS

mov bl,B+1    ;в bl записываем значение B со смещением  на 1

lea si,B+1    ;в si записываем значение B со смещением  на 1

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

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

Титульник.doc

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

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