
- •В.А. Афанасьев
- •Часть 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. Контрольные вопросы
- •Список использованной и рекомендуемой Литературы
- •Оглавление
1. Краткая характеристика операционной среды ms-dos в компьютерах с операционной системой Windows
Программа, написанная на любом языке программирования, выполняется под управлением операционной системы. Операционная система выделяет программе память, загружает, обеспечивает взаимодействие с устройствами ввода-вывода в процессе её исполнения, а также выгружает её из памяти по завершении работы. В данном учебном пособии рассматриваются вопросы программирования на языке ассемблера в среде MS-DOS.
В чём заключается основное различие программ, написанных для MS-DOS и Windows? Программа для DOS "считает", что она – единственная программа на компьютере и поэтому может и должна напрямую взаимодействовать с программно- управляемыми аппаратными средствами, такими, например, как запись информации на диск или вывод на экран дисплея. Программа для Windows, реализующей многозадачный режим, наоборот, использует ресурсы компьютера совместно с другими программами Windows. Распределение ресурсов компьютера между программами – одна из основных функций данной операционной системы. Развитие операционной системы Windows прошло к настоящему времени (в свете её взаимодействия с DOS) три стадии. Первые версии Windows основывались на DOS и скорее представляли развитую графическую надстройку к ней, однако Windows 95/98 и их модификации (кратко Windows 9х) представляют собой полнофункциональные операционные системы, обеспечивающие полную обратную совместимость с 16-разрядными приложениями DOS.
Запустить программу DOS в компьютере, оснащённом операционной системой Windows 9х, можно щелчком на имени файла расширением .exe, .com, .bat, .pif (последнее расширение представляет специальный информационный файл-ярлык, содержащий установки для наиболее эффективного выполнения в Windows 9х конкретной программы DOS). Однако на практике поступают по-другому.
Первый и наиболее предпочтительный способ основывается на использовании так называемых файловых "оболочек-командиров" для DOS и Windows, предоставляющих большое множество сервисных услуг по манипулированию файлами и директориями. К тому же каждая такая "оболочка-командир" содержит встроенные текстовые редакторы для DOS-программ. К наиболее популярным программам следует отнести: Norton Commander, DOS Navigator, Volkov Commander, Far и Windows Commander (разработаны соответственно в США, Молдове, Украине, России и Швейцарии).
Запуск программы из среды Windows 9х в сеансе MS-DOS: подменю <Программы>, меню <Пуск>, пункт <Сеанс MS-DOS>. Для переключения сеанса MS-DOS между оконным и полноэкранным отображением нужно нажать клавиши <Alt – Enter>. Для запуска сеанса MS-DOS можно воспользоваться файлом Command.com или соответствующим ему информационным файлом Command.pif (pif-файл сообщает Windows режим окна сеанса – полноэкранный или оконный, характер использования памяти, приоритет программы в многозадачном режиме и прочее).
Наконец, Windows 9х предоставляет возможность исполнить DOS-программу непосредственно в операционной среде MS-DOS (правильнее – в подсистеме MS-DOS, входящей в состав Windows 9х). Для этого нужно выполнить команду: <Пуск> – <Завершение работы> – <Перезагрузить компьютер в режиме MS-DOS>.
Последние версии операционной системы Windows 2000 основаны на продолжении линии Windows NT. Не вдаваясь в характеристику операционных систем из семейства Windows NT/2000, отметим лишь, что в них исключена возможность исполнения программы в режиме MS-DOS. В Windows 2000 имеется своя "DOS" – виртуальная DOS-машина (VDM). VDM поддерживает большую часть команд DOS, расширив их за счёт команд специфичных для самой Windows. В Windows 2000 DOS нет: за все процедуры, которые обычно выполняет MS-DOS, отвечает ядро Windows 2000 – NtOsKrnl.
VDM запускается командой <Пуск> – <Командная строка>. Что соответствует запуску универсального интерпретатора команд Cmd.exe в каталоге Windows\System32 (впрочем сохранён и интерпретатор командного процессора DOS – Command.com). С возможностями командной строки можно ознакомится с помощью команды Help cmd. Для инициализации среды VDM, вместо файлов Autoexec.bat и Config.sys используются Autoexec.nt и Config.nt, также расположенные в папке Windows\System321.