Главная
страница 1
Содержание



Введение 2

1. Задачи курсовой работы 2

2. Тематика и содержание курсовых работ 3

2.1. Ввод информации с клавиатуры терминала 3

2.2. Вывод текстовой информации на экран терминала 5

2.2.1. Вывод на экран функциями MS DOS 6

2.2.2. Управление экраном через ANSI-драйвер 7

2.2.3. Вывод на экран функциями BIOS 8

2.3. Вывод графической информации на экран терминала 9

2.4. Программирование файловой системы MS DOS 11

2.5. Программирование прерываний 15

3. Задание к курсовому проектированию 18

4. Правила оформления пояснительной записки 22

5. Правила оформления графического материала 23

6. Методика курсового проектирования 24

7. График выполнения курсовой работы 24

8. Порядок защиты 26

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





Введение


Настоящие методические указания предназначены для студентов специальности 230102 «Автоматизированные системы обработки информации и управления», выполняющих курсовые работы по дисциплине «Системное программное обеспечение».

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

Назначение указаний – определить цель, тематику, содержание, объем, порядок выполнения работы, направить деятельность студентов по нужному руслу и пояснить основные этапы проектирования. Предлагаемые задания разработаны с использованием типовых методических материалов по курсовому проектированию и специальной литературы по системному программному обеспечению.


1. Задачи курсовой работы


Задачами курсового проектирования являются:

  • закрепление, углубление и обобщение знаний, полученных студентами во время их обучения по дисциплине «Системное программное обеспечение»;

  • применение полученных знаний к системному решению типовой задачи по программированию системных функций IBM PC;

  • получение навыков работы со специальной литературой и навыков программирования на ассемблере;

  • приобретение опыта аналитической работы и формирование соответствующих умений;

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

  • формирование умений выступать перед аудиторией с докладом при защите работы, компетентно отвечать на вопросы, вести дискуссию и убеждать оппонентов в правильности принятых решений [1].

2. Тематика и содержание курсовых работ

2.1. Ввод информации с клавиатуры терминала


Работой клавиатуры управляет специальная электронная схема – контроллер клавиатуры. В его функции входит распознавание нажатой клавиши и помещение закрепленного за ней кода в свой выходной регистр (порт), обычно с номером 60h. Код клавиши, поступающий в порт, называется скэн-кодом и является, по существу, порядковым номером клавиши. При этом каждой клавише присвоены как бы два скэн-кода, отличающиеся друг от друга на 80h. Один скэн-код (меньший, код нажатия) засылается контроллером в порт 60h при нажатии клавиши, другой (больший, код отпускания) – при ее отпускании.

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

Нажатие (а также отпускание) любой клавиши вызывает сигнал аппаратного прерывания, заставляющего процессор прервать выполняемую программу и перейти на программу обработки прерывания от клавиатуры. Процессор вместе с сигналом прерывания получает еще и номер вектора прерывания. За клавиатурой закреплен вектор с номером 9h. Адрес программы обработки прерываний от клавиатуры располагается, таким образом, в векторе 9h, занимающем слова с адресами 4h и 6h. Поскольку программа обработки прерываний от клавиатуры вызывается через вектор 9h, ее иногда называют программой INT 9h. Эта программа, помимо порта 60h, работает еще с двумя областями оперативной памяти: кольцевым буфером ввода, располагаемым по адресам от 40h:1Eh до 40h:3Dh, куда, в конце концов, помещаются коды ASCII нажатых клавиш, и словом состояния клавиатуры, находящимся по адресу 40h:17h, где фиксируется состояние нажатых клавиш.

Операционная система предоставляет несколько способов ввода данных с клавиатуры:

- обращение к клавиатуре, как к файлу, с помощью прерывания DOS INT 21h с функцией 3Fh;

- использование группы функций DOS INT 21h из диапазона 1 – Ch, обеспечивающих посимвольный ввод с клавиатуры;

- посимвольный ввод путем обращения непосредственно к драйверу BIOS с помощью прерывания INT 16h.

Ввод с клавиатуры средствами файловой системы использует предопределенный дескриптор, закрепленный за стандартным устройством ввода. Например:

MOV AH,3Fh ; номер функции

MOV BX,0 ; номер дескриптора файла

LEA DX,STR_BUFER ; указатель на буфер ввода строки

MOV CX,80 ; максимальная длина строки

INT 21h ; вызов прерывания

Адрес, по которому должна вводиться строка, должен находиться в DS:DX, а в CX - максимальная длина строки в байтах. Ввод строки завершается нажатием клавиши «Enter» и DOS добавляет в конец строки два символа: возврат каретки и перевод строки. Длина введенной строки возвращается в AX, и это значение включает два символа-ограничителя.

Для ввода с клавиатуры можно использовать 7 функций прерывания INT 21h:

01h - ввод символа с эхом;

06h - прямой ввод - вывод через консоль;

07h - ввод символа без эха и без отработки Ctrl/C;

08h - ввод символа без эха и с отработкой Ctrl/C;

0Ah - буферизованный ввод строки с эхом;

