Обзор регистров процессора. Регистры внешних устройств.
В программах на языке ассемблера регистры используются очень интенсивно. Большинство из них имеет определенное функциональное назначение. Как показано выше, программная модель микропроцессора имеет несколько групп регистров, доступных для использования в программах. С точки зрения программиста, их можно разделить на две части:
· пользовательские регистры, к которым относятся:
o регистры общего назначения eax/ax/ah/al, ebx/bx/bh/bl, edx/dx/dh/dl, ecx/cx/ch/cl, ebp/bp, esi/si, edi/di, esp/sp. Регистры этой группы используются для хранения данных и адресов;
o сегментные регистры cs, ds, ss, es, fs, gs. Регистры этой группы используются для хранения адресов сегментов в памяти;
o регистры сопроцессора st(0), st(1), st(2), st(3), st(4), st(5), st(6), st(7). Регистры этой группы предназначены для написания программ, использующих тип данных с плавающей точкой;
o регистры MMX-расширения с плавающей точкой xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7;
o регистры состояния и управления - это регистры, которые содержат информацию о состоянии микропроцессора, исполняемой программы и позволяют изменить это состояние:
o регистр флагов eflags/flags;
o регистр указатель команды eip/ip;
· системные регистры - это регистры для поддержания различных режимов работы, сервисных функций, а также регистры, специфичные для определенной модели микропроцессора.
Почему многие из этих регистров приведены с наклонной разделительной чертой? Нет, это не разные регистры - это части одного большого 32-разрядного регистра. Их можно использовать в программе как отдельные объекты. Зачем так сделано? Для обеспечения работоспособности программ, написанных для младших 16-разрядных моделей микропроцессоров фирмы Intel, начиная с i8086. Микропроцессоры i486 и Pentium имеют, в основном, 32-разрядные регистры. Их количество, за исключением сегментных регистров, такое же, как и у i8086, но размерность больше, что и отражено в их обозначениях, - они имеют приставку e (Extended).
Многие из приведенных регистров предназначены для работы с определенными вычислительными подсистемами микропроцессора: сопроцессором, MMX-расширениями. Поэтому их целесообразно рассматривать в соответствующем контексте. Так как первая часть книги посвящена вопросам программирования целочисленной подсистемы микропроцессора, то мы и начнем обсуждение с регистров, обеспечивающих ее функционирование. В дальнейшем при обсуждении новых вычислительных подсистем микропроцессора мы будем рассматривать и соответствующие регистры.