Мова асемблер. Команди та основи асемблера

Команди (інструкції)

Синтаксис команд асемблера або інструкцій асемблера виглядає наступним чином:

<label>: <instruction operands> [;Comment]

Мітка (label:) обов’язково завершується двокрапкою і може розташовуватися в окремому рядку. Мітки використовуються для того, щоб посилатися на команди всередині програми.

Інструкції вказують операцію, яка повинна бути виконана. В асемблері операції представлені у вигляді буквених скорочень для полегшення розуміння. Інструкції також можуть називатися мнемокодами.

У ролі операндів команди можуть виступати:

  • регістри, звернення до яких відбувається по їх іменах;
  • константи;
  • адреси.

Детальніше про адреси

Адреса може передаватися кількома способами:

  • У вигляді імені змінної, яка в асемблері є синонімом адреси.
  • Якщо змінна є масивом, то звернення до елемента масиву відбувається через ім’я змінної і зміщення. Для цього існує 2 форми: [<ім’я> + <зсув>] <ім’я>[<зсув>]. Слід враховувати, що зсув – це не індекс у масиві, а розмір в байтах. Програмісту самому необхідно розуміти, на скільки потрібно зробити зсув в байтах, щоб отримати потрібний елемент масиву.
  • Можна використовувати регістри. Для звернення до пам’яті, в якій зберігається регістр, потрібно використовувати квадратні дужки: [ebx], [edi].
  • [] квадратні дужки допускають застосування складних виразів всередині себе для обчислення адреси: [esi + 2*eax].
  • В асемблері адреса передається через квадратні дужки. Зважаючи на те, що змінна є також адресою, вона може використовуватися як з квадратними дужками, так і без.

    Крім цього, в асемблер існують скорочення: r – для регістрів, m – для пам’яті і i – для операнда. Ці скорочення використовуються з числами 8, 16 і 32 для вказівки розміру операнда: r8, m16, i32 і т. д.

    add i8/i16/i32, m8/m16/m32 ;підсумовування операнда з коміркою пам’яті