Регістри асемблера: види, призначення та особливості команд

Регістри-індекси

Індексні блоки пам’яті потрібні для розширеної індексації. Крім того, вони беруть участь в роботі деяких арифметичних операцій і обробки байтових рядків – послідовності байт, які містять довільне значення. У assembler включено два регістри, які відповідають за індексування ESI і EDI. Опишемо їх:

  • ESI (Source index) включає індекс джерела (місце, звідки беруться дані) і потрібен для частини дій над байтовими рядками;
  • EDI (Destination index) потрібно для запису результатів обчислення. Також застосовується для частини строкових дій. Частково пов’язаний з регістром сегментів ES.

Сегментні регістри

Є першими блоками в пам’яті. Називаються поточними сегментами. Програмне забезпечення дозволяється розподіляти більш чотирьох блоків пам’яті. Однак при цьому обов’язково занести адреси блоків у комірки пам’яті між сегментними регістрами. Даний вид блоків пам’яті є строго специфічним, завдяки чому неможливо заповнювати їх окремим видом даних. Порядок блоків регістрів пам’яті може змінюватися. Зберігання сегментних регістрів здійснюється в довільному порядку у випадкових місцях пам’яті.

  • Регістр коду CS в звичайному вигляді містить адресу початку сегменту коду програмного забезпечення (початку машинного представлення коду). Таким чином здійснюється перехід по командам за рахунок командного покажчика IP.
  • Регістр даних містить адресу даних, які обробляє програма в момент початку запуску. Пересування за даними здійснюється за рахунок зміщення, яке записано в регістр EIP.
  • Stack Segment (ESS) потрібен для збереження початку сегмента абстрактного типу даних.
  • Extra segment – допоміжний регістр, що містить порожню область для запису даних під час деяких дій над байтовими рядками. Може містити інформацію, аналогічну регістра даних.