Главная Другое
Экономика Финансы Маркетинг Астрономия География Туризм Биология История Информатика Культура Математика Физика Философия Химия Банк Право Военное дело Бухгалтерия Журналистика Спорт Психология Литература Музыка Медицина |
страница 1 Федеральное агентство по образованию Государственное образовательное учреждение высшего профессионального образования УФИМСКИЙ ГОСУДАРСТВЕННЫЙ АВИАЦИОННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ Кафедра автоматизированных систем управления НИЗКОУРОВНЕВОЕ СИСТЕМНОЕ ПРОГРАММИРОВАНИЕ ДЛЯ IBM PC Методические указания по выполнению курсовой работы по дисциплине «Системное программное обеспечение» У Составитель О.Д. Лянцев УДК 004.45(07) ББК 32.973-018.2(я7) Низкоуровневое системное программирование для IBM PC Методические указания по выполнению курсовой работы по дисциплине «Системное программное обеспечение» / Уфимск. гос. авиац. техн. ун-т; Сост. О.Д. Лянцев. - Уфа, 2008. - 28 с. Содержатся основные сведения, необходимые для выполнения курсовой работы по дисциплине «Системное программное обеспечение»: о принципах взаимодействия аппаратных и программных средств персонального компьютера IBM PC и о способах программирования основных системных функций. Приведены перечень тем курсовых работ и сведения о содержании основных этапов работ по выполнению курсового проектирования, методика выполнения этих этапов, материалы для оформления и защиты работы. Методические указания разработаны с использованием учебной и специальной литературы по системному программированию с применением типовых методических материалов по курсовому проектированию. Предназначены для подготовки дипломированных специалистов по направлению 230100 – «Информатика и вычислительная техника» специальности 230102 – «Автоматизированные системы обработки информации и управления». Табл.1. Ил.1. Библиогр.: 7 назв.
д-р физ-мат. наук, проф., В.П. Житников © ![]() университет, 2008 ![]() Содержание Введение 4 1. Задачи курсовой работы 4 2. Тематика и содержание курсовых работ 5 2.1. Ввод информации с клавиатуры терминала 5 2.2. Вывод текстовой информации на экран терминала 7 2.2.1. Вывод на экран функциями MS DOS 8 2.2.2. Управление экраном через ANSI-драйвер 9 2.2.3. Вывод на экран функциями BIOS 10 2.3. Вывод графической информации на экран терминала 11 2.4. Программирование файловой системы MS DOS 13 2.5. Программирование прерываний 17 3. Задание к курсовому проектированию 20 4. Правила оформления пояснительной записки 24 5. Правила оформления графического материала 25 6. Методика курсового проектирования 25 7. График выполнения курсовой работы 26 8. Порядок защиты 28 Список литературы 28 ВведениеНастоящие методические указания предназначены для студентов специальности 230102 «Автоматизированные системы обработки информации и управления», выполняющих курсовые работы по дисциплине «Системное программное обеспечение». Целью выполнения курсовой работы по дисциплине «Системное программное обеспечение» является формирование у студентов опыта создания прикладных программ на основе низкоуровневых системных функций BIOS и MS DOS. Назначение указаний – определить цель, тематику, содержание, объем, порядок выполнения работы, направить деятельность студентов по нужному руслу и пояснить основные этапы проектирования. Предлагаемые задания разработаны с использованием типовых методических материалов по курсовому проектированию и специальной литературы по системному программному обеспечению. 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 DOSMS 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 его бита (однако не устанавливает его).
Микропроцессор, одновременно с посылкой в контроллер прерываний сигнала 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, вывод на экран в графическом режиме, после загрузки программы освободить лишнюю память. Перечень заданий а) Основная тема. Программа должна:
б) Формат программы:
в) Ввод с клавиатуры:
г) Вывод на экран:
д) Динамическое распределение памяти:
4. Правила оформления пояснительной запискиКурсовая работа оформляется в соответствии с требованиями государственных стандартов Российской Федерации, а также соответствующих стандартов УГАТУ. На титульном листе пояснительной записки должен быть нанесен график, отражающий ритмичность выполнения работы. Текст пояснительной записки набирается на компьютере в текстовом редакторе Microsoft Word на одной стороне листа бумаги формата А4. Общий объем 10 - 15 страниц. С левой стороны листа должны быть поля шириной 20 мм, листы подшиваются в папку вместе с диаграммами, схемами и другими иллюстративными материалами. Все иллюстрации должны быть пронумерованы и снабжены подписями и ссылками в тексте. Материалы в пояснительной записке следует располагать в следующем порядке: - титульный лист; - задание на проектирование; - содержание; - введение; - выбор системных функций и разработка алгоритма; - схема алгоритма, общее описание алгоритма и (или) функционирования программы и обоснование принятых технических решений; - текст программы с необходимыми комментариями; - описание программы (сведения о логической структуре и функционировании программы); - заключение; - список литературы; - приложения.
5. Правила оформления графического материалаГрафическая часть проекта является не иллюстрационным материалом, а технической документацией на разработанную студентом программу. Графический материал, помещенный в пояснительной записке, а также на листах, по формату, условным обозначениям, шрифтам и масштабам должен соответствовать требованиям единой системы конструкторской документации (ЕСКД), единой системы программной документации (ЕСПД), ГОСТ 19.701-90 «Схемы алгоритмов, программ, данных и систем. Условные обозначения и правила выполнения», и ГОСТ 19.101-77 «Виды программ и программных документов». 6. Методика курсового проектированияМетодика разработки программы и программной документации состоит из следующих этапов: - техническое задание. Постановка задачи; - определение структуры входных и выходных данных. Предварительный выбор методов решения задачи; - определение требований к программе. Определение стадий, этапов и сроков разработки программы и документации на нее; - разработка эскизного проекта. Предварительная разработка структуры входных и выходных данных. Уточнение методов решения задачи. Разработка общего описания алгоритма решения задачи; - разработка технического проекта. Уточнение структуры входных и выходных данных. Разработка алгоритма решения задачи. Определение формы представления входных и выходных данных. Разработка структуры программы; - разработка программы. Программирование и отладка. Разработка программных документов; - подготовка и передача программы и программной документации для сопровождения. 7. График выполнения курсовой работыКурсовая работа выполняется в течение 10 учебных недель и сроки выполнения отдельных этапов курсовой работы устанавливаются таким образом, чтобы обеспечивалась равномерная недельная трудоемкость проведенной работы. Для регистрации хода выполнения курсовой работы создается план-график, примерный вид которого приведен в таблице.
Продолжение табл.
Окончание табл.
8. Порядок защитыЗащита курсовой работы производится перед комиссией, утверждаемой заведующим кафедрой. Студент допускается к защите при условии наличия подписанной руководителем и студентом пояснительной записки и расчетно-графической части проекта. Для защиты студенту отводится 10 – 15 минут на изложение содержания работы; в процессе защиты комиссия высказывает свои замечания; выявленные ошибки проекта должны быть отмечены красным карандашом. По результатам защиты (доклад, ответы на вопросы, качество проекта) выставляется оценка в ведомости и на титульном листе пояснительной записки. В случае выявления принципиальных ошибок проект возвращается на доработку. После защиты студент должен сдать пояснительную записку руководителю проекта. В случае неудовлетворительной оценки назначается повторная защита с устранением всех ошибок проекта или с выдачей нового задания. При отсутствии достаточного материала по проекту в контрольные сроки, студенту, как правило, выдается новое задание. Список литературы
Составитель Лянцев Олег Дмитриевич НИЗКОУРОВНЕВОЕ СИСТЕМНОЕ ПРОГРАММИРОВАНИЕ ДЛЯ IBM PC Методические указания по выполнению курсовой работы по дисциплине «Системное программное обеспечение» Подписано в печать 12.08.2008. Формат 60х84 1/16. Бумага офсетная. Печать плоская. Гарнитура Таймс. Усл. печ. л.1,7. Усл. кр. - отт. 1,7. Уч. -изд. л. 1,6. Тираж 100 экз. Заказ № . ГОУ ВПО Уфимский государственный авиационный технический университет Центр оперативной полиграфии УГАТУ 450000, Уфа-центр, ул. К. Маркса, 12 ![]() Смотрите также: Методические указания по выполнению курсовой работы по дисциплине «Системное программное обеспечение»
326.51kb.
1 стр.
1. Задачи курсовой работы 2 Тематика и содержание курсовых работ 3
329.01kb.
1 стр.
Методические указания к выполнению курсовой работы для обучающихся специальности 250203. 51
236.57kb.
1 стр.
Е. Н. Ишакова разработка компиляторов
649.27kb.
7 стр.
Методические указания по выполнению курсовой работы Содержание и объем курсовой работы
119.44kb.
1 стр.
Методические указания по выполнению курсовой работы по дисциплине «Экономика отрасли»
364.17kb.
1 стр.
Методические указания по выполнению курсовой работы по дисциплине «Компьютерные сети и телекоммуникации»
262.57kb.
1 стр.
П. Ф. Лесгафта г. Санкт-Петербург Л. А. Заварухина информатика (лекции) Санкт-Петербург 2009 Содержание лекция
594.84kb.
4 стр.
Методические указания к выполнению контрольной работы по дисциплине «Валеология» для студентов специальности
1366.61kb.
7 стр.
Методические указания к выполнению курсовой работы для студентов экономических специальностей Витебск 2011 (076. 5)
824.89kb.
3 стр.
Методические указания по выполнению курсовой работы 2013 Общие вопросы
72.28kb.
1 стр.
Методические указания к выполнению курсовой работы для студентов специальности 1-25 01 08 «Бухгалтерский учет, анализ и аудит» Витебск 635.27kb.
5 стр.
|