0Bh - проверка состояния клавиатуры;

0Ch - сброс входного буфера и ввод.

Функции 01h, 06h, 07h и 08h при каждом вызове вводят в программу один символ из кольцевого буфера клавиатуры. Для ввода строки символов функции следует использовать в цикле. Кроме того, эти функции позволяют вводить расширенные коды ASCII. Для этого, обнаружив, что введенный код равен нулю, следует выполнить функцию повторно. Это дает возможность управления прикладными программами с помощью функциональных клавиш, а также сочетаний клавиши Alt с цифрами и буквами.

Пример программирования ввода с клавиатуры:

MOV AH,7 ; номер функции

INT 21h ; ожидание ввода символа

CMP AL,0 ; проверка на расширенный код

JE EXT_COD ; если да, то на особую процедуру

; процедура обработки расширенных кодов

EXT_COD: INT 21h ; берется второй байт кода

CMP AL,75 ; проверка на «стрелку-влево»

JNE C_R ; если нет, то следующая проверка

JMP C_L ; если да, то на процедуру

C_R: CMP AL,77 ; следующее сравнение и т.д.

Работа с клавиатурой на уровне BIOS (INT 16h) позволяет считывать двухбайтовые коды, поступающие в кольцевой буфер ввода (код ASCII + скэн-код) и анализировать слово состояния клавиатуры. Для ввода используются следующие функции прерывания INT 16h:

00h - чтение двухбайтового кода из входного буфера;

01h - чтение состояния клавиатуры и двухбайтового кода без извлечения его из буфера;

02h - чтение флагов клавиатуры.

Функция 00h позволяет в одном действии получить полный двухбайтовый код нажатой клавиши или комбинации клавиш, буфер ввода при этом очищается. Эта функция ожидает нажатие клавиши.

Функция 01h относится к числу асинхронных: определив состояние буфера ввода, она возвращает управление программе. Состояние буфера определяется по флагу ZF, если ZF = 0, то в буфере есть ожидающие ввода в программу символы, если же буфер пуст, ZF=1. При наличии в буфере кода символа его можно проанализировать, так как он копируется функцией в регистре AX.

Функция 02h передает в программу содержимое слова флагов (ячейка 417h). Она может использоваться для определения состояния клавиш Shift, Caps Lock и др.

2.2. Вывод текстовой информации на экран терминала


В текстовом режиме изображение обычно состоит из 25 строк по 80 символов в строке, хотя имеется возможность увеличивать число строк до 40 за счет уменьшения высоты отображаемых символов. Каждый символ и фон под ним могут принимать любой из 16 цветов.

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

В памяти адаптера одновременно может храниться до 8 текстовых страниц (8 «экранов»).

Программные средства обслуживания экрана включают в себя: видеодрайвер BIOS, к которому можно обратиться из прикладной программы с помощью прерывания 10h, и который обеспечивает нижний уровень управления (вывод символов, работа с курсором, переключение режимов видеоадаптера и т.д.), а также средства DOS, активизируемые с помощью прерывания INT 21h и предоставляющие более высокий уровень сервиса в текстовом режиме.


2.2.1. Вывод на экран функциями MS DOS


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

- обращение к экрану как к файлу, с помощью прерывания DOS INT 21h с функцией 40h;

- использование группы функций DOS из диапазона 1...Ch (прерывание INT 21h), реализующих посимвольный вывод, а также вывод строк.

Вывод на экран средствами файловой системы (INT 21h, функция 40h) осуществляется точно также как и запись в файл. Используется предопределенный дескриптор 1, закрепленный за стандартным устройством вывода. Вот пример:

; вывод 1000 байт текста

MOV AH,40h ; номер функции

MOV BX,1 ; дескриптор дисплея

LEA DX,STRING ; загрузка адреса строки

MOV CX,1000 ; число выводимых байтов

INT 21h ;

Функция выводит символы с нормальными (белый на черном) атрибутами.

Второй способ вывода на экран текстовой информации реализуется с помощью трех функций прерывания INT 21h:

02h - вывод символа;

06h - прямой ввод-вывод;

09h - вывод строки.

Функция 09h широко используется в системных программах для вывода на экран информационных и диагностических сообщений.

Пример программирования:

;--- в сегменте данных

FIR_STR DB 'ЭТО ПЕРВАЯ СТРОКА',0Ah,0Dh,'$'

SEC_STR DB 'ЭТО ВТОРАЯ СТРОКА$'

;--- вывод строки

MOV AH,9 ; номер функции вывода строки

LEA DX,FIR_STR ; загрузка адреса первой строки

INT 21h ; вывод строки с позиции курсора

LEA DX,SEC_STR ; загрузка адреса второй строки

INT 21h ; вывод строки с начала новой строки

Средства DOS «в чистом виде» позволяют выводить на экран только черно-белый текст; возможности позиционирования текста на экране ограничиваются использованием символов возврата каретки (0Dh) и перевода строки (0Ah). Для вывода на экран средствами DOS цветных символов следует использовать управляющие Esc-последовательности, реализуемые драйвером ANSI.SYS.

2.2.2. Управление экраном через ANSI-драйвер


Включение в систему ANSI-драйвера терминала (файл ANSI.SYS) дает пользователю дополнительные возможности управления экраном и клавиатурой. Если в символьной строке, выводимой на экран, встречается код клавиши «Esc» (27=1Bh), за которым следует символ [, то ANSI-драйвер перехватывает последующие символы и интерпретирует их, как команды управления экраном или клавиатурой. С помощью Esc-последовательностей можно очищать экран, перемещать по нему курсор, выбирать цвета фона и символа, изменять видеорежим, а также переопределять клавиши клавиатуры.

Esc-последовательности часто используются в программах для формирования на экране цветных информационных кадров. В этом случае Esc-последовательности включаются в строки, выводимые на экран операторами вывода того языка, на котором написана программа (Паскаль, Си, Ассемблер и пр.). Это дает возможность выводить последовательные строки текста в разные места экрана, изменять их цвет, заставлять мигать или выделяться яркостью и т.д. Пример использования:

MOV AH,40h ;

MOV BX,1 ; вывод на экран

MOV CX, n ; число выводимых символов

MOV DX,адрес ; адрес выводимой строки

INT 21h ;

Саму строку следует сформировать следующим образом:

DB 1B,'[2J',1B,'[12;20H',1B,'[31;47m'

DB 'УЧЕНЬЕ - СВЕТ',1B,'[0m'

В строку включены 4 Esc-последовательности:

Esc[2J - очистка экрана

Esc[12;20H - установка курсора в центр

Esc[31;47m - установка цвета сообщения

Esc[0m - отмена цвета

Еще проще вывести эту строку функцией 9 прерывания 21 (строку в этом случае следует завершить символом $)

MOV AH,09h

MOV DX,адрес

INT 21h

либо


MOV AH,9

MOV DX,адрес управляющей строки

INT 21h

MOV DX,адрес выводимой строки

INT 21h

2.2.3. Вывод на экран функциями BIOS


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

02h - установить позицию курсора;

03h - получить позицию курсора;

05h - установить видеостраницу;

06h - инициализировать или прокрутить вверх окно;

07h - инициализировать или прокрутить вниз окно;

08h - прочитать символ и атрибут в позиции курсора;

09h - вывести символ и атрибут в позицию курсора;

0Ah - вывести символ в позицию курсора;

0Eh - вывести символ в режиме телетайпа;

10h, подфункция 3h - переключить бит мерцание/яркость;

13h - вывести строку в режиме телетайпа.

С помощью функций 06h и 07h в заданном месте экрана дисплея создаются цветные прямоугольные окна заданного размера. Если в эти окна выведен какой-либо текст, то с помощью этих функций его можно прокручивать вверх и вниз.

Функции 09h, 0Ah, 0Eh и 13h служат для вывода на экран отдельных символов и символьных строк (в цикле). Предусмотрен вывод одного и того же символа заданное число раз, что можно использовать при создании рамок и других орнаментов.

Функция 0Eh реагирует на управляющие коды, выполняя соответствующие действия. Курсор перемещается после вывода каждого символа.

Функция 13h предназначена для вывода строк с указанием атрибутов как каждого символа в отдельности, так и всей строки. Функция может выполняться в четырех вариантах в зависимости от кода режима, указываемого в регистре AL.

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

2.3. Вывод графической информации на экран терминала


Графический адаптер EGA обеспечивает хранение и отображение двух графических страниц с разрешением 640х350 цветных точек (пикселов). Адаптер поддерживает 64 цвета, хотя в каждый момент времени изображение на экране может содержать только 16 цветов. Этот набор из 16 цветов (цветовая палитра) задается программно и может легко изменяться.

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

Помимо произвольных изображений, рисуемых пиксел за пикселом, на экране в графическом режиме можно отображать и текстовую информацию, используя любые функции DOS и BIOS, выводящие на экран символьную информацию. Конфигурация символов берется из кодовых таблиц. Для позиционирования символьных строк на экране можно использовать функцию 02h драйвера BIOS (прерывание INT 10h), устанавливающую местоположение курсора в текстовых координатах, хотя сам курсор в графическом режиме на экран не выводится. При программировании графического изображения можно использовать следующие функции видеодрайвера BIOS (прерывание 10h):

00h - установка видеорежима;

05h - установка видеостраницы;

0Ch - вывод пиксела;

0Fh - получение видеорежима;

10h, подфункция 00h - установка цветового регистра;

10h, подфункция 01h - установка цвета края экрана;

11h, подфункция 00h - установка цветовых регистров палитры;

11h, подфункция 01h - загрузка таблицы шрифтов пользователей в графическом режиме.

Функция 00h позволяет переключать режимы видеосистемы. Для адаптера EGA с видеобуфером 256 Кбайт текстовый режим имеет код 03, графический 10h.

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

Для рисования изображения предусмотрена единственная функция 0Ch - вывод пиксела. Цвета пикселей на экране, как и цвет фона, задаются содержимым цветовых регистров, определяющих цветовую палитру видеосистемы. Всего в адаптере EGA имеется 17 цветовых регистров, каждый из которых может содержать коды 64 цветов. Регистры с по 15 определяют возможные цвета пикселей, а регистр 16 - цвет рамки вокруг рабочей части экрана. Эта рамка обычно невидна, так как ей присваивают цвет, совпадающий с цветом фона.

Код цвета, указываемый в программе (например, в регистре AL для функции 0Ch), определяет собственно не цвет, а номер цветового регистра, используемого системой при выводе на экран данного пиксела. Цвет же пиксела определяется числом, хранящимся в регистре.

Каждый цветовой регистр содержит 6 значащих разрядов, которые определяют интенсивность красного, зеленого и синего цветов, дающих при смешивании требуемый цвет. Разряды 0, 1 и 2 закреплены за цветами красный, зеленый и синий с интенсивностью 2/3 максимальной, разряды 3, 4 и 5 - за теми же цветами с интенсивностью 1/3.

Номера разрядов 6 5 4 3 2 1

Веса разрядов 32 16 8 4 2 1

Цвет к з с К З С

Таким образом, число 1, записанное в регистр, определяет синий цвет, число 3 (С+З) - сине-зеленый (сиреневый), число 9 (с+С) - ярко-синий, число 7 (К+З+С) - белый, число 63 (к+з+с+К+З+С) ярко-белый. Регистр, содержащий 0, определяет черный цвет.

Обычно при инициализации в регистры заносится следующий ряд чисел:

Регистр 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

Содержимое 0 1 2 3 4 5 20 7 56 57 58 59 60 61 62 63 0

Эта последовательность образует стандартную цветовую палитру.


2.4. Программирование файловой системы MS DOS


В машинах типа IBM PC предусмотрены два уровня обращения к магнитным дискам. При работе на нижнем уровне пользователь с помощью прерывания BIOS INT 13h обращается непосредственно к программам управления диском. Типичными операциями этого уровня являются запись или чтение сектора, позиционирования головок, форматирование дорожки. Файловая система DOS не используется; требуемая информация отыскивается не по имени файла, а по номерам поверхности, цилиндра и сектора.

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

Для удобства работы с большим количеством разнородных файлов в DOS используется древовидная структура каталогов. Каталог представляет собой небольшой файл, в котором содержится перечень всех подкаталогов следующего уровня и файлов, входящих в данный каталог. Каждому подкаталогу или файлу отводится одна запись размером 32 байт, в которую DOS заносит информацию о файле: имя, начальный адрес на диске (номер кластера), дата и время создания, длина в байтах, а также набор характеристик файла, называемых его атрибутами. Кроме этого, каждый каталог содержит еще две записи: о себе самом и о родительском каталоге.

Файл может иметь несколько атрибутов одновременно. Так, защищенный от стирания и модификации файл содержит в байте атрибутов число 21, а если к тому же он еще объявлен скрытым, то 23.

Время и дата создания файла помещаются в запись каталога после окончания работы программы с данным файлом и его закрытия.

Номер кластера, с которого начинается файл, позволяет найти на диске начало файла. Информация о его последующих кластерах содержится в таблице размещения файлов (FAT от File Allocation Table).

В последних четырех байтах записи каталога хранится длина файла в байтах. Если в процессе модификации размер файла изменился, DOS изменяет значение данного поля.

При создании нового файла DOS сама отыскивает на диске свободное место и назначает его новому файлу, создавая соответствующую запись в каталоге. Хотя минимальной порцией информации, передаваемой контроллером диска при чтении и записи файлов, является сектор (512 байт), файловая система назначает место на диске целыми кластерами. Размер кластера на гибком диске составляет обычно два сектора (1 Кбайт); на жестком диске в кластер могут входить 4 - 8 секторов. Таким образом, минимальный физический размер файла, даже пустого, составляет один кластер.

Существуют два способа выполнения операций с файлами: с использованием блоков управления файлами (FCB, File Control Block)

и дескрипторов файлов (handle).

Блок управления файлами представляет собой 37-байтную таблицу, содержащую информацию о файле: имя и расширение файла, его размер, длину записей в файле, номер текущей записи и т.д. Эта таблица размещается в памяти, отводимой программе. Для выполнения какой-либо операции с файлом, необходимо заполнить FCB соответствующей информацией и вызвать требуемую функцию.

Другой способ операций с файлами предполагает использование дескрипторов (файловых указателей, файловых описателей), которые в первом приближении можно рассматривать как номера открытых файлов.

Процедура обращения к файлу в общем виде распадается на следующие операции:

- создание файла с указанным именем в указанном каталоге или открытие файла, если он был создан ранее;

- запись в файл или чтение из файла;

- закрытие файла.

Работа с файлом, в большинстве случаев, начинается с операции его открытия, для чего предусмотрена особая функция DOS. Открывая файл, DOS ставит ему в соответствии очередной свободный элемент (блок описания файла) специальной системной таблицы, называемой таблицей открытых файлов (System File Table, SFT) и располагаемой в оперативной памяти среди системных областей данных. Объем этой таблицы задается на этапе конфигурирования DOS директивой FILES файла CONFIG.SYS.

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

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

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

а) создание, открытие и закрытие файла

3Ch - создать файл;

5Ah - создать временный файл;

5Bh - создать новый файл;

3Dh - открыть файл;

3Eh - закрыть файл;

68h - сбросить файл на диск;

41h - удалить файл;

б) чтение и запись данных

42h - установить указатель;

3Fh - читать из файла или устройства;

40h - записать в файл или устройство;

в) изменение характеристик файла

43h - получить или установить атрибуты файла;

56h - переименовать файл;

57h - получить или установить дату и время создания файла;

г) поиск файла

1Ah - установить адрес области передачи данных (DTA);

2Fh - получить адрес области передачи данных (DTA);

4Eh - найти первый файл;

4Fh - найти следующий файл;

д) операции над каталогами

