Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скляров И. Изучаем Assembler за 7 дней (2010).pdf
Скачиваний:
1335
Добавлен:
23.02.2015
Размер:
2.11 Mб
Скачать

 

http://www.sklyaroff.ru

 

 

 

 

 

 

 

 

20

 

 

 

 

 

 

 

 

Таблица 1.1. (окончание)

 

 

 

 

 

 

 

OF

Флаг

переполнения

11

Устанавливается, если результат операции

 

 

(Overflow Flag)

 

над числом со знаком вышел за допустимые

 

 

 

 

 

 

пределы

 

 

 

 

 

 

 

 

 

 

 

 

IOPL

Уровень привилегий

12,13

Используется в защищенном режиме работы

 

 

ввода-вывода

 

 

микропроцессора.

Определяет,

какой

 

 

(Input/Output

 

 

привилегией должен обладать код, чтобы

 

 

Privilege Level)

 

ему было разрешено выполнять команды

 

 

 

 

 

 

ввода-вывода и другие привилегированные

 

 

 

 

 

 

команды.

 

 

 

 

 

 

 

 

 

 

 

 

 

NT

Флаг

вложенности

14

Используется в защищенном режиме работы

 

 

задачи (Nested Task)

 

микропроцессора для фиксации того факта,

 

 

 

 

 

 

что одна задача вложена в другую

 

 

 

 

 

 

 

 

 

 

 

 

RF

Флаг

возобновления

16

Служит

для

временного

выключения

 

 

(Resume Flag)

 

 

обработки

 

исключительных

ситуаций

 

 

 

 

 

 

отладки для того, чтобы команда,

 

 

 

 

 

 

вызвавшая такую ситуацию, могла быть

 

 

 

 

 

 

перезапущена и не стала бы причиной новой

 

 

 

 

 

 

исключительной

ситуации.

Отладчик

 

 

 

 

 

 

устанавливает этот флаг с помощью

 

 

 

 

 

 

команды iretd при возврате в прерванную

 

 

 

 

 

 

программу

 

 

 

 

 

 

 

 

 

 

 

 

 

VM

Флаг

виртуального

17

Признак работы микропроцессора в режиме

 

 

8086

(Virtual 8086

 

виртуального 8086 (V86):

 

 

 

 

 

Mode)

 

 

 

1 – процессор работает в режиме V86;

 

 

 

 

 

 

 

 

 

 

 

 

0 – процессор работает в реальном или

 

 

 

 

 

 

защищенном режиме

 

 

 

 

 

 

 

 

 

 

 

 

 

AC

Флаг

контроля

18

Предназначен

для

контроля

выравнивания

 

 

прерывания

 

 

при обращениях к памяти. Используется

 

 

(Alignment Check)

 

совместно с битом AM в системном

 

 

 

 

 

 

регистре CR0. К примеру, микропроцессор

 

 

 

 

 

 

Pentium разрешает размещать команды и

 

 

 

 

 

 

данные с любого адреса. Если этот флаг

 

 

 

 

 

 

установлен, то при обращении к

 

 

 

 

 

 

невыровненному

операнду

будет

 

 

 

 

 

 

вызываться исключение.

 

 

 

 

 

 

 

 

 

 

VIF

Флаг

виртуального

19

Является виртуальным подобием флага IF и

 

 

прерывания

(Virtual

 

используется совместно с флагом VIP в

 

 

interrupt flag)

 

 

защищенном режиме (только для Pentium и

 

 

 

 

 

 

выше)

 

 

 

 

 

 

 

 

 

 

 

 

 

VIP

Ожидание

 

20

Указывает процессору, что произошло

 

 

виртуального

 

 

аппаратное прерывание. Флаги VIF и VIP

 

 

прерывания

(Virtual

 

используются

совместно в

многозадачных

 

 

interrupt pending flag)

 

средах для того, чтобы каждая задача имела

 

 

 

 

 

 

собственный виртуальный образ

флага IF

 

 

 

 

 

 

(только для Pentium и выше)

 

 

 

 

 

 

 

 

 

 

ID

Флаг

доступности

21

Служит для проверки доступности команды

 

 

команды

 

 

CPUID. Если в программе можно

 

 

идентификации

 

установить и сбросить флаг ID, то данный

 

 

(Identification flag)

 

процессор

поддерживает команду CPUID,

 

 

 

 

 

 

предоставляющую

 

программисту

 

 

 

 

 

 

информацию о продавце, модели и

 

 

 

 

 

 

поколении данного процессора (только для

 

 

 

 

 

 

Pentium и выше)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1.5.2.2.Системные регистры

Эти регистры используются для обеспечения работы защищенного режима микропроцессора, поэтому редко используются программистами (рис. 1.8). К системным регистрам относят: четыре регистра системных адресов (GDTR, IDTR,

http://www.sklyaroff.ru

21

TR, LDTR), пять регистров управления (CR0 – CR4) и восемь регистров отладки

(DR0 – DR7).

Рис. 1.8. Системные регистры

1.5.2.3. Регистры FPU и MMX

Регистры FPU (Floating Point Unit — блок чисел с плавающей запятой) предназначены для ускорения операций с числами с плавающей запятой (рис. 1.9). В первых поколениях процессоров эти регистры располагались в отдельной микросхеме, которая называлась сопроцессор на материнской плате. Для соответствующего поколения процессора был свой сопроцессор: 8087, 80287, 80387, 80487. Начиная с процессора 80486DX, сопроцессор располагается на одном кристалле с центральным процессором. В разных поколениях процессоров сопроцессор, называли, по-разному FPU или NPX (Numeric Processor eXtention —

числовое расширение процессора), однако первое название получило наибольшее распространение.

В блок FPU входят пять вспомогательных регистров:

регистр состояния SWR (Status Word Register)

регистр управления CWR (Control Word Register)

регистр тегов TWR (Tags Word Register)

регистр-указатель команд IPR (Instruction Point Register)

регистр-указатель данных DPR (Data Point Register)

http://www.sklyaroff.ru

22

Регистры MMX (MultiMedia eXtensions — мультимедийные расширения) появились в пятом поколении процессоров Intel (рис. 1.9). MMX ускоряют работу с мультимедийными приложениями. Это достигается за счет одновременной обработки нескольких элементов данных за одну инструкцию — так называемая технология SIMD (Single Instruction — Multiple Data).

Рис. 1.9. Регистры FPU и MMX

Регистры MMX и FPU/NPX являются одними и теми же регистрами сопроцессора, просто в программе при необходимости программист явно указывает, желает он использовать эти регистры для работы с мультимедийными приложениями (MMX) или для работы с числами с плавающей запятой (FPU/NPX).

1.5.2.4. Регистры XMM (расширение SSE/SSE2)

Впервые расширение SSE (Streaming SIMD Extensions — потоковые SIMD-

расширения) появились в процессоре Pentium III. Расширение предназначено для ускорения работы с 2D/3D, видео-, аудио- и другими видами потоковых данных. Только в отличие от MMX, которое ограничивается целочисленной арифметикой и логикой, расширение SSE работает с числами с плавающей точкой. Расширение вводит 8 новых независимых 128-битных регистров данных: XMM0-XMM7 и регистр состояния/управления MXCSR (рис. 1.10).