Язык Ассемблер

Автор: Пользователь скрыл имя, 25 Января 2012 в 12:40, курсовая работа

Описание работы

Целью данного курсового проекта является углубление и закрепление знаний, полученных по дисциплине «Системное программное обеспечение», формирование опыта создания прикладных программ с использованием программного продукта Turbo Assembler, а также изучение системных функций DOS и BIOS и рассмотрение механизма работы их прерываний.

Содержание

Введение 4
1 Теоретическая часть 5
1.1 Язык Ассемблер 5
1.2 Достоинства языка Ассемблер 6
1.3 Недостатки языка Ассемблер 7
1.4 Стек 8
1.5 Система прерываний 10
1.6 Макрокоманды 14
1.7 Этапы разработки программы 16
2 Практическая часть 18
2.1 Постановка задачи 18
2.2 Назначение программы 18
2.3 Наименование программы 18
2.4 Требования к программному обеспечению 18
2.5 Описание структуры программы 18
3 Структура программы 19
4 Используемые технические средства 21
5 Запуск программы 22
Заключение 23
Список использованной литературы

Работа содержит 1 файл

ПЗ_СПО_Родионова_нк.doc

— 293.00 Кб (Скачать)

     Microsoft Macro Assembler (MASM) — ассемблер для процессоров семейства x86. Первоначально был произведён компанией Microsoft для написания программ в операционной системеMS-DOS и был в течение некоторого времени самым популярным ассемблером, доступным для неё. Это поддерживало широкое разнообразие макросредств и структурированность программных идиом, включая конструкции высокого уровня для повторов, вызовов процедур и чередований (поэтому MASM — ассемблер высокого уровня). Позднее была добавлена возможность написания программ для Windows. MASM — один из немногих инструментов разработки Microsoft, для которых не было отдельных 16- и 32-битных версий.

     Разработка  программы на Ассемблере состоит  из следующих этапов:

     1) составление алгоритма в виде блок-схемы или структурного описания;

     2) ввод в ЭВМ текста исходной программы timer.asm с помощью редактора текстов;

     3) перевод (трансляция или ассемблирование) исходной программы в машинные коды с помощью транслятора MASM. На этом этапе получается промежуточный продукт timer.obj (объектный код). Выявленные при этом синтаксические и орфографические ошибки исправляются повтором пунктов 2 и 3;

     4) преобразование с помощью линковки LINK объектного кода timer.obj в выполнимый код timer.exe или timer.com;

     5) выполнение программы и ее отладка начиная с пункта 1, если встретились логические ошибки.

     Ассемблирование производится следующим образом:

ML [ /опции ] filelist [ /link linkoptions ] . Значения опций указаны в таблице 1.1 

Таблица 1.1 – Значения опций команды ассемблирования

     Опция Значение опции
     /c ассемблирование без линковки

В основном вы будете использовать эту опцию, так как  вы будете использовать внешний линкер (например link.exe), для компоновки файлов.

     /coff генерировать  объектный файл в COFF формате.

Это генерирует формат файла для компоновщика microsoft.

     /Fo<file> имя объектного файла.

Может использоваться, если вы хотите, чтобы выходной файл был с другим именем, не таким как исходный файл.

     /G<c|d|z> Использует  вызовы Pascal, C, или Stdcall.

Выберите тип вызовов для ваших процедур.

     /Zi Добавить символьную отладочную информацию.

Установите эту  опцию, если хотите использовать отладчик.

     Линковка  производится следующим образом: LINK [опции] [файлы] [@commandfile]. Значения опций и файлов указаны в таблице 1.2 

