Разбиваются на 16-битные и 8-битные регистры:
32 бит | 16 бит | 8 бит |
---|---|---|
EAX | AX | AH, AL |
EBX | BX | BH, BL |
ECX | CX | CH, CL |
EDX | DX | DH, DL |
“H” и “L” для 8-битных регистров означают “старший байт” и “младший байт”, соответственно.
EAX, AX, AH, AL - регистр-накопитель (accumulator). Используется для доступа к портам ввода-вывода, арифметики, прерываний, т.д.
EBX, BX, BH, BL - базовый (base) регистр. Используется как базовый указатель (?) для доступа к памяти, получает некоторые возвращаемые значения прерываний.
ECX, CX, CH, CL - регистр-счётчик (counter). Используется как счетчик щиклов и для (битовых?) сдвигов, получает некоторые значения прерываний.
EDX, DX, DH, DL - регистр данных (data). Используется для доступа к портам ввода-вывода, арифметики, некоторых вызовов прерываний.
Хранят сегментные адреса различных значений. Имеют только 16-битные варианты.
CS - хранит (адрес) сегмента кода исполняемой программы. Изменение этого значения может привести к зависанию компьютера.
DS - хранит (адрес) сегмента данных, используемых программой. Изменение этого значения может привести к неверным данным.
ES, FS, GS - дополнительные сегментные регистры для доступа по дальнему указателю (память видеокарты и т.п.).
SS - хранит сегмент стека, используемый программой. Иногда может иметь то же значение, что и DS. Изменение этого значения может привести к непредсказуемому результату, в основном связанному с данными.
Имеют специфические функции, связанные с указателями и индексацией.
ES:EDI, EDI, DI - регистр индекса назначения (destination index). Используется для работы со строками, копирования/записи массива памяти, а также для адресации дальних указателей (вместе с ES).
DS:ESI ESI SI - регистр индекса источника (source index). Используется для копирования строк и массива памяти.
SS:EBP EBP BP - регистр указателя базы стека (stack base pointer). Содержит базовый адрес стека.
SS:ESP ESP SP - регистр указателя стека (stack pointer). Содержит верхний адрес стека.
CS:EIP EIP IP - указатель индекса (index pointer). Содержит сдвиг следующей инструкции. Доступен только для чтения.
EFLAGS - регистр состояния процессора. Содержит информацию о текущем состоянии процессора. Изменяется множеством разных инструкций и используется для сравнения некоторых параметров, условных циклов и условных прыжков. Каждый бит содержит состояние конкретного параметра последней инструкции.
Бит | Обозначение | Описание |
---|---|---|
0 | CF | Carry flag |
2 | PF | Parity flag |
4 | AF | Auxiliary carry flag |
6 | ZF | Zero flag |
7 | SF | Sign flag |
8 | TF | Trap flag |
9 | IF | Interrupt enable flag |
10 | DF | Direction flag |
11 | OF | Overflow flag |
12-13 | IOPL | I/O Priviledge level |
14 | NT | Nested task flag |
16 | RF | Resume flag |
17 | VM | Virtual 8086 mode flag |
18 | AC | Alignment check flag (486+) |
19 | VIF | Virutal interrupt flag |
20 | VIP | Virtual interrupt pending flag |
21 | ID | ID flag |