Научная литература
booksshare.net -> Добавить материал -> Физика -> Александров Е.К. -> "Микропроцессорные системы" -> 60

Микропроцессорные системы - Александров Е.К.

Александров Е.К., Грушвицкий Р.И., Купрянов М.С., Мартынов О.Е. Микропроцессорные системы — Спб.: Политехника, 2002. — 935 c.
ISBN 5-7325-0516-4
Скачать (прямая ссылка): mikroprocessorniesistemi2002.djvu
Предыдущая << 1 .. 54 55 56 57 58 59 < 60 > 61 62 63 64 65 66 .. 528 >> Следующая

дополнительные условия для повторения цикла. Команда LOOPE/LOOPZ
обеспечивает выход из цикла при получении ненулевого результата, т. е.
при установке ZF = 0, до выполнения заданного числа циклов п = (ЕСХ).
Если в каждом цикле реализуется нулевой результат, то выполняется п =
(ЕСХ) циклов, как в команде LOOP. Команда LOOPNE/LOOPNZ прекращает
выполнение циклов при получении нулевого результата, т. е. при установке
ZF = 1.
В зависимости от режима работы процессора и наличия префиксов изменения
разрядности адреса при выполнении команд организации циклов вместо
регистров EIP, ЕСХ могут использоваться IP, СХ. При этом вместо мнемокода
команды JECXZ используется JCXZ.
Команды прерываний обеспечивают переход к одной из 256 программ
обслуживания исключений и прерываний. При этом текущее содержимое
регистров IP (EIP), CS и FLAGS (EFLAGS) заносится в стек. Каждая из
программ обработки соответствует определенному типу исключения или
прерывания, номер которого определяется 8-разрядным непосредственным
операндом im8, задаваемым во втором байте команды INT. Вызов
соответствующей программы обслуживания производится с помощью таблицы, в
которой содержатся векторы исключений (прерываний) Ve - адреса первых
команд программ обслуживания. Номер вектора Ne = im8 указывает его
положение в таблице векторов. Каждый вектор задает необходимое содержимое
CS и EIP (IP), загрузка которого в эти регистры обеспечивает переход к
выполнению первой команды программы обслуживания. Обращение к таблице
векторов Ve производится процессором в зависимости от режима его работы.
В защищенном режиме при
СИСТЕМА КОМАНД: ОПЕРАЦИИ УПРАВЛЕНИЯ
Таблица 2.23 Команды управления признаками
Синтаксис команды Операция
CLI 0 -> IF
ST1 1 -" IF
CLC 0 -> CF
STC 1 -> CF
СМС CF -> CF
CLD 0 -> DF
STD 1 -" DF
LAHF EFLAGS(7-0) -> AH
SAHF AH -> EFLAGS(7-0)
PUSHF EFLAGS -> Стек
POPF Стек -> EFLAGS
переходе к программе обслуживания прерываний в стеке сохраняется также
заданное число 16- или 32-разрядных параметров из вершины стека, которые
при выполнении команд прерываний переносятся в стек программы
обслуживания прерываний для использования или сохранения.
Первые 32 вектора прерываний зарезервированы для обслуживания
исключительных ситуаций (ошибки, отказы и т. п.), возникающих при
выполнении программы. Для трех из этих ситуаций предусмотрены отдельные
однобайтные команды INT3, INTO и UD2.
Команда INT3 имеет вектор с номером Ne = 3 (исключение типа #ВР - останов
в контрольной точке) и используется для установки контрольных точек в
процессе отладки программы. Программа, вызываемая этой командой,
обеспечивает останов процессора и выдачу пользователю необходимой
информации о его текущем состоянии. Команда INTO проверяет значение
признака OF и вызывает соответствующую программу обслуживания, если OF =
1, т. е. результат предыдущей операции (число со знаком) вышел за пределы
разрядной сетки. Эта команда обращается к вектору прерываний с номером
Ne=4 (исключение типа #OF - переполнение разрядной сетки). Команда UD2,
введенная в процессорах семейства Р6, реализует прерывание с номером Ne =
7 (#UD - недействительный код операции). Эта команда используется для
вызова программы обслуживания прерывания типа #UD в процессе выполнения
текущей программы.
Команда IRET обеспечивает возврат из подпрограммы обслуживания прерывания
путем извлечения из стека и возвращения в регистры содержимых EIP или IP,
CS, EFLAGS или FLAGS, соответствующих прерванной процедуре.
Дополнительные команды вызова системных процедур SYSENTER, SYSEXIT
введены в процессорах Pentium II и последующих моделях данного семейства.
Эти команды используют специальные модельно-специфические регистры (MSR),
которые имеют имена SYSENTER_CS_MSR (адрес 174h), SYSENTER_ESP_MSR (адрес
175h), SYSENTER_EIP_MSR (адрес 176h). В эти регистры с помощью команд
WRMSR записываются адреса ячеек памяти, содержимое которых обеспечивает
переход к определенной системной программе, имеющей максимальный уровень
привилегии DPL = 0. При поступлении команды SYSENTER из этих ячеек памяти
производится загрузка нового содержимого: в регистр CS - из ячейки,
адресуемой регистром SYSENTER_CS_MSR, в регистр EIP - ячейки, адресуемой
SYSENTER_EIP_MSR, в регистр SS - из ячейки, адрес которой равен
(SYSENTER_CS_MSR) + 8, в регистр ESP - из ячейки, адресуемой
SYSENTER_ESP_MSR. Таким образом, обеспечивается переход к новым сегментам
команд и стека. При этом не
ПРОЦЕССОРЫ ОБЩЕГО НАЗНАЧЕНИЯ И СИСТЕМЫ НА ИХ ОСНОВЕ
сохраняется адрес возврата к выполняемой команде и содержимое каких-либо
регистров. Если эта информация необходима для выполнения последующих
процедур, то программист должен предварительно позаботиться о ее
сохранении. Для возврата из системной профаммыс максимальным уровнем
приоритета CPL = 0kпрофамме пользователя (DPL = 3) служит команда
SYSEXIT, которая производит загрузку нового содержимого: в регистр CS из
Предыдущая << 1 .. 54 55 56 57 58 59 < 60 > 61 62 63 64 65 66 .. 528 >> Следующая

Реклама

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed

Есть, чем поделиться? Отправьте
материал
нам
Авторские права © 2009 BooksShare.
Все права защищены.
Rambler's Top100

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed