Програмування: мова Ассемблера. Основи мови Ассемблера

Програмування: мова Ассемблера. Основи мови Ассемблера

Для того щоб машина могла виконати команди людини на апаратному рівні, необхідно задати певну послідовність дій мовою "нуликів і одиниць". Помічником у цій справі стане Ассемблер. Це утиліта, яка працює з перекладом команд на машинну мову. Однак написання програми - досить трудомісткий і складний процес. Ця мова не призначена для створення легких і простих дій. На даний момент будь-яка використовувана мова програмування (Ассемблер працює чудово) дозволяє написати спеціальні ефективні завдання, які сильно впливають на роботу апаратної частини. Основним призначенням є створення мікрокоманд і невеликих кодів. Ця мова дає більше можливостей, ніж, наприклад, Паскаль або С.

Короткий опис мов Ассемблера

Всі мови програмування поділяються за рівнями: низький і високий. Будь-яка з синтаксичної системи "сімейки" Ассемблера відрізняється тим, що об 'єднує відразу деякі достоїнства найбільш поширених і сучасних мов. З іншими їх ріднить і те, що повною мірою можна використовувати систему комп 'ютера.


Відмінною особливістю компілятора є простота у використанні. Цим він відрізняється від тих, які працюють лише з високими рівнями. Якщо взяти до уваги будь-яку таку мову програмування, Ассемблер функціонує вдвічі швидше і краще. Для того щоб написати в ньому легку програму, не знадобиться занадто багато часу.

Коротко про структуру мови

Якщо говорити в загальному про роботу і структуру функціонування мови, можна точно сказати, що її команди повністю відповідають командам процесора. Ассемблер використовує мнемокоди, найзручніші для запису.

На відміну від інших мов програмування, Ассемблер використовує замість адрес для запису комірок пам 'яті певні мітки. Вони з процесом виконання коду переводяться в так звані директиви. Це відносні адреси, які не впливають на роботу процесора (не переводяться в машинну мову), а необхідні для розпізнавання самим середовищем програмування.

Для кожної лінійки процесора існує своя система команд. При такому розкладі правильним буде будь-який процес, в тому числі і перекладений машинний код.

Мова Ассемблера має кілька синтаксисів, які будуть розглянуті в статті.

Плюси мови

Найбільш важливим і зручним пристосуванням мови Ассемблера стане те, що на ньому можна написати будь-яку програму для процесора, яка буде досить компактною. Якщо код виявляється величезним, то середовище програмування деякі процеси перенаправляє в оперативну пам 'ять. При цьому вони все виконують досить швидко і без збоїв, якщо звичайно, ними управляє кваліфікований програміст.


Драйвери, операційні системи, BIOS, компілятори, інтерпретатори тощо - це все програма мовою Ассемблера.

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

Мінуси мови

На жаль, програмістам-початківцям (і часто професіоналам) важко розібрати мову. Ассемблер вимагає докладного опису необхідної команди. Через те, що потрібно використовувати машинні команди, зростає ймовірність помилкових дій і складність виконання.

Для того щоб написати навіть найпростішу програму, програміст повинен бути кваліфікованим, а його рівень знань досить високим. Середній фахівець, на жаль, часто пише погані коди.

Якщо платформа, для якої створюється програма, оновлюється, то всі команди необхідно переписувати вручну - цього вимагає сама мова. Асемблер не підтримує функцію автоматичного регулювання працездатності процесів і заміну будь-яких елементів.

Команди мови

Як вже було сказано вище, для кожного процесора є свій набір команд. Найпростішими елементами, які розпізнаються будь-якими типами, є такі коди:

  • Пересилання даних здійснюється за допомогою mov тощо.
  • Команди, пов "язані з арифметикою: sub, imul та ін.
  • Побитові та логічні функції можна реалізувати за допомогою or, and тощо. Саме ці основи мови Ассемблера дозволяють йому бути схожим з іншими.
  • Для того щоб здійснити перехід від однієї команди до іншої, слід прописати такі оператори: djnz, cfsneq, cjne. Недосвідченому програмісту може здатися, що це просто набір букв, однак це неправильно.
  • In і out застосовуються, якщо виникла потреба вводу в порт (або виводу з нього).
  • До керуючих команд відносять int. Завдяки йому можна припинити виконання будь-яких процесів на користь основної дії.

Використання директив

Програмування мікроконтролерів мовою (Ассемблер це дозволяє і чудово справляється з функціонуванням) найнижчого рівня в більшості випадків закінчується вдало. Найкраще використовувати процесори з обмеженим ресурсом. Для 32-розрядної техніки ця мова підходить відмінно. Часто у кодах можна помітити директиви. Що ж це? І для чого використовується?


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

  • Всім відомі макроси.
  • Є також директиви, якими володіє вища мова. Ассемблер відмінно "зчитує" їх і виконує.
  • Функції керування та керування режимами компілятора.
  • Розпізнавання констант і змінних.
  • Регулювання роботи програм, які знаходяться в оперативній пам 'яті.

Походження назви

Завдяки чому отримала назву мова - "Ассемблер" "? Мова йде про транслятора і компілятора, які і проводять зашифровку даних. З англійської Assembler означає не що інше, як збирач. Програму не було зібрано вручну, було використано автоматичну структуру. Більш того, на даний момент вже у користувачів і фахівців стерлася різниця між термінами. Часто Ассемблером називають мови програмування, хоча це всього лише утиліта.

Через загальноприйняту збірну назву у деяких виникає помилкове рішення, що існує єдина мова низького рівня (або ж стандартні норми для нього). Щоб програміст зрозумів, про яку структуру йдеться, необхідно уточнювати, для якої платформи використовується та чи інша мова Ассемблера.

Макросредства

Мови Ассемблера, які створені відносно недавно, мають макросредства. Вони полегшують як написання, так і виконання програми. Завдяки їх наявності, транслятор виконує написаний код в рази швидше. При створенні умовного вибору можна написати величезний блок команд, а простіше скористатися макросредствами. Вони дозволять швидко перемикатися між діями, у разі виконання умови або невиконання.

При використанні директив макромови програміст отримує макроси Ассемблера. Іноді він може широко використовуватися, а іноді його функціональні особливості знижуються до однієї команди. Їх наявність в коді полегшує роботу з ним, робить його більш зрозумілим і наочним. Однак слід все одно бути уважним - у деяких випадках макроси, навпаки, погіршують ситуацію.