Автор: Пользователь скрыл имя, 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
Список использованной литературы
Microsoft
Macro Assembler (MASM) — ассемблер д
Разработка программы на Ассемблере состоит из следующих этапов:
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 – Значения опций команды ассемблирования
|
Линковка
производится следующим образом: LINK [опции]
[файлы] [@commandfile]. Значения опций и файлов
указаны в таблице 1.2
Таблица 1.2 – Значения опций и файлов команды линковки
|
2 Практическая часть
Написать программу перехвата системного таймера: вывод текущего времени в левом углу экрана.
2.2
Назначение программы
Выводит
текущее время в левом углу
экрана. Для наглядности время
выводится белыми цифрами на синем
фоне.
2.3
Наименование программы
Исполняемым файлом программы является timer.com. Код программы реализован в виде файла timer.asm
2.4 Требования к программному обеспечению
Оперативная память: для выполнения программы необходимо 4 Кb
Дисковое пространство: необходимо 15 КБ памяти на диске.
Программное
обеспечение: программа работает под
операционной системой семейства Windows.
2.5
Описание структуры программы
Программа
реализована с помощью
2.6
Язык программирования
Для написания данной программы был выбран язык ассемблера. В связи с тем, что он наиболее подходит для реализации такого рода задач, т.е. где требуется доступ к портам, выполнение специальных прерываний, доступ к области памяти BIOS и т.д.
Язык ассемблера, представляет собой фактически символьную форму записи машинного языка: в нем вместо цифровых кодов операций вписывают привычные знаки операций или их словесные названия, вместо адресов – имена, а константы записывают в десятичное системе счисления. Программу, записанную в таком виде, вводят в ЭВМ и подают на вход специальному транслятору, называемому ассемблером, который переводит её на машинный язык, и далее полученную машинную программу выполняют.
Для
любой ЭВМ можно придумать
разные языки ассемблера, хотя бы потому,
что можно по-разному
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- вызов процедуры или задачи
Назначение:
процедура bcd2asc
Преобразует старшую цифру упакованного BCD-числа в AL в ASCII-символ в AH, а младшую цифру - в ASCII-символ в AL.
jmp cs:old_handler
Приводит к тому, что, когда старый обработчик выполнит команду IRET, управление сразу же перейдет к прерванной программе. Этот способ применяют, если нужно, чтобы сначала отработал новый обработчик, а потом он передал бы управление старому.
Вход
Выход
ES:BX = адрес обработчика прерывания
Описание: возвращает значение вектора прерывания для INT (AL); то есть, загружает в BX 0000:[AL*4], а в ES - 0000:[(AL*4)+2].
Вход
Выход
DS:DX = адрес обработчика прерывания
Описание: возврата нет.
Для нормального функционирования программы необходима любая ЭВМ, на которой установлена операционная система MS-DOS версия 4.0 и выше. А также необходимо обязательное наличие клавиатуры.
Полученный файл в результате ассемблирования и линковки timer.exe с помощью функции exe2.bin преобразовываем в timer.com для запуска программы под оболочкой MS-DOS
Запуск программы производится путем выбора и запуска исполняемого файла timer.com
Заключение
В результате разработки данного курсового проекта была реализована программа на низкоуровневом языке Ассемблер в COM-формате, удовлетворяющая требованиям задания: данная программа осуществляет вывод текущего времени в левом углу экрана. В процессе разработки и реализации программы были изучены принцип работы и возможности основных системных функций и команд языка, а также был рассмотрен механизм работы прерываний DOS и BIOS, выполняемых при обращении к этим функциям.
В планах дальнейшего развития программы можно предположить возможность вывода текущего времени в левом углу экрана в любой другой программе, которая будет указана в листинге данной программы.