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

Регистры общего назначения

Они называются ЕАХ, ЕВХ, ЕСХ и EDX (Аккумулятор, База, Счетчик и Данные). Кроме названий, они больше ничем другим не отличаются друг от друга (рис.5.2), поэтому рассмотрим только первый регистр – ЕАХ. Регистр ЕАХ может быть разделен на две части – 16-разрядный регистр АХ (который также присутствует в 80286) и верхние 16 битов, которые никак не называются.

В свою очередь, регистр АХ может быть разделен (не только в 80386, но и в 80286) на два 8-битных регистра – АН и AL. Таким образом обеспечивается совместимость 32-разрядных процессоров с системами команд 16- и 8-разрядных процессоров семейства х86. Если мы заносим в регистр ЕАХ значение 0x12345678, то регистр АХ будет содержать значение 0x5678 (0x56 в АН и 0x78 в AL), а значение 0x1234 будет помещено в верхнюю часть регистра ЕАХ.

«Младшие» регистры других регистров общего назначения называются по такому же принципу (рис.5.2): ЕВХ содержит ВХ, который, в свою очередь, содержит ВН и BL и т.д.

К регистрам общего назначения иногда относят и индексные регистры процессора – ESI, EDI и ЕВР (или SI, DI и ВР для 16-разрядных действий). Обычно эти регистры используются для адресации памяти: обращения к массивам, индексирования и т.д. Отсюда их имена: индекс источника (Source Index), индекс приемника (Destination Index), указатель базы (Base Pointer).

Хранить в них только адреса совсем необязательно: регистры ESI, EDI и ЕВР могут содержать произвольные данные. Эти регистры программно доступны, то есть их содержание может быть изменено программистом. Другие регистры лучше «руками не трогать». Регистры ESI, EDI и ЕВР существуют только в 16-разрядной и 32-разрядной версии.

Рис. 5.2. Регистры общего назначения, индексные и указательные

регистры процессоров семейства х86