КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Регистр флагов FLAGSРис. 5.1. Регистры процессоров IA-32 В нижней части рис. 5.1. показаны еще два регистра — указатель команды, являющийся счетчиком команд и содержащий адрес следующей выполняемой команды программы, и регистр состояния, в котором хранятся флаги кодов условий (CF, ZF, SF, OF). Флаги информируют о результатах арифметических операций. Биты режима выполнения программы (IOPL, IF, TF) связаны с операциями ввода-вывода и прерываниями, о которых рассказывается в разделе 6. Регистры общего назначения процессоров семейства IA-32 совместимы с регистрами ранних 8- и 16-разрядных процессоров Intel. В этих процессорах на использование разных регистров в программах накладывались некоторые ограничения. О соответствии регистров процессоров IA-32 регистрам более ранних процессоров можно судить по рис. 5.2. Восемь регистров общего назначения разделены на три группы: регистры данных для хранения операндов, регистры-указатели и индексные регистры для хранения адресов и индексов, посредством которых определяется исполнительный адрес операнда в памяти.
Рис. 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-разрядный режим, для чего используется байт префикса команды.
|