39h - создать каталог;

3Ah - удалить каталог;

3Bh - сменить текущий каталог;

47h - получить текущий каталог;

е) операции над дисками

19h - получить текущий диск;

0Eh - сменить текущий диск;

36h - получить информацию о диске.

Функции 3Ch и 5Bh позволяют создавать файл с заданной спецификацией, т.е. путь к нему вместе с именем файла и расширением указывается в виде символьной строки, завершающейся двоичным нулем (строки ASCIIZ). С помощью этих функций можно создать как файл, так и метку тома (в корневом каталоге диска).

Функция 5Ah используется для создания временного файла, имя которому дает система.

Функция 3Dh позволяет открыть уже созданный файл. Эта функция с помощью указателя файла реализует последовательный доступ к файлу. Для организации прямого доступа к произвольному месту файла предусмотрена функция 42h, позволяющая задать положение указателя относительно начала файла.

Программирование перечисленных выше функций для работы с файлами сходно с приведенным примером:

;--- в сегменте данных

PATH DB 'B:FILENAME.EXT',0

BUFFER DB00 DUP(?)

;--- открытие файла с помощью функции «создания»

LEA DX,PATH ; DS:DX указывают путь к файлу

MOV CX,0 ; атрибуты файла (здесь обычные)

MOV AH,3Ch ; номер функции

