Главная

Assembler


Assembler Intel регистры x86-32

8 регистров по 4 байта = 32 байта .

AX-регистр = 16 бит .(AH=8бит , AL=8бит)
EAX-регистр = 32 бит .
RAX-регистр = 64 бита .

Регистры делятся на пять категорий.

Регистры данных (Регистры общего назначения):

AX(x16) или EAX(x32) или RAX(x64): Аккумулятор .

Аккумулятор (регистр процессора) — регистр процессора, в котором сохраняются результаты выполнения арифметических и логических команд или команды ввода и вывода.
Кроме регистра-аккумулятора результаты работы команд могут сохраняться в регистрах общего назначения или в оперативной памяти.

Так, AH и AL каждый по одному байту, АХ - 2 байта (или word - слово), ЕАХ - 4 байта (или dword - двойное слово).
Эти регистры используются для операций с данными, такими, как сравнение, математические операции или запись данных в память.

АН в DOS программах используется как определитель, какой сервис будет использоваться при вызове INT.

BX(x16) или EBX(x32) или RBX(x64): регистр базы .

Базовый регистр в вычислениях адреса, часто указывает на начальный адрес (называемый базой) структуры в памяти.

CX(x16) или ECX(x32) или RCX(x64): регистр базы .

Счетчик циклов, определяет количество повторов некоторой оперции;

DX(x16) или EDX(x32) или RDX(x64): регистр базы .

Определение адреса ввода/вывода, так же может содержать данные, передаваемые для обработки в подпрограммы.

Регистровые указатели и индексные регистры:

SP(x16) или ESP(x32) или RSP(x64): Stack Pointer (Указатель стека) .

Всегда указывает на вершину стека, позволяет временно хранить адреса и иногда данные;

BP(x16) или EBP(x32) или RBP(x64): Base Pointer (Указатель базы).

Обычно адресует переменные, хранимые в стеке, облегчает доступ к параметрам (данным и адресам), переданным через стек..

SI(x16) или ESI(x32) или RSI(x64): Source Index (Индекс источника).

Является индексом источника и применяется для некоторых операций над строками (обычно связан с регистром DS);

DI(x16) или EDI(x32) или RDI(x64): Destination Index (Индекс приёмника) .

Является индексом назначения и применяется так же для строковых операций (обычно связан с регистром ES)..

Сегментные регистры:

CS(x16) или ECS(x32) или RCS(x64): Регистр сегмента кода.

Содержит начальный адрес сегмента кода. Этот адрес плюс значение смещения в командном указателе (IP) определяет адрес команды, которая должна быть выбрана для выполнения.

DS(x16) или EDS(x32) или RDS(x64): Регистр сегмента данных.

Содержит начальный адрес сегмента данных. Этот адрес плюс значение смещения, определенное в команде, указывают на конкретную ячейку в сегменте данных.

SS(x16) или ESS(x32) или RSS(x64): Регистр сегмента стека.

Содержит начальный адрес сегмента стека. ;

ES(x16) или EES(x32) или RES(x64): .

Некоторые операции над строками используют дополнительный сегментный регистр для управления адресацией памяти.
В этом случае этот регистр связан с индексным регистром DI.
Если необходимо использовать регистр ES, ассемблерная программа должна его инициализировать.



Полезные ссылки: