
- •Информатика и информационные технологии. Конспект лекций
- •Оглавление
- •Лекция № 1. Введение в информатику
- •1. Информатика. Информация. Представление и обработка информации
- •2. Системы счисления
- •3. Представление чисел в эвм
- •4. Формализованное понятие алгоритма
- •Лекция № 2. Язык Pascal
- •1. Введение в язык Pascal
- •2. Стандартные процедуры и функции
- •3. Операторы языка Pascal
- •Лекция № 3. Процедуры и функции
- •1. Понятие вспомогательного алгоритма
- •2. Процедуры в Pascal
- •3. Функции в Pascal
- •4. Опережающие описания и подключение подпрограмм. Директива
- •Лекция № 4. Подпрограммы
- •1. Параметры подпрограмм
- •2. Типы параметров подпрограмм
- •Лекция № 5. Строковый тип данных
- •1. Строковый тип в Pascal
- •2. Процедуры и функции для переменных строкового типа
- •3. Записи
- •4. Множества
- •Лекция № 6. Файлы
- •1. Файлы. Операции с файлами
- •2. Модули. Виды модулей
- •Лекция № 7. Динамическая память
- •1. Ссылочный тип данных. Динамическая память. Динамические переменные
- •2. Работа с динамической памятью. Нетипизированные указатели
- •Лекция № 8. Абстрактные структуры данных
- •1. Абстрактные структуры данных
- •2. Стеки
- •3. Очереди
- •Лекция № 9. Древовидные структуры данных
- •1. Древовидные структуры данных
- •2. Операции над деревьями
- •I. Построение дерева
- •II. Поиск узла с заданным значением ключевого поля
- •3. Примеры реализации операций
- •Лекция № 10. Графы
- •1. Понятие графа. Способы представления графа
- •2. Представление графа списком инцидентности. Алгоритм обхода графа в глубину
- •3. Представление графа списком списков. Алгоритм обхода графа в ширину
- •Лекция № 11. Объектный тип данных
- •1. Объектный тип в Pascal. Понятие объекта, его описание и использование
- •2. Наследование
- •3. Создание экземпляров объектов
- •4. Компоненты и область действия
- •Лекция № 12. Методы
- •1. Методы
- •2. Конструкторы и деструкторы
- •3. Деструкторы
- •4. Виртуальные методы
- •5. Поля данных объекта и формальные параметры метода
- •Лекция № 13. Совместимость типов объектов
- •1. Инкапсуляция
- •2. Расширяющиеся объекты
- •3. Совместимость типов объектов
- •Лекция № 14. Ассемблер
- •1. Об ассемблере
- •2. Программная модель микропроцессора
- •3. Пользовательские регистры
- •4. Регистры общего назначения
- •5. Сегментные регистры
- •6. Регистры состояния и управления
- •Лекция № 15. Регистры
- •1. Системные регистры микропроцессора
- •2. Регистры управления
- •3. Регистры системных адресов
- •4. Регистры отладки
- •Лекция № 16. Программы на Ассемблере
- •1. Структура программы на ассемблере
- •2. Синтаксис ассемблера
- •3. Директивы сегментации
- •Лекция № 17. Структуры команд на Ассемблере
- •1. Структура машинной команды
- •2. Способы задания операндов команды
- •3. Способы адресации
- •Лекция № 18. Команды
- •1. Команды пересылки данных
- •2. Арифметические команды
- •Лекция № 19. Команды передачи управления
- •1. Логические команды
- •2. Команды передачи управления
5. Сегментные регистры
В программной модели микропроцессора имеется шесть сегментных регистров: cs, ss, ds, es, gs, fs.
Их существование обусловлено спецификой организации и использования оперативной памяти микропроцессорами Intel. Она заключается в том, что микропроцессор аппаратно поддерживает структурную организацию программы в виде трех частей, называемых сегментами. Соответственно такая организация памяти называется сегментной.
Для того чтобы указать на сегменты, к которым программа имеет доступ в конкретный момент времени, и предназначены сегментные регистры. Фактически (с небольшой поправкой) в этих регистрах содержатся адреса памяти, с которых начинаются соответствующие сегменты. Логика обработки машинной команды построена так, что при выборке команды, доступе к данным программы или к стеку неявно используются адреса во вполне определенных сегментных регистрах.
Микропроцессор поддерживает следующие типы сегментов.
1. Сегмент кода. Содержит команды программы. Для доступа к этому сегменту служит регистр cs (code segment register) – сегментный регистр кода. Он содержит адрес сегмента с машинными командами, к которому имеет доступ микропроцессор (т. е. эти команды загружаются в конвейер микропроцессора).
2. Сегмент данных. Содержит обрабатываемые программой данные. Для доступа к этому сегменту служит регистр ds (data segment register) – сегментный регистр данных, который хранит адрес сегмента данных текущей программы.
3. Сегмент стека. Этот сегмент представляет собой область памяти, называемую стеком. Работу со стеком микропроцессор организует по следующему принципу: последний записанный в эту область элемент выбирается первым. Для доступа к этому сегменту служит регистр ss (stack segment register) – сегментный регистр стека, содержащий адрес сегмента стека.
4. Дополнительный сегмент данных. Не явно алгоритмы выполнения большинства машинных команд предполагают, что обрабатываемые ими данные расположены в сегменте данных, адрес которого находится в сегментном регистре ds. Если программе недостаточно одного сегмента данных, то она имеет возможность использовать еще три дополнительных сегмента данных. Но в отличие от основного сегмента данных, адрес которого содержится в сегментном регистре ds, при использовании дополнительных сегментов данных их адреса требуется указывать явно с помощью специальных префиксов переопределения сегментов в команде. Адреса дополнительных сегментов данных должны содержаться в регистрах es, gs,fs (extension data segment registers).
6. Регистры состояния и управления
В микропроцессор включены несколько регистров, которые постоянно содержат информацию о состоянии как самого микропроцессора, так и программы, команды которой в данный момент загружены на конвейер. К этим регистрам относятся:
1) регистр флагов eflags/flags;
2) регистр указателя команды eip/ip.
Используя эти регистры, можно получать информацию о результатах выполнения команд и влиять на состояние самого микропроцессора. Рассмотрим подробнее назначение и содержимое этих регистров
1. eflags/flags (flag register) – регистр флагов. Разрядность eflags/flags – 32/16 бит. Отдельные биты данного регистра имеют определенное функциональное назначение и называются флагами. Младшая часть этого регистра полностью аналогична регистру flags для 18086. На рисунке 3 показано содержимое регистра eflags.
Рис. 3. Содержимое регистра eflags
Исходя из особенностей использования флаги регистра eflags/flags можно разделить на три группы:
1) восемь флагов состояния.
Эти флаги могут изменяться после выполнения машинных команд. Флаги состояния регистра eflags отражают особенности результата исполнения арифметических или логических операций. Это дает возможность анализировать состояние вычислительного процесса и реагировать на него с помощью команд условных переходов и вызовов подпрограмм. В таблице 1 приведены флаги состояния и указано их назначение.
2) один флаг управления.
Обозначается df (Directory Flag). Он находится в 10-м бите регистра eflags и используется цепочечными командами. Значение флага df определяет направление поэлементной обработки в этих операциях: от начала строки к концу (df = 0) либо наоборот, от конца строки к ее началу (df = 1). Для работы с флагом df существуют специальные команды: eld (снять флаг df) и std (установить флаг df). Применение этих команд позволяет привести флаг df в соответствие с алгоритмом и обеспечить автоматическое увеличение или уменьшение счетчиков при выполнении операций со строками.
3) пять системных флагов.
Управляют вводом-выводом, маскируемыми прерываниями, отладкой, переключением между задачами и виртуальным режимом 8086. Прикладным программам не рекомендуется модифицировать без необходимости эти флаги, так как в большинстве случаев это приведет к прерыванию работы программы. В таблице 2 перечислены системные флаги, их назначение.
Таблица 1. Флаги состояния
Таблица 2. Системные флаги
2. eip/ip (Instraction Pointer register) – регистр-указатель команд. Регистр eip/ip имеет разрядность 32/16 бит и содержит смещение следующей подлежащей выполнению команды относительно содержимого сегментного регистра cs в текущем сегменте команд. Этот регистр непосредственно недоступен программисту, но загрузка и изменение его значения производятся различными командами управления, к которым относятся команды условных и безусловных переходов, вызова процедур и возврата из процедур. Возникновение прерываний также приводит к модификации регистра eip/ip.