INT 21h ; открытие файла

JC OPEN_ERROR ; уход по ошибке

MOV HANDLE,AX ; запоминание номера файла

;--- запись в файл 1000 байт

MOV AH,40h ; номер функции

MOV BX,HANDLE ; номер файла в BX

MOV CX,1000 ; число записываемых байтов

LEA DX,BUFFER ; DS:DX указывают на буфер данных

INT 21h ; запись данных

JC OUT_ERROR ; проверка на ошибки

CMP AX,1000 ; обработка ошибок

JNE FULL_DISC ; при их наличии

2.5. Программирование прерываний


Сигналы внешних аппаратных прерываний (от таймера, клавиатуры, дисков и проч.) поступают в процессор не непосредственно, а через контроллер прерываний, в качестве которого используется микросхема Intel 8259A. Обработка аппаратного прерывания обязательно включает в себя процедуры управления контроллером прерываний. Организация системы аппаратных прерываний заключается в том, что к восьми входным выводам контроллера подключаются выводы устройств, на которых возникают сигналы прерываний. Выход INT контроллера подключается к одноименному входу микропроцессора. При этом, кроме сигнала INT, инициирующего процедуру прерывания в микропроцессоре, контроллер передает в микропроцессор по линиям данных номер вектора, через который должна быть вызвана программа обработки поступившего прерывания. Передаваемый номер вектора образуется в контроллере путем сложения базового номера, записанного в одном из его регистров, с номером входной линии, по которой поступил запрос. Номер базового вектора заносится в контроллер автоматически в процессе начальной загрузки компьютера. Контроллер программируется через порты 20h и 21h. Поскольку базовый вектор всегда равен 8, то номера векторов, закрепленных за аппаратными прерываниями, лежат в диапазоне 8h, ... , Fh.

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

Сигнал запроса прерывания IRQ от устройства поступает на вход регистра запросов и устанавливает в 1 соответствующий бит этого регистра. Далее на пути сигнала стоит регистр маски, программируемый через порт 21h. Значение в бите маски разрешает прохождение сигнала, значение 1 - запрещает. Пройдя через маску, сигнал поступает на схему анализа приоритетов. При стандартной настройке схемы приоритетов, приоритеты сигналов IRQ снижаются по мере роста номера сигнала. Пройдя через схему анализа приоритетов, сигнал запроса прерывания поступает на вход регистра обслуживаемых запросов и дает разрешение на установку в 1 его бита (однако не устанавливает его).

Рис. Логическая структура контроллера прерываний
Одновременно сигнал поступает на вход INT микропроцессора, который регистрирует поступление сигнала INT лишь в случае, если установлен флаг разрешения прерываний IF в регистре флагов. Сброс флага IF командой CLI запрещает все аппаратные прерывания. Микропроцессор, получив сигнал INT, отзывается на него выходным сигналом INTA, который поступает в контроллер прерывания и выполняет там два действия. Во-первых, он устанавливает бит регистра обслуживаемых запросов, разрешенный сигналом запроса прерывания. Во-вторых, он сбрасывает бит регистра запросов.

