Смекни!
smekni.com

Методические указания по изучению дисциплины 5 "системное программирование" (стр. 4 из 13)

SYS - копирует системные файлы MS DOS и интерпретатор команд на указанный диск.

Синтаксис:

SYS [d1:][path] d2:

d1 имя диска, где размещается система.

d2 имя диска для копирования системы.

3.5.3. Взаимодействие с MS DOS

Эта глава описывает команды взаимодействия с MS DOS.

CLS - очистка экрана.

Синтаксис:

CLS

DATE- позволяет узнать и изменить системное значение даты.

Синтаксис:

DATE [date]

date системная дата.

HELP- выдает помощь по командам MS DOS.

Синтаксис:

HELP /? для получения информации по всем командам DOS

HELP command для получения информации по одной команде DOS command имя интересуемой команды DOS

MEM- позволяет получить информацию о распределении памяти.

Синтаксис:

MEM [/C|/P|/D]

/C для получения полной карты памяти.

/D список программ и драйверов в памяти.

/P список программ в памяти.

TIME-позволяет узнать и изменить системное значение времени.

Синтаксис:

TIME [time]

time время в формате MS DOS.

VER -показывает версию MS DOS.

Синтаксис:

VER

3.6. Пакетные командные файлы

При работе с компьютером, достаточно часто, возникает необходимость повторять одни и те же команды (может быть, с небольшими изменениями) для того, чтобы осуществить некоторые периодические действия. Операционная система позволяет записать нужную для этого последовательность команд в файл текстового формата, при запуске которого она выполнится. Речь идет о так называемых bat-файлах. Оригинальный командный процессор Microsoft COMMAND.COM предоставляет весьма ограниченный набор команд для применения в bat-файлах:

· REM – комментарии в bat-файле,

· ECHO - выдача сообщений на экран (отключения вывода),

· PAUSE – приостановка выполнения пакетного файла,

· GOTO – переходы в bat-файлах,

· IF – обработка логических условий,

· CALL – вызов командного файла из другого командного файла,

· EXIT – выход из командного файла,

· FOR – выполнение команды MS DOS для набора файлов,

· SHIFT – сдвиг параметров командного файла и внутренних переменных,

· ERRORLEVEL – возвращает код завершения последней команды,

· EXIST – проверка существования указанного файла.

Из аналогов command.com фирмы Microsoft хотелось бы выделить 4DOS фирмы JP Software Inc.'s. Речь идет о версии 6.01 программы. Этот продукт предоставляет более широкие сервисные возможности для работы с пакетными файлами, такие как: работы со звуком, рисование линии, изменение режимов экрана, прямой доступ к клавиатуре и многое другое. При этом важно отметить, что все эти возможности обрабатываются напрямую командным процессором (который, кстати, совместим с command.com), а не внешней программой, как в случае Batch Enhancher из набора Norton Utilites.

4. Лабораторная работа № 2

ОСНОВЫ ПРОГРАММИРОВАНИЯ В MS DOS

4.1. Цель работы

Научиться писать системные программы для операционной системы MS DOS.

4.2. Задание

· Напишите программу на ассемблере. Откомпилируйте ее. Попытайтесь изучить ее исходный текст с помощью отладчика и дизассемблера.

· Проделайте то же самое для программы, написанной на языке высокого уровня. Сделайте вывод о причинах высокой скорости работы программ, написанных на ассемблере?

· Напишите простейшую защиту от отладки программ.

· Напишите целевую процедуру своего прерывания, которая бы выводила на экран слово “DOS” и при этом не использовала бы прерывания 21h или 10h.

· Напишите программу, которая бы работала с файлами и клавиатурой через функции int21h

· Напишите программу, перехватывающую любое прерывание на любом языке высокого уровня

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

· Перехватите прерывание 9h. Объясните возникшие проблемы.

· Реализуйте все примеры из методички.

4.3. Утилиты

