- •1. Основы программирования для dos 9
- •1.1.7. Средства bios 21
- •2. Приемы системного программирования 57
- •Введение
- •1.Основы программирования для dos
- •1.1. Структура и выполнение программ в dos
- •Программа типа сом
- •Программа типа ехе
- •1.2.Использование служебных функций dos и bios
- •1.3.Вывод на экран в текстовом режиме
- •Средства dos
- •Средства bios
- •Выбор видеорежима
- •Управление положением курсора
- •Вывод символов на экран
- •Прямая работа с видеопамятью
- •1.4.Ввод с клавиатуры
- •Средства dos
- •Средства bios
- •1.5.Графические видеорежимы
- •Работа со стандартными графическими режимами
- •Работа с svga-режимами
- •(Продолжение таблицы 4)
- •(Окончание таблицы 4)
- •1.6.Работа с мышью
- •1.7.Другие устройства
- •Системный таймер
- •Последовательный порт
- •Параллельный порт
- •1.8.Работа с файлами
- •Создание и открытие файлов
- •Чтение из файла и запись в файл
- •Закрытие и удаление файла
- •Поиск файлов
- •Управление файловой системой
- •1.9.Управление памятью
- •Обычная память
- •Область памяти umв
- •Область памяти нма
- •Интерфейс ems
- •Интерфейс xms
- •1.10.Организация процессов
- •Запуск программ на выполнение
- •Переменные окружения
- •Командные параметры
- •2.Приемы системного программирования
- •2.1.Управляющие структуры
- •Структуры if... Then... Else
- •Структуры case
- •Конечные автоматы
- •2.2.Процедуры и функции
- •Передача параметров
- •Передача параметров по значению
- •Передача параметров по ссылке
- •Передача параметров по возвращаемому значению
- •Передача параметров по результату
- •Передача параметров по имени
- •Передача параметров отложенным вычислением
- •Передача параметров в регистрах
- •Передача параметров в глобальных переменных
- •Передача параметров в стеке
- •Передача параметров в потоке кода
- •Передача параметров в блоке параметров
- •Локальные переменные
- •2.3.Обработка прерываний
- •Обработчики прерываний
- •Прерывания от внешних устройств
- •Взаимодействие прикладных и системных обработчиков прерываний
- •2.4.Резидентные программы
- •Системные средства организации резидентных программ
- •Взаимодействие с резидентной программой
- •2.5.Драйверы устройств в dos
- •Литература
2. Приемы системного программирования 57
2.1. Управляющие структуры 57
1.1.26. Структуры IF... THEN... ELSE 57
1.1.27. Структуры CASE 57
1.1.28. Конечные автоматы 58
1.1.29. Циклы 59
2.2. Процедуры и функции 60
1.1.30. Передача параметров 60
1.1.31. Локальные переменные 64
Рис. 5. Стек при вызове процедуры foobar 65
2.3. Обработка прерываний 65
Рис. 6. Процедура обслуживания прерывания 66
1.1.32. Обработчики прерываний 66
Функция DOS 25h — Установить вектор прерывания 67
Функция DOS 35h — Получить содержимое вектора прерывания 67
1.1.33. Прерывания от внешних устройств 68
1.1.34. Взаимодействие прикладных и системных обработчиков прерываний 68
2.4. Резидентные программы 70
1.1.35. Системные средства организации резидентных программ 70
1.1.36. Взаимодействие с резидентной программой 71
2.5. Драйверы устройств в DOS 72
ЛИТЕРАТУРА 77
Введение
Целью системного программирования является создание системных программ. Последние могут решать самые разнообразные задачи: организовывать низкоуровневое взаимодействие с устройствами компьютера, манипулировать файлами, управлять ресурсами и процессами, поддерживать языки программирования или обеспечивать сервисную поддержку в виде набора служебных подпрограмм. Часто при решении многих из этих задач программисту приходится выполнять ряд элементарных операций, таких как обмен данными с устройствами ввода-вывода и с файлами, преобразование типов данных, организация структур данных и подпрограмм, низкоуровневое взаимодействие с оборудованием.
Язык ассемблера как средство реализации подобных операций, базируясь на микропроцессорных командах, дает возможность программисту создавать максимально эффективные и независимые от сервисных средств программы. Эта независимость, однако, оборачивается зависимостью от тех низкоуровневых средств, которые использовались при создании программы, в том числе, возможно, от архитектурных особенностей конкретного компьютера.
Кроме того, значительную роль при практическом программировании играет эффективность непосредственно процесса программирования, которую можно рассматривать как некоторую функцию качества конечных программ и времени, затраченного на их создание. Лишь небольшая часть возникающих на практике задач действительно требует использования исключительно машинных команд. При решении остальных разумно воспользоваться готовым стандартным инструментарием, предоставляемым базовой системой ввода-вывода (BIOS) и операционной системой (ОС). Это не только значительно ускорит процесс создания и отладки программ, но и, вероятнее всего, во многом обеспечит совместимость с последующими версиями данной ОС.
Вообще, среда подготовки и выполнения программ, особенно системных, играет очень важную роль для системного программиста. BIOS предоставляет процедуры и драйверы для работы со стандартными устройствами компьютера, а ОС, помимо предоставления сервисных функций, определяет целый ряд свойств и особенностей программы. К ним, в частности, относятся способы обращения к ресурсам, как аппаратным (пространство памяти и процессорное время), так и программным (сервисным службам ОС, библиотекам функций и т. п.), возможность и механизмы взаимодействия программ между собой и реагирования на возникающие в системе события, форматы объектного и исполнимого модулей и пр. Как следствие, каждая из распространенных на сегодня ОС приносит свою идеологию создания и поведения программ, а во многом также и цели, которые имеет смысл решать с помощью системных программ.
Одним из популярных семейств ОС, использующихся сегодня на ПК, является семейство дисковых операционных систем DOS (Disk Operating System). Имеется несколько вариантов этой системы, разработанных различными фирмами и совместимых между собой — MS-DOS, DR-DOS, Novell DOS и др. Кроме того, система DOS поставляется в виде части систем Microsoft Windows 95 и 98. DOS предоставляет программам максимальную свободу действий, практически никак не ограничивая доступ к процессору, памяти и внешним устройствам. По этой причине система DOS хорошо подходит для того, чтобы близко познакомиться с устройством компьютера и возможностями, которые может использовать программа на ассемблере, но которые часто скрываются компиляторами с языков высокого уровня и более совершенными операционными системами.
Таким образом, в данной методической разработке рассматриваются часто используемые средства создания работоспособных системных программ, а именно: сервисные функции DOS и BIOS, предназначенные для решения различных задач; методы работы с такими устройствами, как клавиатура, экран, мышь, таймер, последовательный и параллельный порты компьютера; работа с файлами и управление памятью и процессами в различных условиях; организация программ обработки прерываний, резидентных программ и драйверов. Кроме того, уделено внимание вопросам технологии модульного программирования и организации управляющих структур.