Микропроцессор, одновременно с посылкой в контроллер прерываний сигнала INTA сбрасывает флаг IF в регистре флагов, запрещая все аппаратные прерывания. Прерывания останутся запрещенными до выполнения пользователем команды STI или до установки флага IF каким-либо другим способом.

Установка 1 в бите регистра обслуживаемых запросов воздействует на схему анализа приоритетов. Установленный бит блокирует в схеме анализа приоритетов все уровни прерываний, начиная с текущего и ниже. Таким образом, если не принять специальных мер, даже после завершения обработки прерывания все, прерывания данного и более низких приоритетов останутся заблокированными. Сброс бита регистра обслуживаемых запросов осуществляется посылкой кода 20h в порт 20h. Этот код получил название команды или приказа EOI (End Of Interrupt). Команда EOI должна быть в любой программе по обработке прерываний.

Практически структуру программы обработки прерываний выбирают, исходя из конкретных условий. Часто в самом начале программы выполняют команду STI, чтобы не задерживать обработку прерываний от более приоритетных устройств (в частности, таймера). Приказ конца прерывания EOI посылается в контроллер в самом конце программы, перед завершающей командой IRET с тем, чтобы полностью исключить вложенные прерывания от запросов того же уровня. Однако сигнал прерывания того же (или более низкого уровня) может пройти между командами, реализующими приказ EOI, и командой IRET, что вызовет повторный вход в эту же программу. Чтобы избежать этого, перед командой EOI выполняют команду запрета всех прерываний CLI. Команда IRET не только восстанавливает адрес возврата в регистрах CS и IP, но и содержимое регистра флагов на момент прерывания.

Типичные структуры программы обработки прерываний:

а) STI б)

.....

CLI


MOV AL,20h ; Команда MOV AL,20h ; Команда

OUT 20h,AL ; EOI OUT 20h,AL ; EOI

IRET IRET

при разрешенных вложенных прерываниях (а) и при запрещенных вложенных прерываниях (б).

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

3. Задание к курсовому проектированию


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

КУРСОВАЯ РАБОТА

«Системное Программное Обеспечение»

Студента группы АСОИ-ХХХ

Фамилия Имя Отчество

Вариант №
При выборе варианта индивидуального задания по номеру варианта необходимо пользоваться приведенным ниже перечнем.

Например, код варианта 14.1.2.2.1 раскрывается следующим образом: задание 14, программа в COM - формате, ввод с клавиатуры средствами BIOS, вывод на экран в графическом режиме, после загрузки программы освободить лишнюю память.



Перечень заданий