По характеру работы и специфики написания все программное обеспечение для MS DOS можно разделить на две большие группы: нерезидентные и резидентные программы [6,7,8,11]. Такое разделение, в какой то степени вызвано архитектурными особенностями операционной системы. Как правило, большинство программ, выполнив свою целевую функцию, завершают работу и освобождают память для использования ее другими программами. Это нерезидентные программы.

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

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

4.3.1. Нерезидентные утилиты

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

1. Любая утилита при наличии в командной строке ключа “/?” или “/h” должна выводить на экран краткую справку по всем остальным ключам, которые применяются ею для работы, с объяснением, для чего какой ключ применяется.

2. Значение ERRORLEVEL равное 0 после завершение работы утилиты должно говорить о том, что работы завершилась нормально.

3. В исходном коде программы рекомендуется придерживаться венгерской формы записи переменных.

Алгоритм написания нерезидентной утилиты:

· Формулируем задачу.

· Определяем необходимые входные параметры.

· На основе предыдущих пунктов, выбираем необходимую среду для написания программы.

· Структурируем алгоритм на основе выбранной среды.

· Пишем программу.

· Отлаживаем.

· Испытываем на придуманных примерах и тестах.

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

4.3.2. Резидентные утилиты MS DOS

Все события в DOS обрабатываются особыми внутренними процедурами, называемыми прерываниями. Необходимость прерываний обусловлена двумя основными причинами: неопределенностью во времени задач, связанных с обслуживанием внешних устройств (ВУ) и непредвиденностью программных ошибок. На самом деле прерывания это просто набор процедур для работы с внешними или внутренними устройствами + еще пара полезных для программистов процедур. Эти процедуры либо присутствуют в памяти после загрузки системных файлов MS DOS, либо прошиты в ПЗУ (BIOS). По характеру возникновения прерывания делятся на программные и аппаратные.

Аппаратными называются те прерывания, которые генерируются автоматически при возникновении аппаратного события. Например, при нажатии любой клавиши генерируется INT 9h, которое считывает код нажатой клавиши из порта клавиатуры (60h), обрабатывает его и затем помещает в специальный буфер клавиатуры. В компьютерах класса РС можно отметить такие важнейшие аппаратные прерывания как:

· int 08h (IRQ0) – прерывание таймера. Вызывается каждые 55 мс.

· int 09h (IRQ1) – прерывание контроллера клавиатуры.

· int 0eh (IRQ6) – прерывание контроллера флоппи-дисков.

Программные прерывания вызываются только по обработке процессором команды CDxx (мнемоника: INT XX), где XX- номер прерывания (Например: CD1 - вызов INT 1). В верхних адресах памяти находится так называемая таблица векторов прерываний. Вектор- это, по сути, слово в оперативной памяти или в ПЗУ, по которому находится адрес программы обслуживания данного прерывания. Адрес вектора вычисляется очень легко - для прерывания INT XXh (HEX) он равен 4*xx.

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

Обычно программные прерывания делят по характеру целевых процедур на системные и пользовательские. Системные прерывания (такие как INT 21h, или INT 10h) предоставляют программисту доступ к основным процедурам для работы с "железом" компьютера или с устройствами ввода / вывода.

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

· System information (возвращают системную информацию, такую как версию операционной системы, системную дату и время, поиск файлов и т.д.).

· Character I/O (символьный ввод / вывод).

· Handle-Oriented File I/O (файловый ввод / вывод).

· Рrocess Control (контроль выполнения и завершения программ).

· Memory Control (управление памятью приложений).

Поскольку DOS изначально разрабатывалась как однозадачная операционная система, а желание выполнять «одновременно» несколько процессов велико - появились программы, как бы эмулирующие многозадачность. Речь идет о TSR (Terminate and Stay Resident) программах.

4.4. Резидентные программы и понятие перехвата прерывания

Если речь зашла о резидентных программах, необходимо сразу сделать оговорку- программы такого класса всегда используют НЕДОКУМЕНТИРОВАННЫЕ возможности MS DOS и потому фирма Microsoft -не рекомендует их писать и использовать уже написанные.