
- •В.А. Афанасьев
- •Часть 1 Лабораторный практикум
- •Предисловие
- •1. Краткая характеристика операционной среды ms-dos в компьютерах с операционной системой Windows
- •2. Составные части ms-dos и её инициализация
- •3. Взаимодействие Ассемблерной программы с ms-dos и аппаратными средствами Компьютера
- •4. Сегментированная организация памяти в реальном режиме. Виды памяти в среде ms-dos
- •Распределение первого мегабайта памяти компьютера
- •Содержание некоторых полей области данных bios
- •5. Программная модель 32-разрядных процессоров i80x86
- •Назначения сегментных регистров
- •6.2.2. Путь выполнения команды
- •6.2.3. Трансляция программы. Опции командной строки
- •6.2.4. Структура программы для .Exe- и .Com-файлов. Образ программы в памяти
- •Сегменты упрощенной модели памяти Small
- •%Title "Имя exe-файла программы"
- •%Title "Имя com – файла программы"
- •6.2.5. Работа с отладчиком Turbo Debugger (td)
- •6.2.6. Форматы машинных команд и их кодирование
- •Определение эффективного адреса
- •Косвенные виды адресации
- •6.2.6.2. Использование 32-битных регистров
- •6.2.7. Работа над синтаксическими ошибками при ассемблировании программы
- •6.3. Задание к работе. Порядок выполнения
- •6.4. Контрольные вопросы
- •Приложения к лабораторной работе № 1 п.1.1. Машинные коды команд базового процессора i8086
- •Машинные коды команд базового процессора i8086
- •П.1.2. Демонстрационные файлы
- •П.1.3. Форматы исполняемых файлов .Exe и .Com на диске
- •А) Листинг prog_com. Lst
- •Содержимое префикса программы psp
- •А) Листинг prog_exe.Lst
- •Б) Машинный код исполняемого файла prog_exe.Exe на диске объёмом 624 байта
- •Формат заголовка исполняемого .Exe – файла на диске
- •7.2.2. Ввод с клавиатуры символьной информации
- •7.2.2.1. Буфер ввода данных с клавиатуры
- •7.2.2.2. Системные функции dos ввода данных с клавиатуры
- •Сравнительная характеристика функций dos ввода с клавиатуры
- •7.2.3. Функции dos вывода данных на экран
- •7.2.4. Расширенные коды ascii и управление программой с клавиатуры
- •Расширенные коды для функциональных клавиш
- •7.2.5. Строковые команды. Общая характеристика
- •Команды обработки строк
- •7.3. Задания к работе. Подготовка и выполнение
- •7.4. Контрольные вопросы
- •Приложения к лабораторной работе № 2 Приложение п.2.1. Примеры реализаций типового задания
- •Приложение п.2.2. Esc-последовательности
- •Параметры Esc-последовательности
- •Приложение п.2.3. Таблица символов в кодировке ascii
- •8.2.2. Прямое программирование видеобуфера в текстовом режиме
- •8.2.3. Справочные данные по функциям bios
- •8.2.3.1. Прерывание int 10h. Видеофункции bios
- •Текстовые видеорежимы и страницы в стандарте vga, поддерживаемые современными видеоконтроллерами
- •8.2.3.2. Рекомендации по использованию видеосервиса bios
- •8.2.3.3. Прерывание int 16h
- •8.2.3.4. Задержка программных операций
- •Int 15h, функция 86h
- •8.3. Варианты индивидуального задания
- •8.4. Контрольные вопросы
- •Приложения к работе № 3 Примеры реализаций типовых заданий п.3.1. Листинг 3.4. Программа получения скан-кодов клавиш клавиатуры
- •П.3.2. Листинг 3.5. Демонстрационная программа использования функций bios для работы с экраном и клавиатурой
- •9.2.1. Представление знаковых и беззнаковых чисел в 16-разрядном компьютере
- •Представление чисел в 16- разрядном компьютере
- •9.2.2. Преобразование ascii-кодов чисел с произвольным основанием в двоичное число
- •9.2.3. Преобразование двоичного числа в ascii-строку числа по произвольному основанию
- •9.2.4. Задание к работе. Порядок выполнения
- •Варианты заданий 1-7
- •Варианты заданий 8-14
- •9.2.5. Вопросы построения многомодульных программ
- •9.2.6. Ассемблирование и компоновка отдельных модулей в программу. Создание библиотеки объектных модулей
- •9.3. Контрольные вопросы
- •Список использованной и рекомендуемой Литературы
- •Оглавление
2. Составные части ms-dos и её инициализация
Всю систему можно условно разделить на пять основных частей. Первая часть – это Базовая Система Ввода-Вывода (BIOS – Basic Input Output System), записанная в той части памяти компьютера, которая носит название постоянного запоминающего устройства (ПЗУ). Дополнительная часть BIOS располагается во внешней памяти и переписывается в оперативную память (ОЗУ) компьютера в процессе загрузки. Функция BIOS ПЗУ заключается в обслуживании основных и наиболее фундаментальных операций компьютера. Поскольку система BIOS ПЗУ для IBM PC является "встроенной" в компьютер, она является не только составной частью DOS, но и составной частью любой операционной системы IBM PС. BIOS ПЗУ содержит программы, выполняющие следующие функции:
тест самопроверки (программа POST – Power On Self Test – самопроверка при включении питания);
начальный загрузчик;
комплекс программ управления аппаратурой компьютера на самом низком (физическом) уровне, путём обращения к портам и аппаратным буферам.
Второй и третьей частью DOS являются дисковые файлы Io.sys и Msdos.sys. Оба файла считываются с диска в ОЗУ начальным загрузчиком. Io.sys осуществляет дополнение BIOS в зависимости от потребностей данной версии операционной системы. В ходе инициализации Io.sys формирует список резидентных драйверов устройств в соответствии со списком оборудования, полученным при работе POST, и изменяет некоторые векторы прерываний BIOS (т.е. Io.sys перехватывает обработку этих векторов у BIOS ПЗУ). Программа Msdos.sys (ядро DOS) устанавливает векторы прерываний DOS и выполняет инициализацию резидентных драйверов периферийных устройств (драйвером называется резидентная программа, постоянно находящаяся в памяти и обеспечивающая взаимодействие некоторых внешних устройств с операционной системой). Помимо этого, эта программа загружает командный процессор Сommand.com, – четвёртую часть операционной системы DOS. Command.com обслуживает работу системы с пользователем и состоит из трех частей:
резидентной части, содержащей обработчики прерываний 22h (завершение процесса), 23h (реакция на Сtrl-C и Ctrl-Break), 24h (критическая ошибка);
части инициализации, располагающейся в памяти вслед за резидентной частью Command.com. Она обеспечивает выполнение файла Autoexec.bat и уничтожается (освобождает память) после выполнения своих функций;
нерезидентной части, содержащей интерпретатор внутренних команд DOS и загрузчик внешних команд. Эта часть располагается в старших адресах памяти и может частично или полностью перекрываться загружаемыми программами (при необходимости она повторно загружается в память).
Для распознавания внутренних команд (таких как DEL, DIR, CD, COPY, MD, TYPE, REM и прочие) командный процессор содержит таблицу имён команд. Если при просмотре данной таблицы заданная команда не обнаружена, значит, она относится к категории внешней. Внешние команды (пятая часть DOS) не являются резидентными в памяти IBM PC и хранятся в программных файлах на диске. Как и все программные файлы, внешние команды имеют расширение имени файла .COM или .EXE. Примерами внешних команд могут служить Diskcopy.com, Doskey.com, Format.com, Mem.exe и т. п.
Инициализацию операционной системы условно разделим на 2 этапа. На первом производится самотестирование программой POST BIOS, на втором выполняется загрузка операционной системы.
При включении питания процессор начинает работу с передачи управления по адресу FFFF:0000. Этот адрес принадлежит ПЗУ BIOS и содержит команду перехода на начало программы POST в ПЗУ. Программа POST выполняет тест ОЗУ (как правило, прохождение этого теста трассируется на экране терминала) и прочего оборудования ПЭВМ и инициализирует таблицу векторов прерываний в части прерываний, обслуживаемых BIOS. Затем BIOS начинает процедуру начальной загрузки. Начальный загрузчик опрашивает первое устройство гибких дисков, проверяя на нем наличие диска для начальной загрузки. Если диска там нет, программа обращается к жёсткому диску, читает с него главную загрузочную запись (Master Boot Record – MBR) и помещает её в память. MBR (512 байт), размещаемая в секторе 1, стороне 0, дорожке 0 первой доступной дискеты (или жесткого диска), обычно считывается в память по адресу 07C0h : 0000h и содержит небольшую программу и таблицу разделов диска, из которой данная программа получает информацию об активном (системном) диске. Выявив системный диск, программа из MBR читает первый 512-байтный сектор (0-ой по номеру) из системного диска, который и содержит загрузчик операционной системы.
Загрузка операционной системы (второй этап) определяется видом операционной системы и подробно рассматривается в специальных руководствах. Здесь кратко остановимся лишь на особенностях загрузки "близкой нам" MS-DOS (не будем забывать также о возможности конфигурации двойной загрузки, например, DOS и Windows 2000 – Windows при установке "видит" другую систему и по умолчанию её сохраняет).
Загрузчик, прежде всего, считывает файлы Io.sys и Msdos.sys. Затем выполняется обработка конфигурационных файлов Config.sys и Autoexec.bat, настраивающих среду функционирования компьютера. Сначала обрабатывается файл Config.sys, который в основном распределяет память и загружает драйверы устройств, после этого с помощью файла Autoexec.bat запускаются команды, которые можно было бы, в принципе, набрать пользователю в командной строке DOS и отправить на выполнение. Autoexec.bat также определяет каталоги (список каталогов указывается в строке, начинающейся оператором PATH), в которых должны будут искаться исполняемые программы. Последнее инициализационное действие DOS заключается в загрузке файла Command.com с последующей передачей ему управления.