вторник, 21 сентября 2010 г.

ASM: Регистры.

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

EAX,EBX,ECX,EDX - 32х разрядные.
Каждый из них может быть поделен на 16ти разрядные AX и верхние 16 безымянных битов.
В свою очередь AX может быть разделен на 8ми битные регистры AH и AL. 



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

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

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

Регистры из этой группы используются при вычислении реального адреса (адреса, который будет передан на шину адреса).
Сегментные регистры только 16-разрядные. Названия этих регистров соответствуют выполняемым функциям: CS (Code Segment, сегмент кода) вместе с EIP (IP) определяют адрес памяти, откуда нужно прочитать следующую инструкцию; аналогично регистр SS (Stack
Segment, сегмент стека) в паре с ESP (SS:SP) указывают на вершину стека.
Сегментные регистры DS, ES, FS, и GS (Data, Extra, F и G сегменты) используются для адресации данных в памяти.

Регистры состояния и управления:

Регистр ESP (SP) — это указатель памяти, который указывает на вершину стека (х86-совместимые процессоры не имеют аппаратного стека).
Также программно не может быть изменен регистр EIP (IP, Instruction Pointer) — указатель команд.
Этот регистр указывает на инструкцию, которая будет выполнена следующей. Значение этого
регистра изменяется непосредственно контроллером процессора согласно инструкциям, полученным из памяти.
Регистр флагов (иногда его называют регистром
признаков) — EFLAGS. Он состоит из одноразрядных флагов, отображающих
в основном текущее состояние арифметико-логического устройства.

• Признак нуля ZF (Zero Flag) — 1, если результат предыдущей операции
равен нулю.
• Признак знака SF (Sign Flag) — 1, если результат предыдущей операции
отрицательный.
• Признак переполнения OF (Overflow Flag) — 1, если при выполнении
предыдущей операции произошло переполнение (overflow), то есть
результат операции больше, чем зарезервированная для него память.
• Признак переноса CF (Carry Flag) — 1, если бит был «перенесен» и стал
битом более высокого порядка .
• Признак прерывания IF (Interrupt Flag) — 1, если прерывания процессора
разрешены.
• Признак направления DF (Direction Flag) — используется для обработки
строк.

Комментариев нет:

Отправить комментарий

Примечание. Отправлять комментарии могут только участники этого блога.