Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовой проект [вариант 30].DOC
Скачиваний:
24
Добавлен:
02.05.2014
Размер:
134.14 Кб
Скачать

Задание на проектирование.

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

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

в) Ввод с клавиатуры: средствами DOS.

г) Вывод на экран: в текстовом режиме.

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

Содержание

Введение 3

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

Схема алгоритма 7

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

Описание программы 11

Заключение 12

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

Приложение 1 14

Приложение 2 16

Введение

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

Знакомство с назначением и возможностями системных программ (их обычно называют DOS и BIOS) является необходимым элементом подготовки квалифицированного программиста, независимо от того, в какой предметной области он работает. При разработке программ на языках высокого уровня (Паскаль, Си) многие средства DOS и BIOS реализуются в неявной форме с помощью операторов языка, его встроенных функций или библиотечных процедур, и необходимость прямого использования системных функций возникает реже. Однако знакомство с внутренними возможностями DOS и BIOS с помощью языка низкого уровня Turbo Assembler, ее алгоритмами и процедурами позволяет увидеть за формализмом языка высокого уровня те реальные процессы, которые будут протекать в системе при выполнении прикладной программы и, следовательно, более осознанно подойти к разработке структуры программы и ее конкретных алгоритмов.

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

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

Программа типа .com содержит лишь один сегмент, включающий все компоненты программы: PSP (префикс программного сегмента - это область размером 100h1 байт, которая содержит информацию необходимую DOS для работы программы), программный код (т.е. оттранслированные в машинные коды программные строки), данные и стек. После загрузки программы все сегментные регистры (CS, DS, ES, SS) указывают на начало PSP. Указатель стека инициализируется числом FFFEh. Отсюда следует, что, независимо от фактического размера программы ей выделяется 64 Кбайт адресного пространства, всю нижнюю часть которой занимает стек.

Первое слово PSP содержит номер прерывания DOS, которое будет приводить к завершению программы. Когда выполняется последний оператор RET программы, то значения на вершине стека указывают счетчику команд (регистр IP) на начало PSP, таким образом, код завершения выполняется как следующая инструкция программы.

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

а) F10 – вызывает изменение цвета границы экрана;

б) Esc – выход из программы;

в) В случае нажатия других – вывод сообщения об ошибке.

Прерывание DOS позволяющее реализовать ввод символа без эха и без обработки Ctrl/C – INT 21h c функцией 7h. Данная функция при вызове вводит в программу один символ из кольцевого буфера ввода, при отсутствии ждет его ввода. Она так же позволяет вводить в программу расширенные коды ASCII, что дает возможность управлять программой с помощью функциональной клавиши F10.

Для вывода на терминал необходимы две функции: первая - выводит строку с информационными сообщениями MSG1 и MSG2, используется функция 09h прерывания DOS – INT 21h; вторая – для вывода символа – функция 40h прерывания DOS – INT 21h. Посимвольный вывод необходим для преобразования числа из кода ASCII в нормальную цифровую форму, для этого делением числа на 10 производится отделение цифр слева направо и вывод на экран, что вызывает необходимость использования функции позиционирования курсора 02h прерывания BIOS – 10h.

Определение размера программы происходит путем получения разности адреса конца и начала программы. Для этого в конце программы символ ‘$’ присваиваем переменной newstk, началу же соответствует begin, т.е. размер программы равен (begin-newstk).

Рассмотрим более подробно работу в текстовом видеорежиме. Вся работы программы осуществляется в стандартном текстовом режиме 80 символов на 25 строк, режим устанавливается функцией 0h прерывания BIOS – 10h.

Когда дисплей установлен в текстовый режим, то каждой позиции символа на экране отводится два байта памяти. Первый байт содержит номер кода ASCII кода символа, а второй - атрибуты символа. Цветной адаптер может выводить в цвете, как сам символ, так и всю область, отведенную данному символу (фоновый цвет). Граница символьного экрана может иметь цвет, отличный от фонового цвета центральной части экрана.

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

EGA имеет специальную функцию BIOS для установки содержимого регистров палитры (набор цветов). Палитра состоит из 17 регистров. С 0 по 15 определяют саму палитру, а 16 регистр устанавливает цвет границы экрана. Для его изменения используются функция 0bh прерывания 10h, при этом регистр bh=00 – выбор цвета границы экрана, который заносится в регистр BL.

Схема алгоритма