- •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
- •Литература
Переменные окружения
Во время запуска DOS создает не только префикс программы PSP, но и окружение — область памяти (отдельный блок), содержащую так называемые переменные окружения (среды). Переменные окружения представляют собой ASCIZ-строки (строки символов, оканчивающиеся байтовым нулем) в формате "ИМЯ=ЗНАЧЕНИЕ", где ИМЯ и ЗНАЧЕНИЕ могут быть любыми последовательностями символов. С помощью переменных окружения программе может передаваться некоторая информация, например, параметры работы, имена файлов или путей файловой системы и т.п. Имеются общие стандартные переменные с определенными именами и форматами значений. К ним относятся переменные PATH, TEMP, TMP, COMSPEC, CMDLINE, PROMPT. Некоторые команды DOS имеют свои переменные окружения.
Важную роль при запуске программ, например, играет переменная PATH. Ее значение представляет собой список путей файловой системы (полных имен каталогов), в которых осуществляется поиск запускаемых файлов. Каталоги в списке разделяются символом ";". Благодаря этому поиску становится возможным запуск программ не только из текущего каталога, но и из общих каталогов переменной PATH.
По окончании последней переменной окружения стоит дополнительный нулевой байт, затем слово (обычно 1) — количество дополнительных строк окружения, а потом — дополнительные строки. Первая дополнительная строка — всегда полный путь и имя текущей программы — также в форме ASCIZ-строки.
DOS создает копию всех переменных окружения для каждого запускаемого процесса. Сегментный адрес копии окружения для текущего процесса располагается в PSP по смещению 2Ch. При запуске новой программы с помощью функции 4Bh можно создать полностью новое окружение и передать его сегментный адрес запускаемой программе в блоке ЕРВ или просто указать 0, позволив DOS скопировать окружение текущей программы.
Командные параметры
Программе, запускаемой на выполнение из командной строки, могут передаваться командные параметры (параметры командной строки):
<name_program> <parameters>
Чаще всего строка параметров отделяется от имени запускаемой программы пробелом, иногда — символом "/". Обычно командные параметры представляют собой перечень символов (иногда — групп символов), предваряемых знаком "/" или "-":
<name_program> /<par1> /<par2> /<par3> …
В общем же случае это просто строка, которую программа может интерпретировать по-разному.
При запуске программы DOS помещает всю командную строку (включая последний символ 0Dh) в блок PSP запущенной программы по смещению 81h и ее длину в байт 80h (таким образом, длина командной строки не может быть больше 7Eh (126) символов). Под Windows 95 и 4DOS (командный процессор, заменяющий стандартный COMMAND.COM), если командная строка превышает эти размеры, байт PSP:0080h (длина) устанавливается в 7Fh, в последний байт PSP (PSP:00FFh) записывается 0Dh, первые 126 байт командной строки размещаются в PSP, а вся строка целиком — в переменной среды CMDLINE. ...
2.Приемы системного программирования
Все примеры программ из предыдущего раздела в первую очередь предназначались для демонстрации работы с теми или иными основными устройствами компьютера при помощи средств, предоставляемых DOS и BIOS. В этом разделе рассказано о том, как в ассемблере организуются наиболее распространенные программные структуры, а также рассмотрены те задачи, решая которые, принято использовать язык ассемблера при программировании для DOS.