а) Основная тема. Программа должна:

  1. создать каталог с именем SPO и в нем создать файл с именем KURS_SPO.txt и записать в него символьную строку;

  2. вывести на экран содержимое текстового файла FILE_SPO.txt (размером не более 80 байтов) синими символами на желтом фоне;

  3. переименовать файл NEWFILE.txt в файл OLDFILE.txt и установить у него атрибут «ReadOnly»;

  4. изменить дату и время создания файла MYFILE.txt и вывести их старые и новые значения на экран;

  5. переслать файл FILE_SPO.txt из каталога OLDDIR в каталог NEWDIR, изменив его имя на MYFILE.txt;

  6. создать на дискете каталог NEWDIR, скопировать в него файлы из каталога KURS_SPO и удалить каталог KURS_SPO;

  7. вывести на экран параметры командной строки;

  8. создать метку тома дискеты, значение которой вводится с клавиатуры;

  9. получить из системы текущее время и вывести его значение на экран мерцающими символами;

  10. менять при вводе данных с клавиатуры в текстовый файл строчные символы на прописные символы;

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

  12. рисовать на экране шахматную доску и периодически через 2-5 секунд инвертировать цвет квадратов;

  13. определять тип символьной строки в текстовом файле (строка букв, десятичное число, 16-ричное число, двоичное число и т.д.);

  14. переводить первые символы слов в верхний регистр в текстовом файле и выделяет их красным цветом;

  15. распознать нажатие «горячей» комбинации клавиш LeftCtrl+RightShift+F3 и реагировать на него звуковым сигналом;

  16. реализовать видеоэффект – «опадание» букв с экрана;

  17. выделять английские символы в словах текстового файла зеленым фоном;

  18. прочитать текущее время, прибавить к нему заданный интервал (например, 5 сек.) и установить будильник на полученное время;

  19. динамически выделять блок памяти объемом 64 Кбайт. Выделенный блок заполнять символьной информацией и переписывать в файл;

  20. выводить на экран информацию о числе и типе имеющихся дисковых накопителей;

  21. выводить на экран информацию о числе и типе имеющихся адаптеров дисплея;

  22. генерировать и выводить на экран случайные числа с помощью системного таймера;

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

  24. выделять цифры в текстовом режиме цветным полем;

  25. изменять цвет границы экрана при последовательном нажатии на клавишу F10;

  26. выделять миганием цифры в текстовом режиме;

  27. выделять подчеркиванием прописные буквы в текстовом режиме;

  28. выводить на экран сообщение о размере свободного пространства на дискете;

  29. выводить на экран сообщение о наличии спрятанных файлов на дискете;

  30. удалять лишние пробелы в текстовом файле;

  31. выводить на экран информацию о размере второго файла на дискете;

  32. прятать заданный файл на дискете. Имя файла задается в командной строке;

  33. восстанавливать удаленный файл на дискете;

  34. выводить информацию о текущих координатах курсора в правый верхний угол экрана;

  35. выводить на экран в графическом режиме размер и атрибуты заданного файла на дискете. Имя файла задается в командной строке;

  36. выводить на экран имена всех подкаталогов на дискете в алфавитном порядке;

  37. выводить на стандартное устройство ввода-вывода порядковые номера кластеров заданного файла на дискете. Имя файла вводится с клавиатуры;

  38. выводить на экран имена файлов на дискете в порядке увеличения их размера;

  39. удалять все файлы с дискеты, если их имена начинаются с заданного символа. Символ вводится с клавиатуры;

  40. форматировать дискету на стандартную емкость 1,44 Мб. Формат программы .ЕХЕ. Предусмотреть все необходимые диагностические сообщения;

  41. генерировать звуковой сигнал и выводить на экран вашу фамилию при нажатой клавише F10. Программа должна быть резидентной;

  42. генерировать звук изменяющейся частоты при нажатии на клавишу «Esc». Процедуру генерации звука оформить в виде макроса;

  43. определять количество установленных в системе портов R232;

  44. распознавать нажатие LeftCtrl + RightShift + F3 и реагировать на него звуковым сигналом. Оформить в виде программы обработки прерывания от клавиатуры;

  45. выводить на стандартное устройство ввода-вывода символы второй половины кодовой таблицы (коды 128 - 255). Установить программируемую задержку вывода очередного символа в 0,5, 1,0 и 5,0 секунд. Задержку задавать параметром командной строки;

  46. вычислять омическое сопротивление двух параллельно соединенных резисторов. Значения сопротивлений резисторов в диапазоне 0,1 ом до 1000 Мом вводятся с клавиатуры;

  47. переводить заданные десятичные числа в шестнадцатеричную, восьмеричную и двоичную формы. Ввод числа осуществлять с клавиатуры и выход из программы нажатием клавиш Alt + F4;

  48. рисовать на экране в графическом режиме 640х400 прямую линию, проходящую через две точки. Значения координат этих точек задаются с клавиатуры.

б) Формат программы:

  1. COM - программа;

  2. EXE - программа.

в) Ввод с клавиатуры:

  1. средствами DOS;

  2. средствами BIOS.

г) Вывод на экран:

  1. в текстовом режиме;

  2. в графическом режиме.

д) Динамическое распределение памяти:

  1. определение размера программы;

  2. освободить лишнюю память.

4. Правила оформления пояснительной записки


Курсовая работа оформляется в соответствии с требованиями государственных стандартов Российской Федерации, а также соответствующих стандартов УГАТУ. На титульном листе пояснительной записки должен быть нанесен график, отражающий ритмичность выполнения работы. Текст пояснительной записки набирается на компьютере в текстовом редакторе Microsoft Word на одной стороне листа бумаги формата А4. Общий объем 10 - 15 страниц. С левой стороны листа должны быть поля шириной 20 мм, листы подшиваются в папку вместе с диаграммами, схемами и другими иллюстративными материалами. Все иллюстрации должны быть пронумерованы и снабжены подписями и ссылками в тексте.

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

- титульный лист;

- задание на проектирование;

- содержание;

- введение;

- выбор системных функций и разработка алгоритма;

- схема алгоритма, общее описание алгоритма и (или) функционирования программы и обоснование принятых технических решений;

- текст программы с необходимыми комментариями;

- описание программы (сведения о логической структуре и функционировании программы);

- заключение;

- список литературы;

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

5. Правила оформления графического материала


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

Графический материал, помещенный в пояснительной записке, а также на листах, по формату, условным обозначениям, шрифтам и масштабам должен соответствовать требованиям единой системы конструкторской документации (ЕСКД), единой системы программной документации (ЕСПД), ГОСТ 19.701-90 «Схемы алгоритмов, программ, данных и систем. Условные обозначения и правила выполнения», и ГОСТ 19.101-77 «Виды программ и программных документов».


6. Методика курсового проектирования


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

- техническое задание. Постановка задачи;

- определение структуры входных и выходных данных. Предварительный выбор методов решения задачи;

- определение требований к программе. Определение стадий, этапов и сроков разработки программы и документации на нее;

- разработка эскизного проекта. Предварительная разработка структуры входных и выходных данных. Уточнение методов решения задачи. Разработка общего описания алгоритма решения задачи;

