
- •В.А. Афанасьев
- •Часть 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. Контрольные вопросы
- •Список использованной и рекомендуемой Литературы
- •Оглавление
4. Сегментированная организация памяти в реальном режиме. Виды памяти в среде ms-dos
В компьютерах IBM PC используются процессоры фирмы Intel серии i80x86 (i8086 в компьютерах PC/XT и Pentium 4 – условно i80886 – в последних моделях компьютеров). При этом каждый из процессоров, начиная с i80286, имеет специальный режим эмуляции (программной совместимости) базового процессора i8086 с добавлением возможности использования 32-разрядных регистров, начиная с i80386. Обычно этот режим называется режимом реального адреса (Real Address Mode) или R-режим. На какие же параметры процессора i8086 была сориентирована разработка операционной системы MS-DOS, работающая в данном режиме? Данный процессор имеет 16-разрядную внутреннюю архитектуру и такой же разрядности шину данных. Таким образом, диапазон представления целых чисел (данные или адрес) не превышает 216 – 1 = 65535 (или 64 К – 1). Однако адресная шина включает 20-линий, что соответствует объёму адресуемой памяти 220 = 1 Мбайт (память в компьютере состоит из однобайтовых ячеек, а порядковый номер ячейки образует её физический адрес).
Для того, чтобы с помощью 16-разрядных адресов можно было обращаться в любую точку 20-разрядного адресного пространства, введён двухкомпонентный логический адрес из 16-разрядных компонент:
"Segment (сегмент) : Offset (смещение)".
Здесь Segment – адрес сегмента, а Offset – смещение в этом сегменте. По умолчанию, в реальном режиме используется сегментная модель памяти с объёмом сегмента в 64 Кбайта, расположение объекта в котором, относительно его базового адреса, определяется смещением Offset. Расположение сегмента в адресном пространстве, а также механизм перехода от логического адреса к физическому показан на рис. 2.
Рис. 2. Сегментированная модель памяти реального режима
Рассмотрим пример с использованием 16-теричной системы счисления. Пусть логический адрес равен 0040h : 0220h. Тогда соответствующий ему физический адрес равен 0040h*10h + 0220h = 00620h. Надо отметить, однако, что обратный переход – от физического адреса к логическому – неоднозначен. В общем случае, сегментация – механизм адресации, обеспечивающий несколько независимых адресных пространств как в пределах одной задачи, так и в системе в целом для защиты задач от взаимодействия друг на друга. Назначением базовых адресов сегментов занимается операционная система, а внутри каждого сегмента адреса формируются программой. Это эффективный адрес или смещение Offset. Важные замечания:
DОS в зависимости от объёма кода и данных программы может так назначить базовые адреса, что они будут перекрываться;
физический адрес базы сегмента кратен числу 16, поэтому сегменты начинаются на границах блоков с разницей в 16 байт (параграф);
сегментная организация обеспечивает создание позиционно – независимых или динамически перемещаемых программ. Каждое исполнение программы может происходить с различными значениями базовых адресов сегментов, которые выбираются DОS, исходя из особенностей загрузки памяти.
Основной недостаток реального режима заключается в малом объеме адресного пространства (всего 1Мбайт) в сочетании с малыми значениями сегментов (всего 64 Кбайт). Однако, в то время – 1981 г. – думалось иначе. Этот недостаток был устранён в старших моделях процессоров i80x86 с 32-разрядной архитектурой, использующих защищённый режим виртуального адреса Protected Virtual Address Mode (или просто защищённый режим – P-ре-жим) равный в пределе 4 Гбайтам (64 Гбайта для 36-разрядной адресной шины).
Рассмотрим распределение первого мегабайта памяти компьютера. В зависимости от модификации компьютера, настройки драйверов, управляющих памятью (а также типа версии используемой Windows), структура памяти несколько меняется. Однако размещение основных компонентов памяти (табл. 1) строго унифицировано.
Таблица 1