Таблица 1.2 –  Значения опций и файлов команды линковки

     Опция или файл Значение опции  или файла
     /DEBUG Отладка.Это создаст информацию для отладки. Используйте эту опцию, когда вы хотите использовать отладчик.
     /DEBUGTYPE:CV|COFF Тип отладки: codeview / coff.Выбирает выходной формат отладочной информации. Это зависит от вашего отладчика. Softice и visual c++ отладчики оба могут обрабатывать CV (codeview)
     /DEF:имя_файла DEF файл.Указывает файл определения (.def). Используется с dll, для экспортируемых функций.
     /DLL DLL.Выходной файл DLL, а не EXE.
     /LIBPATH:path Путь к библиотекам.Указывает путь к файлам библиотек (*.lib).
     /I<имя> Устанавливает путь для inc-файлов.Указывает путь для inc-файлов, по умолчанию.
     /OUT:имя_файла Out:имя_файла.Может изменить имя выходного файла.
     /SUBSYSTEM:{...} Подсистема.Выбирает ОС на которой должна выполнятся программа: NATIVE|WINDOWS|CONSOLE|WINDOWSCE|POSIX
 

 

      2 Практическая часть

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

 
 

     Написать  программу перехвата системного таймера:  вывод текущего времени  в левом углу экрана.

      

     2.2 Назначение программы 

     Выводит текущее время в левом углу экрана. Для наглядности время  выводится белыми цифрами на синем  фоне. 

     2.3 Наименование программы 

     Исполняемым файлом программы является timer.com. Код программы реализован в виде файла timer.asm

     2.4 Требования к программному обеспечению

     Оперативная память: для выполнения программы  необходимо 4 Кb

     Дисковое  пространство: необходимо 15 КБ памяти на диске.

     Программное обеспечение: программа работает под  операционной системой семейства Windows. 

     2.5 Описание структуры программы 

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

     2.6 Язык программирования 

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

     Язык  ассемблера, представляет собой фактически символьную форму записи машинного  языка: в нем вместо цифровых кодов  операций вписывают привычные знаки операций или их словесные названия, вместо адресов – имена, а константы записывают в десятичное системе счисления. Программу, записанную в таком виде, вводят в ЭВМ и подают на вход специальному транслятору, называемому ассемблером, который переводит её на машинный язык, и далее полученную машинную программу выполняют.

     Для любой ЭВМ можно придумать  разные языки ассемблера, хотя бы потому, что можно по-разному обозначать машинные операции. В частности, и  для ПК разработано несколько таких языков(ASM-86, MASM, TASM).

 

      3  Структура программы

 
 

     1Ch- пользовательское прерывание таймера

     Прерывание  DOS Int 1Ch служит для перехвата тактов системного таймера. Это прерывание в ОС вызывается 18,2 раза в секунду. 

     int 21h

     Это прерывание служит для вызова основных функций операционной  системы MS DOS 

     mov

     Эта команда используется для копирования (не обращайте внимания на имя команды) значения из одного места в другое. Это место может быть регистр, ячейка памяти или непосредственное значение (только как исходное значение).

     Синтаксис команды:  mov приемник, источник. Размер источника и приемника должны быть одинаковыми.  

     ret

     Команду ret необходимо применять для возврата управления вызывающей программе из процедуры. 

     proc near  

     Если  операндом директивы PROC является  NEAR  (ближний),  то все инструкции RET между директивой PROC  и соответствующей директивой ENDP ассемблируются, как возвраты  управления  ближнего типа.

 

     proc far

     Если  операндом директивы PROC является FAR (дальний), то все инструкции RET в  данной процедуре ассемблируются, как возвраты управления дальнего типа.

 

     pusha

     Назначение: размещение в стеке регистров общего назначения в следующей последовательности: ax, cx, dx, bx, sp, bp, si, di.

     Применение: команда pusha используется совместно с командой popa для сохранения и восстановления всех регистров общего назначения. Эти команды удобно использовать при работе с процедурами, программами обработки прерываний, а также в других случаях для сохранения и восстановления регистров общего назначения как части контекста некоторого вычислительного процесса.

 

     сall- вызов процедуры или задачи

     Назначение:

  1. передача управления близкой или дальней процедуре с запоминанием в стеке адреса точки возврата;
  2. переключение задач.
 

     процедура bcd2asc

     Преобразует старшую цифру упакованного BCD-числа в AL в ASCII-символ в AH,  а младшую цифру - в ASCII-символ в AL.

 
 

     jmp cs:old_handler

     Приводит  к тому, что, когда старый обработчик выполнит команду IRET, управление сразу  же перейдет к прерванной программе. Этот способ применяют, если нужно, чтобы сначала отработал новый обработчик, а потом он передал бы управление старому.

 

     Вход

  1. AH = 35H
  2. AL = номер прерывания (00H до 0ffH)

     Выход

     ES:BX = адрес обработчика прерывания

     Описание: возвращает значение вектора прерывания для INT (AL); то есть, загружает в BX 0000:[AL*4], а в ES - 0000:[(AL*4)+2].

 

     Вход

  1. AH = 25H
  2. AL = номер прерывания

     Выход

     DS:DX = адрес обработчика прерывания

     Описание: возврата нет.

 

      4  Используемые технические средства

      

 

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

      

 

      5  Запуск программы

 
 

    Полученный  файл в результате ассемблирования  и линковки timer.exe с помощью функции exe2.bin преобразовываем в timer.com для запуска программы под оболочкой MS-DOS

    Запуск  программы производится путем выбора и запуска исполняемого файла  timer.com

 

      

 

      Заключение

 
 

      В результате разработки данного курсового  проекта была реализована программа на низкоуровневом языке Ассемблер в COM-формате, удовлетворяющая требованиям задания: данная программа осуществляет вывод текущего времени в левом углу экрана. В процессе разработки и реализации программы были изучены принцип работы и возможности основных системных функций и команд языка, а также был рассмотрен механизм работы прерываний  DOS и BIOS, выполняемых при обращении к этим функциям.

    В планах дальнейшего развития программы  можно предположить возможность  вывода текущего времени в левом  углу экрана в любой другой программе, которая будет указана в листинге данной программы.

 

      Список использованной литературы

 
     
  1. Абель П. Язык ассемблер для IBM PC и программирования, Высшая школа, 1992г
  2. Hортон П., Юров В., Хорошенко С. Assembler: учебный курс. С.-П.: “Питер”, 2000
  3. Соловьев Г.H. Операционная система ЭВМ, Высшая школа, 1989г

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