- разработка технического проекта. Уточнение структуры входных и выходных данных. Разработка алгоритма решения задачи. Определение формы представления входных и выходных данных. Разработка структуры программы;

- разработка программы. Программирование и отладка. Разработка программных документов;

- подготовка и передача программы и программной документации для сопровождения.


7. График выполнения курсовой работы

Курсовая работа выполняется в течение 10 учебных недель и сроки выполнения отдельных этапов курсовой работы устанавливаются таким образом, чтобы обеспечивалась равномерная недельная трудоемкость проведенной работы.

Для регистрации хода выполнения курсовой работы создается план-график, примерный вид которого приведен в таблице.
Таблица 7.1
План-график выполнения курсовой работы

Наименование этапа работ



Процент к общей тру-доемкости

Срок предъявления консультанту

1. Получение и согласование задания.

1%

6,7 нед

Продолжение табл.




2. Изучение принципов работы Assembler-компиляторов, их команд и пробное программирование тестовых примеров.

7%

7,8 нед

3. Определение структуры входных и выходных данных. Предварительный выбор методов решения задачи. Изучение принципов работы клавиатурного ввода символьной информации и вывода ее на экран.

9%

9 нед

4. Определение требований к программе. Определение стадий, этапов и сроков разработки программы и документации на нее. Изучение основ программирования вывода символьной информации на экран в графических режимах. Изучение принципов программирования файловой системы MS DOS

12%

10 нед

5. разработка эскизного проекта. Уточнение методов решения задачи. Разработка общего описания алгоритма решения задачи. Программирование прерываний.

13%

11 нед

6. Уточнение структуры входных и выходных данных. Разработка алгоритма решения задачи. Определение формы представления входных и выходных данных. Разработка структуры программы. Разработка блок-схемы программы, ее написание и пробное компилирование.

23%

12,13 нед

Окончание табл.


7. Программирование и отладка программы. Разработка программных документов.

23%

14, 15 нед

8. Составление и оформление пояснительной записки, подготовка к защите

11%

16 нед

9. Защита

1%

16,17 нед

Итого

100%






8. Порядок защиты

Защита курсовой работы производится перед комиссией, утверждаемой заведующим кафедрой.

Студент допускается к защите при условии наличия подписанной руководителем и студентом пояснительной записки и расчетно-графической части проекта.

Для защиты студенту отводится 10 – 15 минут на изложение содержания работы; в процессе защиты комиссия высказывает свои замечания; выявленные ошибки проекта должны быть отмечены красным карандашом.

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

После защиты студент должен сдать пояснительную записку руководителю проекта.

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

При отсутствии достаточного материала по проекту в контрольные сроки, студенту, как правило, выдается новое задание.



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


  1. Положение о курсовом проектировании. – Уфа: УГАТУ, 2006. – 14 с.

  2. Абель П. Ассемблер. Язык и программирование для IBM PC / Пер. с англ. – К.: Век+, М.: ЭНТРОП, 2005. – 736 с.

  3. Рудольф М. Ассемблер на примерах. Базовый курс – М.: Наука и техника, 2005. – 240 с.

  4. Пильщиков В. Assembler. Программирование на языке Ассемблера IBM PC – М.: Диалог-МИФИ, 2005. – 288 с.

  5. Финогенов К. Г. Основы языка Ассемблера. – М.: Радио и связь, 2000. – 288 с.

  6. Голубь Н.Г. Искусство программирования на Ассемблере Platinum Edition (3 изд.) – М.: Диасофт-ЮП, 2005. – 832 с.

  7. Зубков С.В. Assembler для DOS, Windows и UNIX. – М.: ДМК Пресс; СПб.: Питер, 2004. – 608 с.


Смотрите также:
Тематика курсовых работ. Примерная структура курсовых работ. Примерные планы курсовых работ. Методика выполнения курсовой работы
95.57kb.
1 стр.
1. Задачи курсовой работы 2 Тематика и содержание курсовых работ 3
329.01kb.
1 стр.
Методические рекомендации по выполнению курсовых работ по учебной дисциплине
165.29kb.
1 стр.
Тематика курсовых работ для студентов всех форм обучения/темы контрольных работ для студентов заочной формы обучения и методические рекомендации по их выполнению 13
454.05kb.
3 стр.
Примерные темы курсовых работ
17.05kb.
1 стр.
Методические указания по выполнению курсовой работы Содержание и объем курсовой работы
119.44kb.
1 стр.
1. Мораль и этика в профессиональной деятельности юриста
1587.02kb.
10 стр.
Тематика курсовых работ по дисциплине «Правоохранительные органы»
58.9kb.
1 стр.
Примерные направления курсовых работ для факультета экономистов-международников
52.52kb.
1 стр.
Рекомендации по оформлению домашних курсовых и контрольных работ для слушателей факультета заочного обучения
119.57kb.
1 стр.
Рекомендации по оформлению домашних курсовых и контрольных работ для слушателей факультета заочного обучения
154.66kb.
1 стр.
Рекомендации по оформлению домашних курсовых и контрольных работ для слушателей факультета заочного обучения
224.65kb.
1 стр.