x86 инструкции (они же asm команды)

Регистры архитектуры x86

Пользовательские регистры.

Пользовательские регистры называются так потому, что программист может использовать их при написании своих программ. К этим регистрам относятся:

Восемь 32-битных регистров, которые могут использоваться программистами для хранения данных и адресов (их еще называют регистрами общего назначения (РОН)):

eax/ax/ah/al; (Accumulator register) - аккумулятор.
ebx/bx/bh/bl; (Base register) - базовый регистр.
edx/dx/dh/dl; (Data register) - регистр данных.
ecx/cx/ch/cl; (Count register) - регистр-счетчик.
ebp/bp; (Base Pointer register) - регистр указателя базы кадра стека.
esi/si; (Source Index register) - индекс источника.
edi/di; (Destination Index register) - индекс приемника (получателя).
esp/sp. (Stack Pointer register) - регистр указателя стека.

Шесть регистров сегментов: cs, ds, ss, es, fs, gs;

Сегмент кода. Содержит команды программы. Для доступа к этому сегменту служит регистр cs (code segment register) - сегментный регистр кода. Он содержит адрес сегмента с машинными командами, к которому имеет доступ процессор (то есть эти команды загружаются в конвейер микропроцессора).

Сегмент данных. Содержит обрабатываемые программой данные. Для доступа к этому сегменту служит регистр ds (data segment register) - сегментный регистр данных, который хранит адрес сегмента данных текущей программы.

Сегмент стека. Этот сегмент представляет собой область памяти, называемую стеком. Работу со стеком микропроцессор организует по следующему принципу: последний записанный в эту область элемент выбирается первым. Для доступа к этому сегменту служит регистр ss (stack segment register) - сегментный регистр стека, содержащий адрес сегмента стека.

Дополнительный сегмент данных. Большинство машинных команд предполагают, что обрабатываемые ими данные расположены в сегменте данных, адрес которого находится в регистре ds.

Если программе недостаточно одного сегмента данных, то она имеет возможность использовать еще три дополнительных сегмента данных. Но в отличие от основного сегмента данных, адрес которого содержится в сегментном регистре ds, при использовании дополнительных сегментов данных их адреса требуется указывать явно с помощью специальных префиксов переопределения сегментов в команде. Адреса дополнительных сегментов данных должны содержаться в регистрах es, gs, fs (extension data segment registers).

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

Регистр флагов eflags/flags;
регистр указателя команды eip/ip.
регистры сопроцессора x87 и расширения MMX
регистры расширения XMM