Sadda.ru Ironetcart Андроид Ассемблер MASM32 Linux Все статьи Table of Contents


 

Регистры процессора IA32

  Макс Петров май 2013

      Процессоры IA32 (32-bit Intel Architecture) имеют набор высокоскоростных ячеек памяти, расположенных в непосредственной близости от ядра процессора, которые называют регистрами. Это 4 32-разрядных регистров общего назначения:
      EAX/AX/AH/AL - аккумулятор (Extended Accumulator eXtended),
      EBX/BX/BH/BL - база (Extended Base eXtended),
      ECX/CX/CH/CL - счетчик (Extended Counter eXtended),
      EDX/DX/DH/DL - данные (Extended Data eXtended),

индексные 32-разрядные регистры:
      ESI/SI - индекс источника (Extended Source Index),
      EDI/DI - индекс приемника (Extended Destination Index),

32-разрядные регистры-указатели:
      EBP/BP - указатель базы (Extended Base Pointer),
      ESP/SP - указатель стека (Extended Stack Pointer);
      EIP/IP - указатель команд (Extended Instruction Pointer);

шесть 16-разрядных сегментных регистров:
      CS - сегмент кода (Code Segment),
      DS - сегмент данных (Data Segment),
      SS - сегмент стека (Stack Segment),
      ES - дополнительный сегмент (E Segment),
      FS - дополнительный сегмент (F Segment),
      GS - дополнительный сегмент (G Segment);

32-разрядный регистр флагов:
      EFLAGS/FLAGS - флаги (Extended FLAGS).

      Кроме того, в процессоре IA32 присутствуют управляющие регистры CR0 ... CR4, регистры управления памятью GDTR, IDTR, LDTR, TR, регистры отладки DR0 ... DR7, регистры тестирования TR1 ... TR12.

      Во всех современных процессорах архитектуры IA32 присутствуют регистры SIMD-расширения (Single Instruction - Multiple Data): 64-битные регистры MMX-расширения MMX0 ... MMX7, 128-битные регистры SSE-расширения XMM0 ... XMM7.

      Присутствующая в обозначении части регистров дробная черта говорит о допустимых вариантах обращения к этим регистрам, что связано с задачей обеспечения совместимости команд 32-разрядного процессора с командами процессоров предшествующих поколений (16- и 8-разрядных). Например, программа может обращаться либо к 32-битному регистру EAX, либо к его младшему слову AX (эмуляция 16-разрядного процессора), либо к каждому байту младшего слова AH или AL (эмуляция 8-разрядного процессора). Коды операций с AX, AH и AL в 32-разрядном процессоре остались те же, что были в 16- или 8-разрядном процессоре.

регистр EAX

      Регистры общего назначения могут использоваться для выполнения арифметических операций (в них помещают операнды), для хранения адресов или указателей. В то же время, регистры общего назначения имеют определенную специализацию. Так, в регистр EAX процессор записывает результат арифметической или логической операции; регистр EBX применяется для хранения начального адреса некоторой последовательности данных в памяти; регистр ECX используется, как счетчик повторения в циклах; а в регистр EDX процессор записывает старшую часть результата операции, если эта часть не помещается в регистре EAX.

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

      Регистры EBP, ESP, EIP содержат, соответственно, указатель на базу кадра стека, указатель на вершину стека, указатель на следующую команду, которую предстоит выполнить процессору.

      Сегментные регистры содержат адреса сегмента кода, сегмента данных, сегмента стека (CS, DS, SS). В программе может быть организовано 3 добавочных сегмента данных, для задания их адресов используются регистры ES, FS, GS.

      Биты (флаги) регистра EFLAGS в зависимости от их значения (1 - флаг поднят, 0 - флаг опущен) несут информацию о состоянии процессора после выполнения операции и о ее результате.

     


Добавить комментарий

E-mail:
*


Контрольные цифры:



Ассемблер MASM32

      Простейшая программа на ассемблере (beeper)
      Переменные и типы данных ассемблера
      Регистры процессора IA32
      Консоль ввода-вывода
      API-функция CharToOem и строки ассемблера
      API-функция ReadConsoleInput
      API-функция PeekConsoleInput
      События консоли (таблица)
      Системы счисления, тэги ассемблера, перевод чисел
      Отрицательные числа
      Инкремент и декремент
      Деление (DIV, IDIV)
      VKDEBUG
      Макросы ассемблера
      Воспоминание об Альгамбре на системном динамике
      Командная строка
      Пузырьковая сортировка. Эстафета шариков
      Сортировка расческой
      Быстрая сортировка

     


© Max Petrov При использовании материалов ссылка на sadda.ru обязательна