Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Архитектура компьютеров / 5_Система команд.doc
Скачиваний:
68
Добавлен:
20.03.2015
Размер:
329.73 Кб
Скачать

Регистр флагов flags

Рис. 5.1. Регистры процессоров IA-32

В нижней части рис. 5.1. показаны еще два регистра — указатель команды, яв­ляющийся счетчиком команд и содержащий адрес следующей выполняемой ко­манды программы, и регистр состояния, в котором хранятся флаги кодов условий (CF, ZF, SF, OF). Флаги информируют о результатах арифметических операций. Биты режима выполнения программы (IOPL, IF, TF) связаны с операциями ввода-вывода и прерываниями, о которых рассказывается в разделе 6.

Регистры общего назначения процессоров семейства IA-32 совместимы с ре­гистрами ранних 8- и 16-разрядных процессоров Intel. В этих процессорах на ис­пользование разных регистров в программах накладывались некоторые ограни­чения. О соответствии регистров процессоров IA-32 регистрам более ранних процессоров можно судить по рис. 5.2. Восемь регистров общего назначения раз­делены на три группы: регистры данных для хранения операндов, регистры-ука­затели и индексные регистры для хранения адресов и индексов, посредством ко­торых определяется исполнительный адрес операнда в памяти.

Имя регистра общего

назначения

31 16

15 8

7 0

R0

EAX

AH

AL

Регистры данных

AX

R1

ECX

CH

CL

CX

R2

EDX

DH

DL

DX

R3

EBX

BH

BL

BX

R4

ESP

SP

Регистры-указатели

R5

EBP

BP

R6

ESI

SI

Индексные регистры

R7

EDI

DI

EIP

IP

Указатель команды

EFLAGS

FLAGS

Регистр состояния

Рис. 5.2. Соответствие регистров IA-32 регистрам более ранних процессоров Intel

В первых, 8-разрядных, процессорах Intel регистры данных назывались А, В, С и D. В более поздних 16-разрядных процессорах их стали называть АХ, ВХ, СХ и DX. Старший и младший байты каждого регистра идентифицируются суффик­сами Н и L. Например, два байта в регистре АХ называются АН и AL. В процессо­рах IA-32 для идентификации соответствующих «расширенных» 32-разрядных регистров используется префикс E: ЕАХ, ЕВХ, ЕСХ и EDX. Этот же префикс употребляется и с другими 32-разрядными регистрами, показанными на рис. 5.2 (они являются расширенными версиями соответствующих 16-разрядных регист­ров, использовавшихся в более ранних процессорах).

Все перечисленные наименования регистров до сих пор применяются в техни­ческой документации Intel и других описаниях процессоров этой корпорации. Старые наименования регистров сохранены потому, что Intel поддерживает об­ратную совместимость для всех своих процессоров. Это означает, что при кор­ректной установке состояния процессора программы на машинном языке, соз­данные для ранних 16-разрядных процессоров, будут нормально работать на со­временных процессорах IA-32 без каких-либо изменений. В программах на языке ассемблера для 16-разрядных процессоров мы будем использовать в именах реги­стров префикс E, поскольку это мнемоническое обозначение применяется в теку­щих версиях ассемблера процессоров IA-32. Для однобайтовых операндов, храня­щихся в младших разрядах 32-разрядных регистров процессора, используются обозначения AL, BL и т. д. Для команд процессора IA-32 можно динамически ус­тановить 32- или 16-разрядный режим, для чего используется байт префикса ко­манды.

Соседние файлы в папке Архитектура компьютеров