assembler. Учебник для вузов_Юров В.И_2003 -637с (862834), страница 11
Текст из файла (страница 11)
Возникновение прерываний также приводит к модификации регистраEIP/IP.Разрядность регистра флагов (flag register) EFLAGS/FLAGS равна 32(16) битам. Отдельные биты данного регистра имеют определенное функциональное назначениеи называются флагами.
Младшая часть регистра EFLAGS/FLAGS полностью аналогична регистру FLAGS процессора i8086. На рис. 2.6 показано содержимое регистраEFLAGS.Исходя из особенностей использования, флаги регистра EFLAGS/FLAGS можноразделить на три группы.В первую группу флагов регистра EFLAGS/FLAGS входят 8 флагов состояния. Этифлаги могут изменяться после выполнения машинных команд. Флаги состояниярегистра EFLAGS отражают особенности результата исполнения арифметическихили логических операций.
Это дает возможность анализировать состояние вычислительного процесса и реагировать на него с помощью команд, условных переходов и вызовов подпрограмм.Архитектура 1А-32-УРО веньeflags (0..31)21 20 19 1847ФЛАГИ СОСТОЯНИЯ :.флаг вложенности задачипривилегированности ввода-выводафлаг переполненияфлаг знака• флаг нулявспомогательный флаг переносафлаг переноса —флаг четности —flags (0. 15)1716 15 14 13 12ID VIP VIF AC VM RFNT10 09 08 07 06 05 04 03 02 01 00IOPL OF DF IFФЛАГ УПРАВЛЕНИЯ: Iфлаг направления —ITF SF ZFAFPFCFСИСТЕМНЫЕ ФЛАГИ:|флагтрассировкифлаг прерыванияфлаг возобновленияфлаг виртуального 8086флаг контроля выравниванияфлаг виртуального прерыванияфлаг отложенного прерывания(для режима виртуального 18086)флаг поддержки идентификациипроцессораРис. 2.6. Содержимое регистра eflagsФлаг переноса (carry flag) CF:1 — арифметическая операция произвела перенос из старшего бита результата, старшим является 7-й, 15-й или 31-й бит в зависимости от размерностиоперанда;О — переноса не было.Флаг четности (parity flag) PF:1 — 8 младших разрядов (этот флаг только для 8 младших разрядов операнда любого размера) результата содержат четное число единиц;0 — 8 младших разрядов результата содержат нечетное число единиц.Вспомогательный флаг переноса (auxiliary carry flag) AF применяется только длякоманд, работающих с BCD-числами.
Фиксирует факт заема из младшей тетрады результата:1 — в результате операции сложения был произведен перенос из разряда 3в старший разряд или при вычитании был заем в разряд 3 младшей тетрадыиз значения в старшей тетраде;0 — переносов и заемов в третий разряд (из третьего разряда) младшей тетрады результата не было.Флаг нуля (zero flag) ZF:1 — результат нулевой;О — результат ненулевой.48Глава 2. Программно-аппаратная архитектура IA-32 процессоров Intel* Флаг знака (sign flag) SF отражает состояние старшего бита результата (биты 7,15 или 31 для 8-, 16- или 32-разрядных операндов соответственно):1 — старший бит результата равен 1;0 — старший бит результата равен 0.ж Флаг переполнения (overflow flag) OF используется для фиксации факта потеризначащего бита при арифметических операциях:1 — в результате операции происходит перенос в старший знаковый бит результата или заем из старшего знакового бита результата (биты 7,15 или 31для 8-, 16- или 32-разрядных операндов соответственно);0 — в результате операции не происходит переноса в старший знаковый битрезультата или заема из старшего знакового бита результата.ш Уровень привилегированности ввода-вывода (Input/Output privilege level) IOPLиспользуется в защищенном режиме работы процессора для контроля доступак командам ввода-вывода в зависимости от привилегированности задачи.« Флаг вложенности задачи (nested task) NT используется в защищенном режимеработы процессора для фиксации того факта, что одна задача вложена в другую.Во вторую группу флагов (группа флагов управления) регистра EFLAGS/FLAGSвходит всего один флаг направления (directory flag) DF.
Он находится в десятомбите регистра Е FLAGS и используется цепочечными командами. Значение флага DFопределяет направление поэлементной обработки в этих операциях: от началастроки к концу (DF = 0) либо, наоборот, от конца строки к ее началу (DF =1). Дляработы с флагом DF существуют специальные команды CLD (снять флаг DF) и STD(установить флаг DF). Применение этих команд позволяет привести флаг DF в соответствие с алгоритмом и обеспечить автоматическое увеличение или уменьшение счетчиков при выполнении операций со строками.В третью группу флагов регистра EFLAGS/FLAGS входит 8 системных флагов,управляющих вводом-выводом, маскируемыми прерываниями, отладкой, переключением между задачами и режимом виртуального процессора 8086. Прикладнымпрограммам не рекомендуется модифицировать без необходимости эти флаги, таккак в большинстве случаев это ведет к прерыванию работы программы.
Далее перечислены системные флаги и их назначение.II Флаг трассировки (trace flag) TF предназначен для организации пошаговой работы процессора:1 — процессор генерирует прерывание с номером 1 после выполнения каждой машинной команды (может использоваться при отладке программ,в частности отладчиками);0 — обычная работа.Флаг прерывания (interrupt enable flag) IF предназначен для разрешения илизапрещения (маскирования) аппаратных прерываний (прерываний по входуINTR):1 — аппаратные прерывания разрешены;О — аппаратные прерывания запрещены.Архитектура 1А-3249is Флаг возобновления (resume flag) RF используется при обработке прерыванийот регистров отладки.И Флаг режима виртуального процессора 8086 (virtual 8086 mode) VM являетсяпризнаком работы процессора в режиме виртуального 8086:1 — процессор работает в режиме виртуального процессора 8086;О — процессор работает в реальном или защищенном режиме.» Флаг контроля выравнивания (alignment check) AC предназначен для разрешения контроля выравнивания при обращениях к памяти.
Используется совместнос битом AM в системном регистре CRO. К примеру, Pentium разрешает размещатькоманды и данные начиная с любого адреса. Если требуется контролироватьвыравнивание данных и команд по адресам, кратным 2 или 4, то установка данных битов приведет к тому, что все обращения по некратным адресам будутвозбуждать исключительную ситуацию.Флаг виртуального прерывания (virtual interrupt flag) VIF, появившийся в процессоре Pentium, при определенных условиях (одно из которых — работа процессора в v-режиме) является аналогом флага IF.
Флаг VIF используется совместно с флагом VI Р.ii Флаг отложенного виртуального прерывания (virtual interrupt pending flag) VIP,появившийся в процессоре Pentium, устанавливается в 1 для индикации отложенного прерывания. Используется при работе в v-режиме совместно с флагомVIF.* Флаг идентификации (identification flag) ID используется для того, чтобы показать факт поддержки процессором инструкции CPUID. Если программа можетустановить или сбросить этот флаг, это означает, что данная модель процессораподдерживает инструкцию CPUID.Организация памятиФизическая память, к которой процессор имеет доступ по шине адреса (см. рис.
1.2),называется оперативной памятью (или оперативным запоминающим устройством — ОЗУ). На самом нижнем уровне память компьютера можно рассматривать как массив битов. Один бит может хранить значение 0 или 1. Для физическойреализации битов и работы с ними идеально подходят логические схемы. Но процессору неудобно работать с памятью на уровне битов, поэтому реально ОЗУ организовано как последовательность ячеек — байтов. Один байт состоит из восьмибитов. Каждому байту соответствует свой уникальный адрес (его номер), называемый физическим.
Диапазон значений физических адресов зависит от разрядности шины адреса процессора. Для i486 и Pentium он находится в пределах от32О до 2 - 1 (4 Гбайт). Для процессоров Pentium Pro/II/III/IV этот диапазон36шире — от 0 до 2 - 1 (64 Гбайт).Механизм управления памятью полностью аппаратный.
Это означает, что программа не может сама сформировать физический адрес памяти на адресной шине.Ей приходится «играть» по правилам процессора. Что это за правила, мы узнаемчуть позже. Пока же отметим, что в конечном итоге этот механизм позволяет обеспечить:50Глава 2. Программно-аппаратная архитектура IA-32 процессоров Intel*ИмЖкомпактность хранения адреса в машинной команде;гибкость механизма адресации;защиту адресных пространств задач в многозадачной системе;поддержку виртуальной памяти.Процессор аппаратно поддерживает две модели использования оперативнойпамяти.Ш В сегментированной модели программе выделяются непрерывные области памяти (сегменты), а сама программа может обращаться только к данным, которые находятся в этих сегментах.* Страничную модель можно рассматривать как надстройку над сегментированной моделью.
В случае использования этой модели оперативная память рассматривается как совокупность блоков фиксированного размера (4 Кбайт и более). Основное применение этой модели связано с организацией виртуальнойпамяти, что позволяет операционной системе использовать для работы программ пространство памяти большее, чем объем физической памяти.
Для процессоров i486 и Pentium размер возможной виртуальной памяти может достигать 4 Тбайт.Сегментированная модель памятиСегментация — механизм адресации, обеспечивающий существование несколькихнезависимых адресных пространств как в пределах одной задачи, так и в системев целом для защиты задач от взаимного влияния.
В основе механизма сегментации лежит понятие сегмента, который представляет собой независимый поддерживаемый на аппаратном уровне блок памяти.Когда мы рассматривали сегментные регистры, то отмечали, что для процессоров Intel, начиная с 18086, принят особый подход к управлению памятью. Каждаяпрограмма в общем случае может состоять из любого количества сегментов, нонепосредственный доступ она имеет только к трем основным сегментам (кода, данных и стека), а также к дополнительным сегментам данных числом от одного дотрех. Программа никогда не знает, по каким физическим адресам будут размещены ее сегменты. Этим занимается операционная система.