Регістри-індекси
Індексні блоки пам’яті потрібні для розширеної індексації. Крім того, вони беруть участь в роботі деяких арифметичних операцій і обробки байтових рядків – послідовності байт, які містять довільне значення. У assembler включено два регістри, які відповідають за індексування ESI і EDI. Опишемо їх:
- ESI (Source index) включає індекс джерела (місце, звідки беруться дані) і потрібен для частини дій над байтовими рядками;
- EDI (Destination index) потрібно для запису результатів обчислення. Також застосовується для частини строкових дій. Частково пов’язаний з регістром сегментів ES.
Сегментні регістри
Є першими блоками в пам’яті. Називаються поточними сегментами. Програмне забезпечення дозволяється розподіляти більш чотирьох блоків пам’яті. Однак при цьому обов’язково занести адреси блоків у комірки пам’яті між сегментними регістрами. Даний вид блоків пам’яті є строго специфічним, завдяки чому неможливо заповнювати їх окремим видом даних. Порядок блоків регістрів пам’яті може змінюватися. Зберігання сегментних регістрів здійснюється в довільному порядку у випадкових місцях пам’яті.
- Регістр коду CS в звичайному вигляді містить адресу початку сегменту коду програмного забезпечення (початку машинного представлення коду). Таким чином здійснюється перехід по командам за рахунок командного покажчика IP.
- Регістр даних містить адресу даних, які обробляє програма в момент початку запуску. Пересування за даними здійснюється за рахунок зміщення, яке записано в регістр EIP.
- Stack Segment (ESS) потрібен для збереження початку сегмента абстрактного типу даних.
- Extra segment – допоміжний регістр, що містить порожню область для запису даних під час деяких дій над байтовими рядками. Може містити інформацію, аналогічну регістра даних.