- •Московский институт электронной техники
- •Лабораторная работа 1.
- •Краткие теоретические сведения
- •Определение типа э в м.
- •Определение объема оперативной памяти.
- •Определение типа адаптера дисплея.
- •Ревизия периферийных устройств.
- •Домашнее задание.
- •Пример вызывающей программы
- •Управление выводом символов в си
- •Режим графики
- •Определение времени работы программы
- •Домашнее задание
- •Порядок выполнения работы
- •Лабораторная работа n4 Методы защиты программ и данных краткие теоретические сведения
- •1. Шифрование путем замены.
- •2. Шифрование путем перестановок.
- •3. Шифрование с помощью ключа.
- •Домашнее задание
- •Порядок выполнения работы
- •Лабораторная работа n 5 Отладчик d e b u g. Краткие теоретические сведения
- •Что такое debug
- •Команды debug
- •Некоторые команды ассемблера
- •Небольшие примеры
- •Домашнее задание
- •Порядок выполнения работы
- •Лабораторная работа 6 Вывод точечной графики для ega адаптера. Циклы и процедуры в ассемблере. Краткие сведения о видеосистемах ibm pc.
- •Программа на ассемблере
- •Пример программы
- •Порядок выполнения работы
- •Лабораторная работа 7 Генерация звука краткие теоретические сведения
- •Пример программы
- •Домашнее задание
- •Небольшие примеры Создание файла
- •Домашнее задание
- •Порядок выполнения работы
- •Литература
Определение объема оперативной памяти.
Объем оперативной памяти, доступный операционной системе, можно определить, прочитав содержимое слова данных BIOS по адресу (0040:0013). Это слово можно получить с помощью функции int peek (unsigned int segment, unsigned int offset). Возвращаемое функцией peek значение будет соответствовать объему оперативной памяти в килобайтах.
Определение типа адаптера дисплея.
Программе пользователя может оказаться необходима информация о том, будет ли она работать в системе с монохромным адаптером, с цветной графической картой или с EGA, а также информация о наличии второго адаптера. Необходимые данные можно определить, прочитав содержимое ячейки данных BIOS по адресу (0040:0087) с помощью функции peek.
Она возвращает следующую информацию:
0 - адаптер EGA отсутствует, в противном случае:
бит 0 - если 1, то установлена символьно-цифровая эмуляция курсора;
бит 1 - если 1, то EGA присоединен к монохромному дисплею;
бит 2 - если 0, то можно записывать в видео RAM, 1 - ожидание доступа к дисплею;
бит 3 - если 1, то EGA не активен;
бит 5,6 - размер видеопамяти (число 64 Кб сегментов, уменьшенное на 1),
если 11, то EGA RAM 256K или более;
бит 7 - если 1, то сохраняется содержимое видеобуфера при смене видеорежима.
Битовое представление величины можно получить с помощью функции itoa, опреде-ленной в файле stdlib.h. Выделение отдельных битов можно произвести с помощью операции логического умножения.
Дополнительную информацию получим при ревизии периферийных устройств.
Ревизия периферийных устройств.
Информация о флагах оборудования хранится в ячейке BIOS с адресом (0040:0010). Содержимое ячейки:
бит 0 - если 1, то есть НГМД;
бит 1 - если 1, то есть математический сопроцессор;
биты 2,3 - если 11, то базовая память 640К (АТ не использует);
биты 4,5 - активный видеоадаптер:
11 - монохромный,
10 - цветной 80*25,
01 - цветной 40*25,
биты 6,7 - число НГМД уменьшенное на 1: 00 - 1 НГМД, 01 - 2 НГМД;
биты 9,10,11 - число последовательных портов;
бит 12 - если 1, то есть игровой порт;
биты 14,15 - число параллельных портов.
В языке Си есть стандартная функция функция, возвращающая слово, хранящееся по адресу 0040:0010. Это функция: int biosequip ( void ) .
Еще раз отметим, что мы рассмотрели только малую часть системных ресурсов. Более подробно Вы можете ознакомиться с этим вопросом в специальной литературе.
Домашнее задание.
1. Повторить двоичную, восьмеричную и шестнадцатеричную системы счисления.
2. Составить краткий конспект лабораторной работы.
3. Подготовить программу, которая определяла-бы ресурсы вычислительной системы (вывод информации на экран).
ПОРЯДОК ВЫПОЛНЕНИЯ ЛАБОРАТОРНОЙ РАБОТЫ.
1. Получить у преподователя допуск к лабораторной работе.
2. Отладить программу на ЭВМ.
3. Результаты выполнения программы занести в конспект и показать преподавателю.
4. Перезагрузить компьютер и записать в конспект информацию о системных ресурсах, выдаваемую при загрузке. Сравнить с полученнуми в работе данными.
5. Защитить лабораторную работу.
ЛАБОРАТОРНАЯ РАБОТА 2
Построение пользовательских оболочек
КРАТКИЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ
При построении пользовательских оболочек необходимо уметь реализовать ситуацию, когда "главная" (или управляющая) программа может вызывать другие программы, а по их завершении оставлять управление за собой, не передавая ОС. В этом случае главная (или вызывающая) программа называется "родительской", а вызываемая - "дочерней". В общем случае для реализации процедуры вызова необходимо решить следующие вопросы:
1. Подготовить место в памяти для размещения "дочерней" программы.
2. Обеспечить сохранение состояния "родительской программы".
3. Загрузить в память "дочернюю" программу и передать ей управление.
4. По завершении "дочерней" программы передать управление вызывающей программе.
Заметим, что "родительская" программа может быть выгружена из памяти, освободив ее для "дочерней" программы, а может оставаться в памяти, и тогда для "дочерней" программы останется только свободное место.
Операционная система MS DOS воспринимает в качестве исполняемых программ файлы двух типов: .ЕХЕ и .СОМ. Программы типа СОМ являются односегментными - команды, данные и стек располагаются в единственном сегменте и не могут превышать 64 Кбайт. Они хранятся на диске в виде абсолютного образа памяти и в процессе загрузки практически не изменяются. Программы типа .ЕХЕ могут включать любое число сегментов и их суммарный размер ничем не ограничен. Однако, чтобы загрузить их в память необходимо проделать довольно большую работу. Исходные данные для загрузчика хранятся в специальной системной области - заголовке, который есть у всех ЕХЕ-программ.
Любая программа содержит системную таблицу - префикс программного сегмента (PSP), имеющую длину 256 байт. В СОМ-программах место под PSP надо резервировать, а к ЕХЕ-программам он “пристраивается ” в процессе загрузки. Содержимое PSP может использоваться как самой программой, так и DOS. Некоторые данные хранящиеся в PSP:
- вектора прерываний по завершению программы, по критической ошибке, по <Ctrl>/C;
- адрес блока памяти с окружением процесса;
- хвост команды;
- дисковая область передачи данных и др.
Под окружением процесса понимается некоторый набор системных установок, храня-щийся в виде символьных строк формата: переменная = значение. Например:
COMSPEC=C:\DOS\COMMAND.COM
PROMPT=
PATH=
TEMP=
и другие задаваемые командой SET.
С помощью хвоста командной строки запускаемой программе часто передаются ключи, имена входных и выходных файлов. Например в команде ARJ.EXE A DATA.TXT DAT1.ARJ в хвост будут включены данные выделенные жирным.
В языке Си имеется несколько операторов, позволяющих вызывать программы EXE и COM, а также использовать команды MS-DOS из программы. В приведенном ниже примере для вызова программ и команд DOS используется оператор system (name), который оставляет вызывающюю программу резидентной. Оператор perror печатает сообщение об ошибках при загрузке "дочерней" программы.
При использовании стандартных операторов Си вопросы 1-4 решаются автоматически.
Более подробно они будут рассмотрены на лекциях. Полезно также изучить соответству-ющие разделы книги Р.Джордейна.