Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Рис.1. Дескриптор сегмента. Формування логічного адресу.
Система команд i8086. Система переривів. Адресація пам’яті. Директиви передачі керування. 1. Команди перериву за типом вектору. Синтаксис команд. В процессе идентификации источника запроса ему ставился в соответствие восьмиразрядный двоичный код n — вектор прерывания, причем за каждым внутренним прерыванием и за внешним NMI жестко закреплялся свой вектор, а для запросов, поступивших по входу INTR, реализовывалась процедура ввода вектора с внешней шины. 11алее, определенный вектор прерывания рассматривался как номер строки таблицы, располагающейся с нулевого физического адреса памяти. Четырехбайтовыми элементами этой таблицы были адреса CS: IP точек входа в подпрограммы — обработчики прерываний. Таким образом, в системе поддерживалось до 256 различных обработчиков прерываний, причем векторы 0 — 31 резервировались за внутренними прерываниями (и NMI),а остальные — для внешних прерываний. При идентификации источника запроса INTR выполняются следующие действия (при условии, что флаг IF = 1, иначе запрос INTR игнорируется): 1. Генерируется два цикла шины для ввода вектора внешнего прерывания. 2. Помещается в стек содержимое регистра FLAGS. 3. Помещается в стек содержимое регистра CS. Д 4. Помещается в стек содержимое регистра IP. 5. Сбрасывается в 0 флаг разрешения внешних прерываний IF, запрещая восприятие новых запросов по входу INTR до явной установки флага IF в 1 командой STI. 6. По значению вектора n обращаются к n-му элементу таблицы векторов прерываний и из нее загружаются новые значения регистров CS: IP. 7. Начинается выполнения обработчика прерывания с точки входа, определяемой CS: IP. Сохраненное в стеке старое содержимое регистров CS: IP образует адрес возврата. Когда обработчик прерываний заканчивает свои действия, он должен выполнить команду возвратаIRET, которая, извлекая из стека содержимое FLAGS, CS, IP, возвращает управление прерванной программе. Механизм реализации внешних и внутренних прерываний МП 80486 и Pentium в R-режиме аналогичен описанному выше, однако в P-режиме он значительно усовершенствован: таблица векторов прерываний трансформирована в дескрипторную таблицу прерываний IDT (рис. 7.13); более сложен процесс перехода к обработчику прерывания или особого случая;
Механизм передачи управления обработчику особого случая (прерывания) соответствует обычному способу передачи управления через шлюз вызова. При этом процессор аппаратно включает в стек значения EFLAGS, CS: EIP (адрес возврата) прерываемой программы и, кроме того, в некоторых случаях — код ошибки и текущие значения SS, ESP (последние — при смене привилегий). Точное значение адреса возврата зависит от того, является ли особый случай нарушением, ловушкой или аварией. Первые 32 вектора зарезервированы за особыми случаями P-режима (табл. 7.1).
2. Команди перериву за переповненням. Синтаксис команд. Программные прерывания, вызываемые исполнением команды INT хх, по действиям процессора аналогичны дальним вызовам подпрограмм (сохранение в стеке адреса возврата — регистров CS и IP— и передача управления по указанному адресу), но имеют некоторые отличия. · В начале выполнения прерывания процессор помещает в стек регистр флагов и сбрасывает бит разрешения прерывания IF (Interrupt Flag). · Вместо адреса вызываемой подпрограммы аргументом вызова (хх) является номер вектора прерывания (0-255). · По окончании выполнения процедуры по инструкции IRET процессор извлекает из стека кроме адреса возврата (инструкции, следующей за INT) и сохраненное значение регистра флагов. Сброс бита прерывания не позволяет прервать выполнение процедуры прерывания до ее окончания или явного разрешения командой El (Enable Interrupt). Само программное прерывание исполняется независимо от состояния флага IF. Программные прерывания позволяют легко и быстро вызывать общеупотребимые процедуры (сервисы BIOS и DOS) из любого сегмента без применения дальних вызовов. Прерывание INT 3 традиционно используется в целях отладки программ для создания точки останова, в отличие от остальных программных прерываний, оно вызывается однобайтной инструкцией (код 0CCh). Внутренние прерывания вырабатываются процессором по особым условиям · прерывание типа 0 вырабатывается в случае переполнения при операции деления на 0; · прерывание типа 1 вырабатывается после выполнения каждой команды при установленном флаге трассировки TF, · прерывание типа 4 вырабатывается по команде INTO (Interrrupt Overflow), если установлен флаг переполнения OF 3. Повернення з переривів та підпрограм.Возврат из прерывания осуществляется по команде IRET, которая ставится в конце обработчика прерывания. ^ Операция прерывания осуществляется в следующем порядке: 3) определяется причина (номер N) прерывания с наивысшим в данный момент времени приоритетом (арбитраж); 4) по номеру N из таблицы извлекается вектор прерываний (из ячеек памяти с адресами 4N и 4N+2) и загружается в регистры CS, IP (новое значение ССП). Тем самым передается управление подпрограмме обработки прерывания. Возврат из обработчика прерывания осуществляется командой IRET, по которой из стека в обратном порядке выталкиваются три слова (старое ССП) и загружаются в регистры IP, CS, Flags соответственно. Возврат из подпрограммы осуществляется по команде IRET. При выталкивании из стека старого значения регистра флагов учитываются условия:
4. Сегментна організація пам’яті. Сегментная организация виртуальной памятисостоит в том, что программа разбивается на логические элементы (например, блоки, процедуры) ─ так называемые сегменты разной длины, которые размещаются в памяти как до определенной степени самостоятельная единица. Логически обращение к элементам программы будет представляться как указание имени сегмента и смещения относительно начала этого сегмента. Физическое имя сегмента (его порядковый номер) будет соответствовать некоторому адресу, с которого этот сегмент начинается при его размещении в памяти, и смещение должно прибавляться к этому базовому адресу. Таким образом, адрес для этого способа состоит из двух полей: номер сегмента и смещение относительно сегмента. Каждый сегмент, размещаемый в памяти, имеет соответствующую информационную структуру, называемую дескриптором сегмента:
Старшее двойное слово дескриптора 31 23 19 15 11 7 0
База сегмента (биты 31-24) G D Биты 19-16 поля Limit P DPL S Type A База сегмента (биты 23-16) Базовый адрес сегмента (биты 15-0) Байт прав доступа Limit-размер (предел) сегмента (биты 15-0) 31 15 0 Первое (младшее) двойное слово дескриптора Рис.1. Дескриптор сегмента
При переключении микропроцессора в защищенный режим он начинает совершенно другим образом, чем в реальном режиме, вычислять физические адреса команд и операндов. Прежде всего, содержимое сегментных регистров интерпретируется иначе: считается, что там содержится не адрес начала сегмента, а номер соответствующего сегмента. Каждый сегментный регистр (в этом случае его называют селектор сегмента) разбивается на три поля: a) поле индекса ─ старшие 13 битов (3-15). Определяют номер сегмента: b) поле индикатора таблицы сегмента ─ бит с номером 2. Определяет часть виртуального адресного пространства. c) поле уровня привилегий ─ биты 0 и 1. Указывает запрашиваемый уровень привилегий. 5. Фізична адреса байту в пам’яті.Так как внутренние регистры – 16-разрядные (216 = 64 Кбайт), а шина адреса имеет ширину 20 бит (220 = 1Мбайт), то для формирования 20-разрядного физического адреса памяти используются: сегмент адреса и смещение адреса. Физический адрес записывается парой этих значений, разделенных двоеточием, и образуется следующим образом (рис.4): · значение сегмента адреса, берущегося из регистра, CS сдвигается на 4 бита влево с заполнением разрядов справа нулями; · к образовавшемуся 20-битовому значению прибавляется значение смещения адреса из регистра IP. При возникновении переполнения берется только пять 16-ричных цифр результата. Например, адрес 40:1Ch соответствует физическому адресу 0041Ch.
Значение регистра CS
РегистрCS 15 0
+ РегистрIP
= 15 0
Физический адрес 19 0
Рис.4. Схема определения физического адреса для микропроцессоров 8086/88
|
||
|
Последнее изменение этой страницы: 2024-06-27; просмотров: 54; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.21 (0.009 с.) |